• User Newbie

    problemino su un piccolo cms di news

    Salve a tutti.
    Premetto che in php sono alle prime armi.
    Ho già cercato aiuto su un altro forum abbastanza conosciuto, ma non mi hanno aiutato molto....

    Ho creato un piccolo cms (e relativo db Mysql) per gestire news (data, titolo, testo, ecc.).

    Riesco a far visualizzare tutti i dati della news tranne il file allegato.
    Vorrei che il file caricato apparisse sulla pagina web come link allegato della notizia.
    Non so qual è la riga di comando da inserire in corrispondenza del link dell'allegato (v. dove indicato nella pagina view.php) per associare l'id della notizia al file caricato. Forse, occorre aggiungere qualcosa anche nello script upload.php... Grazie!!

    Di seguito riporto il contenuto del form d'inserimento (insert.php)
    del file che gestisce l'upload (upload.php)
    e quello della pagina web dove deve apparire il tutto (view.php)

    Grazie :bigsmile:

    1. Ho creato il form d'inserimento:

    -- Codice file insert.php

    <?
    include ("config.inc.php");
    include ("top_foot.inc.php");

    //intestazione
    top();
    ?>
    <form method="post" action="upload.php" enctype="multipart/form-data">
    Titolo:<br />
    <input type="text" size="40" name="titolo" />
    <br /><br />
    Data:<br />

    <select name="giorno">
    <?
    for ($i=1; $i<=31; $i++)
    echo "<option value="$i">$i</option>";
    ?>
    </select>

    <select name="mese">
    <option value="1">Gennaio</option>
    <option value="2">Febbraio</option>
    <option value="3">Marzo</option>
    <option value="4">Aprile</option>
    <option value="5">Maggio</option>
    <option value="6">Giugno</option>
    <option value="7">Luglio</option>
    <option value="8">Agosto</option>
    <option value="9">Settembre</option>
    <option value="10">Ottobre</option>
    <option value="11">Novembre</option>
    <option value="12">Dicembre</option>
    </select>

    <select name="anno">
    <option value="2001">2001</option>
    <option value="2002">2002</option>
    <option value="2003">2003</option>
    <option value="2004">2004</option>
    <option value="2005">2005</option>
    <option value="2003">2006</option>
    <option value="2004">2007</option>
    <option value="2004">2008</option>
    </select>
    <br /><br />

    Tematica:<br />
    <input type="text" size="40" name="tematica" />
    <br /><br />
    Autore:<br />
    <input type="text" size="40" name="autore" />
    <br /><br />
    E-mail:<br />
    <input type="text" size="40" name="mail" />
    <br /><br />
    Abstract:<br />
    <textarea cols="60" rows="40" name="abstract"></textarea><br />
    <br />
    Testo:<br />
    <textarea id="textarea1" name="testo" style="width:560px;height:200px;">
    </textarea><br />
    <br />
    <br /><br />
    Link:<br />
    <input type="text" size="40" name="link" />
    <br /><br />

    Allegato
    <label>Caricare il documento allegato</label><br />
    <input type="file" name="fdc" size="50">

    <br />
    <br />
    Password:<br />
    <input type="password" size="40" name="pass" />
    <br /><br />
    <input type="submit" name="upload" value="Upload">
    </form>

    <?
    // chiusura pagina
    foot();
    ?>

    1. ecco il file upload.php

    <?
    include("top_foot.inc.php");
    include("config.inc.php");
    top();

    if ($pass != $pass): echo "Password errata";

    $tematica=$_REQUEST['tematica'];
    $titolo=$_REQUEST['titolo'];
    $autore=$_REQUEST['autore'];
    $mail=$_REQUEST['mail'];
    $abstract=$_REQUEST['abstract'];
    $testo=$_REQUEST['testo'];
    $pass=$_REQUEST['pass'];
    $giorno=$_REQUEST['giorno'];
    $mese=$_REQUEST['mese'];

    $link=$_REQUEST['link'];
    $allegato=$_REQUEST['allegato'];
    $lingua=$_REQUEST['lingua'];

    elseif (trim($titolo) == "" OR trim($testo) == ""):
    echo "I campi Titolo e Testo devono essere riempiti!";

    else :
    $tematica = addslashes(stripslashes($tematica));
    $titolo = addslashes(stripslashes($titolo));
    $autore = addslashes(stripslashes($autore));
    $mail = addslashes(stripslashes($mail));
    $abstract = addslashes(stripslashes($abstract));

    $titolo = str_replace("<", "<", $titolo);
    $titolo = str_replace(">", ">", $titolo);
    $autore = str_replace("<", "<", $autore);
    $autore = str_replace(">", ">", $autore);

    $data = mktime("0", "0", "0", $mese, $giorno, $anno);

    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");

    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

    $query = "INSERT INTO news (data, tematica, autore, mail, titolo, abstract, testo, link) VALUES ('$data', '$tematica', '$autore', '$mail', '$titolo', '$abstract', '$testo', '$link')";

    if ($_POST["upload"] != "")
    {
    $percorso = "upload/";
    $fdc_temp = $_FILES["fdc"]["tmp_name"];
    $fdc_name = $_FILES["fdc"]["name"];
    if (move_uploaded_file($fdc_temp, $percorso . $fdc_name))
    {
    echo "Upoload eseguito con successo";
    }
    else
    {
    echo "Si è verificato un errore in fase di upoload";
    }
    }

    if (mysql_query($query, $db))
    echo "L'articolo è stato inserito correttamente";
    else
    echo "Errore durante l'inserimento";

    mysql_close($db);
    endif; // chiude la verifica della presenza dei dati
    foot();
    ?>

    1. pagina web in cui vorrei visualizzare tutti i dati della news, incluso il file inviato con l'upload: file view.php

    <table cellpadding="0" cellspacing="0" border="0">
    <tr>
    <td valign="top" width="757" height="100%" background="../images/7_back.jpg" style="background-repeat:no-repeat ">
    <!-- INIZIO DETTAGLIO NEWS -->
    <? include("../adminnews/include/top_foot.inc.php");
    include_once("../adminnews/include/config.inc.php");
    top();
    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    $id=$_GET['id'];
    $query = "SELECT data,tematica,titolo,autore,mail,testo,link FROM news WHERE id='$id'";
    $result = mysql_query($query, $db);
    $row = mysql_fetch_array($result);
    $data = date("j/n/y", $row[data]);

    ?>
    <div style="margin-left:35px; margin-top:25px " class="titoli">News ed Eventi</div>
    <div style="margin-left:35px; margin-top:20px" class="data">
    <?php echo "$data";?><br />
    </div>
    <div style="margin-left:35px; margin-top:20px" class="data">

    <?php echo "$row[tematica]";?>

    </div>
    <div style="margin-left:35px; margin-top:12px; margin-right:30px " class="dark">
    <h2>
    <?php echo "$row[titolo]";?>
    </h2>
    </div>
    <div style="margin-left:35px; margin-top:5px; margin-right:30px " class="green_bold">
    di:
    <?php
    if ($row[mail] != "")
    echo "<a href=mailto:$row[mail]> $row[autore]</a><br />";
    else
    echo "<b>$row[autore]</b>";
    ?>
    </div>
    <div style="margin-left:35px; margin-top:12px; margin-right:30px " class="main">
    <?php echo "$row[testo]";?>
    <br />
    <br />

    <br />
    <?php echo "<a href=QUALE CODICE VA INSERITO QUI?????????>Apri allegato</a><img src=../images/marcer.gif>";?>
    <br />
    <br />
    <?php echo "<a href=$row[link]>Visita il sito</a><img src=../images/marcer.gif>";?>
    </div>
    <div style="margin-left:35px; margin-top:30px " class="dark">
    <?php echo "<a href=all.php class=dark>Visualizza tutti gli articoli</a><img src=../images/marcer.gif>";
    mysql_close($db);
    foot();
    ?>
    </div>
    <!-- FINE DETTAGLIO NEWS -->

    </td>
    </tr>
    </table>


  • User Attivo

    Benvenuto sul forum
    [php]$query = "INSERT INTO news (data, tematica, autore, mail, titolo, abstract, testo, link) VALUES ('$data', '$tematica', '$autore', '$mail', '$titolo', '$abstract', '$testo', '$link')";[/php]Crea un campo della tabella dove salvi il nome del file (ti conviene cambiare il nome di ogni file uppato con uno casuale) e poi:

    [php]<?php echo "<a href=percorso_cartella_upload/$row[colonna_nome_file]>Apri allegato</a><img src=../images/marcer.gif>";?>[/php]

    ciao


  • User Newbie

    @Angelbit88 said:

    Benvenuto sul forum
    [php]$query = "INSERT INTO news (data, tematica, autore, mail, titolo, abstract, testo, link) VALUES ('$data', '$tematica', '$autore', '$mail', '$titolo', '$abstract', '$testo', '$link')";[/php]Crea un campo della tabella dove salvi il nome del file (ti conviene cambiare il nome di ogni file uppato con uno casuale) e poi:

    [php]<?php echo "<a href=percorso_cartella_upload/$row[colonna_nome_file]>Apri allegato</a><img src=../images/marcer.gif>";?>[/php]ciao

    grazie ma purtroppo pur seguendo alla lettera (creato il nome campo del file allegato (fdc_name) e aggiunto codice (vedi sotto punto 1) 2) e 3)) non funziona lo stesso: ora come link dell'allegato appare solo la directory dove è stato caricato il file tramite upload, ma del nome file nessuna traccia inoltre se lo clicco mi dice pure:

    Forbidden

    You don't have permission to access /adminnews/include/upload/ on this server.


    1. file upload.php

    <?
    include("top_foot.inc.php");
    include("config.inc.php");
    top();

    if ($pass != $pass): echo "Password errata";

    $tematica=$_REQUEST['tematica'];
    $titolo=$_REQUEST['titolo'];
    $autore=$_REQUEST['autore'];
    $mail=$_REQUEST['mail'];
    $abstract=$_REQUEST['abstract'];
    $testo=$_REQUEST['testo'];
    $pass=$_REQUEST['pass'];
    $giorno=$_REQUEST['giorno'];
    $mese=$_REQUEST['mese'];
    $link=$_REQUEST['link'];
    $allegato=$_REQUEST['allegato'];
    $lingua=$_REQUEST['lingua'];

    $fdc_name=$_REQUEST['fdc_name'];

    elseif (trim($titolo) == "" OR trim($testo) == ""):
    echo "I campi Titolo e Testo devono essere riempiti!";

    else :
    $tematica = addslashes(stripslashes($tematica));
    $titolo = addslashes(stripslashes($titolo));
    $autore = addslashes(stripslashes($autore));
    $mail = addslashes(stripslashes($mail));
    $abstract = addslashes(stripslashes($abstract));

    $titolo = str_replace("<", "<", $titolo);
    $titolo = str_replace(">", ">", $titolo);
    $autore = str_replace("<", "<", $autore);
    $autore = str_replace(">", ">", $autore);

    $data = mktime("0", "0", "0", $mese, $giorno, $anno);

    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");

    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

    $query = "INSERT INTO news (data, tematica, autore, mail, titolo, abstract, testo, link, fdc_name) VALUES ('$data', '$tematica', '$autore', '$mail', '$titolo', '$abstract', '$testo', '$link', '$fdc_name')";

    if ($_POST["upload"] != "")
    {
    $percorso = "upload/";
    $fdc_temp = $_FILES["fdc"]["tmp_name"];
    $fdc_name = $_FILES["fdc"]["name"];
    if (move_uploaded_file($fdc_temp, $percorso . $fdc_name))
    {
    echo "Upoload eseguito con successo";
    }
    else
    {
    echo "Si è verificato un errore in fase di upoload";
    }
    }

    if (mysql_query($query, $db))
    echo "L'articolo è stato inserito correttamente";
    else
    echo "Errore durante l'inserimento";

    mysql_close($db);
    endif; // chiude la verifica della presenza dei dati
    foot();
    ?>


    1. file insert.php

    <?
    include ("config.inc.php");
    include ("top_foot.inc.php");

    //intestazione
    top();
    ?>
    <form method="post" action="upload.php" enctype="multipart/form-data">
    Titolo:<br />
    <input type="text" size="40" name="titolo" />
    <br /><br />
    Data:<br />

    <select name="giorno">
    <?
    for ($i=1; $i<=31; $i++)
    echo "<option value="$i">$i</option>";
    ?>
    </select>

    <select name="mese">
    <option value="1">Gennaio</option>
    <option value="2">Febbraio</option>
    <option value="3">Marzo</option>
    <option value="4">Aprile</option>
    <option value="5">Maggio</option>
    <option value="6">Giugno</option>
    <option value="7">Luglio</option>
    <option value="8">Agosto</option>
    <option value="9">Settembre</option>
    <option value="10">Ottobre</option>
    <option value="11">Novembre</option>
    <option value="12">Dicembre</option>
    </select>

    <select name="anno">
    <option value="2001">2001</option>
    <option value="2002">2002</option>
    <option value="2003">2003</option>
    <option value="2004">2004</option>
    <option value="2005">2005</option>
    <option value="2003">2006</option>
    <option value="2004">2007</option>
    <option value="2004">2008</option>
    </select>
    <br /><br />

    Tematica:<br />
    <input type="text" size="40" name="tematica" />
    <br /><br />
    Autore:<br />
    <input type="text" size="40" name="autore" />
    <br /><br />
    E-mail:<br />
    <input type="text" size="40" name="mail" />
    <br /><br />
    Abstract:<br />
    <textarea cols="60" rows="40" name="abstract"></textarea><br />
    <br />
    Testo:<br />

    <br />
    <script type="text/javascript">
    WYSIWYG.attach('textarea1');
    </script>
    <textarea id="textarea1" name="testo" style="width:560px;height:200px;">

    </textarea><br />
    <br />
    <br /><br />
    Link:<br />
    <input type="text" size="40" name="link" />
    <br /><br />
    Allegato
    <label>Caricare il documento allegato</label><br />
    <input type="file" name="fdc_name" size="50">

    <br />
    <br />
    Password:<br />
    <input type="password" size="40" name="pass" />
    <br /><br />
    <input type="submit" name="upload" value="Upload">
    </form>

    <?
    // chiusura pagina
    foot();
    ?>


    1. file view.php

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>pagina dettaglio news</title>
    <link href="style.css" rel="stylesheet" type="text/css">
    </head>
    <body topmargin="0" bottommargin="0" rightmargin="0" leftmargin="0">

    <table cellpadding="0" cellspacing="0" border="0">
    <tr>
    <td valign="top" width="757" height="100%" background="../images/7_back.jpg" style="background-repeat:no-repeat ">
    <!-- INIZIO DETTAGLIO NEWS -->
    <? include("../adminnews/include/top_foot.inc.php");
    include_once("../adminnews/include/config.inc.php");
    top();
    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    $id=$_GET['id'];
    $query = "SELECT data,tematica,titolo,autore,mail,testo,link,allega to FROM news WHERE id='$id'";
    $result = mysql_query($query, $db);
    $row = mysql_fetch_array($result);
    $data = date("j/n/y", $row[data]);
    ?>
    <div style="margin-left:35px; margin-top:25px " class="titoli">News ed Eventi</div>
    <div style="margin-left:35px; margin-top:20px" class="data">
    <?php echo "$data";?><br />
    </div>
    <div style="margin-left:35px; margin-top:20px" class="data">

    <?php echo "$row[tematica]";?>

    </div>
    <div style="margin-left:35px; margin-top:12px; margin-right:30px " class="dark">
    <h2>
    <?php echo "$row[titolo]";?>
    </h2>
    </div>
    <div style="margin-left:35px; margin-top:5px; margin-right:30px " class="green_bold">
    di:
    <?php
    if ($row[mail] != "")
    echo "<a href=mailto:$row[mail]> $row[autore]</a><br />";
    else
    echo "<b>$row[autore]</b>";
    ?>
    </div>
    <div style="margin-left:35px; margin-top:12px; margin-right:30px " class="main">
    <?php echo "$row[testo]";?>
    <br />
    <br />

    <br />
    <?php echo "<a href=../adminnews/include/upload/$row[fdc_name]>Apri allegato</a><img src=../images/marcer.gif>";?>

    <br />
    <br />
    <?php echo "<a href=$row[link]>Visita il sito</a><img src=../images/marcer.gif>";?>
    </div>
    <!-- FINE DETTAGLIO NEWS -->
    </td>
    </tr>
    </table>

    </body>
    </html>


  • User Attivo

    [PHP]$query = "SELECT data,tematica,titolo,autore,mail,testo,link,allegato FROM news WHERE id='$id'"[/PHP]
    ma in questo select non hai specificato il nome della colonna fdc_name 🙂

    grazie ma purtroppo pur seguendo alla lettera (creato il nome campo del file allegato (fdc_name) e aggiunto codice (vedi sotto punto 1) 2) e 3)) non funziona lo stesso: ora come link dell'allegato appare solo la directory dove è stato caricato il file tramite upload, ma del nome file nessuna traccia inoltre se lo clicco mi dice pure:

    Forbidden

    You don't have permission to access /adminnews/include/upload/ on this server.
    il messaggio che ti da riguarda il server web in cui non hai i permessi per accedere alla dir (cmq e probabile dato che hai i permessi di scrittura (il file lo carica no?) che il file lo apra


  • User Newbie

    @Angelbit88 said:

    [php]$query = "SELECT data,tematica,titolo,autore,mail,testo,link,allegato FROM news WHERE id='$id'"[/php]ma in questo select non hai specificato il nome della colonna fdc_name 🙂

    il messaggio che ti da riguarda il server web in cui non hai i permessi per accedere alla dir (cmq e probabile dato che hai i permessi di scrittura (il file lo carica no?) che il file lo apra

    grazie lo stesso. ho aggiunto quello che mi hai indicato ma continua a non funzionare: adesso butto tutto:x


  • User Attivo

    grazie lo stesso. ho aggiunto quello che mi hai indicato ma continua a non funzionare: adesso butto tutto:x
    Quanti script avrei dovuto buttare allora io all'inizio?:giggle:

    Controlla se il nome e salvato sul db... se non c'e' usa la variabile $_POST invece di $_REQUEST per sapere il nome del file

    :gthi: