creare una lista di commenti in un database

MarcoMarco

Nuovo Utente
11 Ago 2014
1
0
0
Salve. Sto creando il mio sito, per ora in localhost, nel quale, sotto ogni articolo vorrei inserire la possibilità di lasciare dei commenti.
Ho provato un codice, il quale riporta correttamente un record in un database e mi restituisce una tabella incrementativa dei valori inseriti. Ma ci sono dei problemi:

- non essendoci una clausola IF nel codice, appena carico la pagina lo script, invia direttamente i dati. Se non ha dati mi trovo un record vuoto, altrimenti -al caricare di nuovo la pagina- prende i precedenti dati ripetendoli.
- la visualizzazione dei dati viene ripetuta per quanti record presenti, ma viene riportato esclusivamente solamente l'ultimo e moltiplicato per il numero dei record.
- mi vengono segnalati, prima del form: "Notice: Undefined index: messaggio in XXX on line 153" per le tre variabili
e dopo il form: "Notice: Undefined index: nome in XXX on line 251"

Ecco i due codici interi.

PHP:
               <?php
               
                     //Collegamento

                     $host= '127.0.0.1';
                     $user= 'root';
                     $password= '';
                     $database= 'sito web';
                     
                     $connessione = mysql_connect($host, $user, $password)
                     or die (mysql_error());
                     
                     mysql_select_db($database, $connessione)
                     or die (mysql_error());
                     
                     //query
                     $query = "select * from commenti";
                     $dbResult = mysql_query($query, $connessione);
                     
                     //valori
                     
                     $nome = $_REQUEST['nome'];
                     $sito = $_REQUEST['sito']; 
                     $messaggio = $_REQUEST['messaggio'];
                                         
                     //print
                     
                     print "<table> \n";
                     while ($line = mysql_fetch_array($dbResult, MYSQL_NUM))
                     {
                           
                                   print "\t<tr>\n";
                                   print "<td width=\"25%\">\n";                               
                                   print "<img height=\"54\" width=\"54\" class=\"avatar\" src=\"../../images/gravatar.png\" alt=\"\"> 
                                           <cite> 
                                           <strong><a class=\"author\" href=\"$sito\">$nome</a></strong><br> 
                                           <span class=\"comment-data\"></span> \n";
                                   print "</td> \n";
                     		           
                                   print "<td width=\"75%\">
                                          $messaggio 
                                          </td>";
                                   print "<t</tr>\n";
                                   
                     }
                     
                     print "</table> \n";
                            
                     //chiudo la connessione
                     mysql_close($connessione);      
                     
               ?>

PHP:
               <?php
               
                     //clausola iniziale, se son vuoti i campi nome, email e messaggio avvisa
                     


                     //Collegamento

                     $host= '127.0.0.1';
                     $user= 'root';
                     $password= '';
                     $database= 'sito web';
                     
                     $connessione = mysql_connect($host, $user, $password)
                     or die (mysql_error());
                     
                     mysql_select_db($database, $connessione)
                     or die (mysql_error());
                     
                     //Indico la riga di comando dell'inserimento
                     
                     $query = "insert into commenti " .
                              "(nome, email, sito, messaggio) " .                      
                                                            
                     "VALUES('" .
                     
                     $_REQUEST['nome'] . "','" .
                     $_REQUEST['email'] . "','" . 
                     $_REQUEST['sito'] . "','" . 
                     $_REQUEST['messaggio'] . 
                     
                     "')" ;                 

                     if (!mysql_query($query, $connessione))
                     {
                     print("Attenzione, impossibile inserire il record" . mysql_error());
                     }
                     else
                     {
                     print("Il record è stato inserito correttamente");
                     }
                                                            
                     //chiudo la connessione
                     
                     mysql_close($connessione);
                     
               ?>

Come posso risolvere la situazione, avete suggerimenti?
 
Ultima modifica di un moderatore:
Premetto che non ho ancora letto il codice che hai esposto, ma qualche suggerimento l'ho comunque.
Concettualmente puoi controllare un invio di dati in post in questo modo:
PHP:
if (!empty($_POST)) {
    // ho ricevuto qualcosa in post
}

Puoi controllare se delle variabili sono state definite in questo modo:
PHP:
if (isset($variabile)) {
    // ok la variabile esiste, presumibilmente potrei decidere di mandarla in output con echo
}


E in ultimo ma non meno importante mysql_* è un modulo deprecato in php e sarà in futuro rimossa come estensione.
Il mio suggerimento è di ricorrere al modulo mysqli le cui funzioni sono concettualmente identiche a quelle che già usi (cambia forse la disposizione di qualche parametro in alcune).

Ah, per la prossima volta ricorda che il forum permette di usare il tag
PHP:
 per formattare il codice come ho fatto io negli esempi qui ;)
 

Discussioni simili