Visualizzazione risultati 1 fino 5 di 5

Discussione: Reload sbagliato di un form

  1. #1
    Guest

    Predefinito Reload sbagliato di un form

    ciao gente.
    ho questo form invocato da un'altra pagina.
    vorrei che dopo aver riempito i campi, prelevandoli dal database, una volta eseguita la seconda parte dello script (quella di aggiornamento) nel form RI-apparissero le informazioni nei campi del form, come la prima volta che viene caricato.
    il fatto è che una volta aggiornati i campi nel databse, il form riappare VUOTO.

    Codice PHP:
    <?php
    $id
    = $_POST['id_gioc'];
    $sel = mysql_query("SELECT * FROM giocatori WHERE id_giocatore='$id'") or die(mysql_error());
    $row = mysql_fetch_array($sel);
    echo
    "<form id=\"add_gioc\" method=\"post\" action=mod_gioc.php?id=$id >
    <table border=\"1\" align=\"center\">
    <tr><td>:: Nome: </td><td><input type=\"text\" name=\"nome\" value="
    .$row['nome']."></td></tr>
    <tr><td>:: Cognome: </td><td><input type=\"text\" name=\"cognome\" value="
    .$row['cognome']."></td></tr>
    <tr><td>:: @email: </td><td><input type=\"text\" name=\"email\" value="
    .$row['email']."></td></tr>
    <tr><td valign=\"top\">:: Note: </td>
    <td><textarea name=\"note\">"
    .$row['note']."</textarea></td>
    </tr>
    <tr><td>:: Punti: </td><td><input type=\"text\" name=\"punti\" size=\"2\" value="
    .$row['punti']."></td></tr>
    <tr><td>:: Media Punti: </td><td><input type=\"text\" name=\"media\" size=\"2\" value="
    .$row['media']."></td></tr>
    <tr><td>:: Partite Giocate: </td><td><input type=\"text\" name=\"giocate\" size=\"2\" value="
    .$row['giocate']."></td></tr>
    <tr><td>:: </td><td><input type=\"submit\" name=\"submit\" value=\"Modifica/Aggiorna\"></td></tr>
    </table>
    </form>"
    ;
    if(isset(
    $_POST['submit']) && $_POST['submit'] == 'Modifica/Aggiorna'){
    $nome = $_POST['nome'];
    $cognome = $_POST['cognome'];
    $punti = $_POST['punti'];
    $email = $_POST['email'];
    $note = $_POST['note'];
    $media = $_POST['media'];
    $giocate = $_POST['giocate'];
    $id = $_GET['id'];
    $res = mysql_query("UPDATE giocatori SET nome='$nome', cognome='$cognome', punti='$punti', media='$media', giocate='$giocate', email='$email', note='$note'
    WHERE id_giocatore='
    $id'");
    if(!
    $res){
    die(
    mysql_error());
    }
    }
    ?>
    mi sapreste dire dove sbaglio?

    grazie.

  2. #2
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Hai dimenticato di connetterti al database.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  3. #3
    Guest

    Predefinito

    no.
    la connsessione al database è presente in una parte di codice che non ho riportato...

  4. #4
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Prova a scrivere il link della pagina.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  5. #5
    Guest

    Predefinito

    Il codice è un po' precario, perché basta che nelle note ci sia un apice (') o che il cognome abbia spazi per incasinare un po' sia la query che il display... comunque ok, per il momento meglio così, è molto più leggibile almeno comunque consiglio di renderlo più solido.

    Ma veniamo al problema fondamentale, cioè all'id:
    alla prima richiesta immagino un altro form di un'altra pagina richiami questo script passandogli id_gioc in post..
    ok ma dopo il submit... chi glielo ripassa??? nessuno
    quindi la SELECT la fa con id vuoto e ovviamente niente campi.

    Dunque basta che correggi aggiungendo un campo hidden con name="id_gioc" che permetta anche alla submit di modifica di proseguire a passare l'id necessario per la select.
    Cioè nel form aggiungi la riga:
    ...
    <input type=\"hidden\" name=\"id_gioc\" value=".$id.">
    ...

    Questo ovviamente può farti gestire meglio il passaggio dell'id ed evitare quella cosa poco guardabile del passaggio in querystring dell'id poi ripreso con il GET.. evitiamo mischietti di post e get..
    quindi uniforma il nome del parametro, usa sempre quello propagato tramite campo hidden e scegli dunque un nome unico o id o id_gioc.
    ciao

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •