• User

    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!


  • User

    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]


  • User Attivo

    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">


  • User

    ho provato ma purtroppo mi appare sempre la stessa segnalazione...non capisco cosa può essere...essendo alle prime armi...


  • User Attivo

    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">


  • User Attivo

    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 😛


  • User

    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à...


  • User

    buongiorno ragazzi,
    potete darmi una mano?
    grazie mille e buona giornata a tutti