- Home
- Categorie
- Coding e Sistemistica
- PHP
- Un Guestbook un solo file con PHP
-
Un Guestbook un solo file con PHP
Buonasera,
sono riuscito a creare per un guestbook un unico file, diviso in tre parti (3 switch) INSERISCI I DATI NEL DATABASE(FILE HTML), ELABORA I DATI, LEGGI I DATI DEL DATABASE.
Ho seguito in pratica pari passo delle istruzioni trovate su internet, il problema sta nel fatto che nel mio modulo "inserisci i dati" ho il tasto INVIA (che è il submit) che prima funzionava perche' essendo tre diversi file, l'istruzione dell'html iniziale era <form name="moduloGuest" action="elabora_guest.php" method="post">. In pratica in un html avevo la form dove l'utente inseriva i suoi dati e una sua recensione, avevo un file elabora_guest in php che mi prendeva i dati e li scriveva in database, avevo un file in php che leggeva i dati dal database. Ora facendo un file unico non funziona più perche' non so cosa mettere, penso che il problema sia su cosa devo mettere nel campo ACTION. Clicco sul pulsante INVIA, che dovrebbe inviare i dati nel database, ma non succede nulla, e nel database non scrive nessun record. Cosi ho provato a sostituire con la stringa action="<?php echo $_SERVER['PHP_SELF']; ?>", ma quando do submit dal modulo html appare la notice Notice: Undefined index: azione in C:\Programmi\EasyPHP 2.0b1\www ETC ETC". Cosa posso fare per risolvere il problema?ho controllato nel databse e il record non viene proprio scritto...
Mi potete aiutare in merito?
grazie mille!
-
Allego anche il codice per farvi capire meglio:
[php]<?php
$connessione=mysql_connect............
$selezione_db=mysql_select_db.......................
?>
<HTML>
<HEAD>
<TITLE>Corso PHP</TITLE>
</HEAD>
<BODY>
<?php
switch($_GET['azione']){
case "inserisci":
?>
<form name="moduloGuest" action="elabora_guest.php(????)" method="post">
<table><tr> <td><strong> Indica cortesemente il tuo nome </strong></td> <td><input type="text" name="nome_utente" size="30" maxlength="40" value="XXX"></td> </tr> ETC ETC.... <tr> <td align="center" colspan="2"><input type="submit" value="Invia il messaggio!"></td> </tr>
</table>
</form>
<?php break; case "elabora": $inserimento=mysql_query("insert into ETC ETC... ?> <?php break; case "leggi": $lettura_risultati=mysql_query("select ETC ETC
if(mysql_num_rows($lettura_risultati)>0){
echo "<table>";
$flag_colore=0;
while($scatola_temporanea=mysql_fetch_array($lettura_risultati)){
$nome_utente=$scatola_temporanea['nome_utente'];
ETC ETC
echo "<tr>";
if($flag_colore==0){
echo "<td bgcolor="#FFFF00">";
$flag_colore=1;
}
else{
echo "<td bgcolor="#C0C0C0">";
$flag_colore=0;
}
echo "<strong>Utente:</strong> $nome_utente<br>ETC ETC<
echo "</tr>";
}
echo "</table>";
}
else{
echo "Non é stata inserita ancora nessuna recensione in questa sezione. Se hai piacere essere il primo, clicca nella scelta <a href="nrecensione.html">Nuova Recensione</a>";}
?>
<?php
break;
}
?>
</body>
</html>[/php]
-
Semplice :
method="post"
Nel form, cambia con method="get"...
quindi, modifica l'html del form cosi:form name="moduloGuest" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
-
ho provato ma purtroppo mi appare sempre la stessa segnalazione...non capisco cosa può essere...essendo alle prime armi...
-
Direi che è colpa del form..non è gestito bene..
Inseisci questa scritta dopo il tag form:<input type="hidden" value="<?php echo $_GET['azione']; ?>" name = "azione">
-
Il problema è presto risolto inserendo una input "hidden" nel form, e fare lo switch da php sul suo valore.
Oppure fare lo switch da php sul valore del nome che hai dato al pulsante "submit" che ti invia i dati da scrivere nel database.
La seconda soluzione ti fa risparmiare qualche riga di codice
-
Niente, ho provato in piu modi ma non riesco a capire cosa c'e' che non va...il manuale PHP ho provato a leggerlo nei punti che interessano a me ma ci vorrebbero guide pratiche e semplici per capire bene, e non è facile trovarle...
Ora ho introdotto le function per vedere se cambiava qualcosa, ma niente...
Reinserisco il codice:<?php
$connessione=mysql_connect(............
$selezione_db=mysql_select_db(....................
?>
<HTML>
<HEAD>
<TITLE>PHP</TITLE>
</HEAD>
<BODY>
<?php
function nrecensione(){
?>
<form name="moduloGuest" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table><tr> <td><strong> Indica cortesemente il tuo nome </strong></td> <td><input type="text" name="nome_utente" size="30" maxlength="40" value="XXX"></td> </tr>
ETC ETC.........
</table>
</form><?php
}
function elabora_guest(){
$inserimento=mysql_query("insert into recensioni (nome_utente, ..................................................... ;
echo "messaggio inviato con successo";}
?><?php
function read_guest(){
$lettura_risultati=mysql_query("select nome_utente, ......................... ;
if(mysql_num_rows($lettura_risultati)>0){
echo "<table>";
$flag_colore=0;
while($scatola_temporanea=mysql_fetch_array($lettura_risultati)){
$nome_utente=$scatola_temporanea['nome_utente'];
......................................;
echo "<tr>";
if($flag_colore==0){
echo "<td bgcolor="#FFFF00">";
$flag_colore=1;
}
else{
echo "<td bgcolor="#C0C0C0">";
$flag_colore=0;
}
echo "<strong>Utente:</strong> $nome_utente<br><br>................................................ ;
}
echo "</table>";
}
else{
echo "Non é stata inserita ancora nessuna recensione in questa sezione. Se hai piacere essere il primo, clicca nella scelta ....................................;
}
}switch($_REQUEST['azione']){
case "inserisci":
nrecensione();
break;
case "elabora":
elabora_guest();
break;
case "leggi":
read_guest();
break;
}
?>
</body>
</html>Inizio col richiamare //localhost/..........?azione=inserisci (usando easyPHP e inserendo nella cartella www il file unico, e lui mi fa vedere correttamente la form html, poi quando faccio INVIA MESSAGGIO (dove c'e' la submit) dovrebbe apparirmi la scritta MESSAGGIO INVIATO CON SUCCESSO, e invece mi dice Notice: Undefined index: azione in .................
Quel submit che io faccio dovrebbe richiamare il case "elabora" che ha la function elabora_guest che mi permette di inserire i dati nel database.
Non capisco che operazioni devo scrivere per riuscire a passarmi i valori nella function elabora_guest.....
Grazie mille per la vostra disponibilità...
-
buongiorno ragazzi,
potete darmi una mano?
grazie mille e buona giornata a tutti