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:

flameseeker

Utente Attivo
27 Nov 2013
699
0
0
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
Autore Titolo Forum Risposte Data
L Creare una forma geometrica Photoshop 1
W Creare link di una dato Classic ASP 0
MarcoGrazia Creare una password Snippet Javascript 0
L Creare una pagina pre-home WordPress 1
L creare oggetti da una classe tramite un form Javascript 0
R Bootstrap 4 - creare una finestra di testo responsive sopra un Carousel jQuery 1
T con oop creare un ciclo per una pagina dinamica html con php PHP 3
M [MySQL] CREARE UN LINK SU UN DETERMINATO CAMPO DI UNA TABELLA RISULTATO DI UNA QUERY SQL MySQL 3
V [WordPress] Creare una struttura di articoli da una struttura di cartelle WordPress 1
jonnino2004 Sito .it vale la pena creare una versione in inglese? SEO e Posizionamento 1
S [WordPress] Creare una select box con partita iva e codice fiscale in base a una logica. WordPress 0
Axis18 Creare una barra di avanzamento con $.ajax Ajax 7
B funzioni per creare file e inserirli dentro una certa cartella in php? PHP 1
utente è possibile creare una pagina php che copia interamente il contenuto di un'altra pagina ? PHP 10
M come creare un popup con CSS da una pagina esterna? jQuery 1
L [php e xml] per creare una galleria fotografica con diversi file xml PHP 0
deejayr Creare un link URL ad un pulsante di una pagina web. Javascript 4
P [PHP] come creare una chat PHP 24
S creare una tabella da codice PHP 4
Gabriele Visioli Come creare uno spoiler in una pagina o post WordPress 1
A Creare una fattura con dati di intestazione estratti da tabella MySQL 0
P [CERCO] esperto per creare una chat room seria Offerte e Richieste di Lavoro e/o Collaborazione 1
M creare una tabella dove inserire i dati del database Database 1
N Creare una web community Discussioni Varie 6
S PHP: creare un link in una pagina PHP 7
F mysqli creare una select con valori dal db PHP 4
R Creare una classifica con Access 2007 Database 1
G Creare una forma irregolare colorata e poi modellarla con photoshop. Photoshop 7
M Access-Query per creare una tabella con la data nel nome tabella MS Access 0
felino [CSS] Immagine, creare una striscia nell'angolo superiore della foto HTML e CSS 10
A Creare una classe espressione Java 1
R Creare una videochat a pagamento Offerte e Richieste di Lavoro e/o Collaborazione 2
gaia creare una tabella dall'unione di due tabelle MySQL 3
W Da dove si parte a creare una App?? Sviluppo app per Android 2
T vBulletin 3.8.x E' possibile creare una nuova pagina in PHP nel forum? CMS (Content Management System) 0
J Creare una classe view php PHP 0
felino [JS] Creare una variabile dinamicamente tramite Ciclo For Javascript 4
P Creare e animare una progess bar PHP 13
M creare una ListView non cliccabile Sviluppo app per Android 1
R creare una pagina su sito web HTML e CSS 2
S [risolto] Creare una mappa Google per ogni indirizzo Javascript 14
denisgligor ciao, vorrei creare una pagina personale per ogni utente con un dominio di terzo livello... si può ? PHP 0
A Creare una galleria foto senza refresh PHP 0
A Creare nuova casella di una tabella Javascript 4
A Creare una nuova cartella utente PHP 3
T creare una serie di combobox e text box e che salvano un file di text sul disco si può ? Visual Basic 1
8 Creare un figlio di una classe generica HTML e CSS 7
C Creare una form con pulsanti di scelta macro Visual Basic 1
C Creare una macro per inserimento appuntamenti .NET Framework 1
M Creare una Web radio Discussioni Varie 0

Discussioni simili