• User Attivo

    Come modificare un campo record?

    Ciao a tutti!

    Compilando un form di elenco clienti quando dai invia viene mostrato a monitor e memorizzato nel db. E se dovessi sbagliare il cognome ad esempio, come faccio per modificare l'errore?

    Leggendo un pò di post ho cercato di capire qualcosa ma invano :bho:
    Mi potete dare una mano per favore?

    [PHP]$id_cl=$_POST['id_cl'];
    $cognome=$_POST['cognome'];
    $nome=$_POST['nome'];
    $query=mysql_query("UPDATE inserimento_dati SET cognome = '$cognome', nome = '$nome' WHERE id_cl = '$id_cl'");
    $risultato = mysql_query($query) or die ("Query "$query" fallita ::: ".mysql_error());
    ?>
    <form method="post" action="inserimento_dati.php?id_cl=$id_cl">
    <input type="text" size="40" name="cognome" value ="<?php $cognome ?>" />
    <input type="submit" value="Invia" />
    </form>

    [/PHP]

    Grazie!


  • ModSenior

    Ciao Fabrizio23,

    Devi fare una query di update come hai fatto.
    Questo:

    
    <form method="post" action="inserimento_dati.php?id_cl=$id_cl\">
    
    

    Dovrebbe essere cosi:

    
    <form method="post" action="inserimento_dati.php">
    
    

    $id_cl sarebbe opportuno salvarlo in una variabile di sessione.


  • User Attivo

    Ti ringrazio! Proverò...

    Scusami l'ignoranza...pian piano si impara...:smile5: che devo e come devo fare per salvare la variabile $id_cl in una variabile di sessione?

    Grazie!


  • ModSenior

    La sintassi è la seguente:
    [php]
    $_SESSION['nome'] = 'valore';
    [/php]
    Dovresti mettere l'id nella fase di login.


  • User Attivo

    Ciao! Per modificare un record (ad esempio nome e congnome di un elenco) perchè non và questa?

    [php]$id=$_POST['id'];
    $cognome=$_POST['cognome'];
    $nome=$_POST['nome'];
    $query=mysql_query("UPDATE inserimento_dati SET cognome = '$cognome', nome = '$nome' WHERE id = '$id'");
    $risultato = mysql_query($query) or die ("Query "$query" fallita

    Errore di sintassi nella query SQL vicino a '1' linea 1

    Grazie!


  • ModSenior

    L'errore indica che $_POST['id'], $_POST['cognome'], $_POST['nome'] non sono dichiarati.


  • User Attivo

    Come le dichiaro?


  • ModSenior

    Quei dati non vengono inviati dal modulo, non c'è nessun input con quel name e quindi viene generato l'errore. Controlla di aver messo i name corretti nel tuo form.


  • User Attivo

    Ciao! Lo script ora è così, ma perchè non dovrebbe passarle? 😞

    [PHP]
    $id_cl=$_POST['id_cl'];
    $cognome=$_POST['cognome'];
    $nome=$_POST['nome'];
    $query=mysql_query("UPDATE inserimento_dati SET cognome = '$cognome', nome = '$nome' WHERE id_cl = '$id_cl'");
    $risultato = mysql_query($query) or die ("Query "$query" fallita ::: ".mysql_error());
    ?>

    <form action="modifica_dati_clienti.php" method="post" name="modifica_dati_clienti">
    <input type="hidden" name="id_cl"><br><br>
    COGNOME: <input type="text" name="cognome"><br><br>
    NOME: <input type="text" name="nome"><br><br>
    <input type="submit" value="Invia" />
    </form> [/PHP]

    Nel form il "name" l'ho messo...


  • User Attivo

    Inoltre, mi dà anche errore di sintassi nella query:

    Notice: Undefined index: id_cl in c:\programmi\easyphp1-8\www\modifica_dati_clienti.php on line 14

    Notice: Undefined index: cognome in c:\programmi\easyphp1-8\www\modifica_dati_clienti.php on line 15

    Notice: Undefined index: nome in c:\programmi\easyphp1-8\www\modifica_dati_clienti.php on line 16
    Query "1" fallita ::: Errore di sintassi nella query SQL vicino a '1' linea 1


  • ModSenior

    Ciao,

    Dovresti postarmi la pagina per intero, in questo modo è impossibile trovare il problema.


  • User Attivo

    Ciao, intendi postare la pagina "inserimento_dati"?
    Perchè la pagina "modifica_dati_clienti" è tutta lì...


  • ModSenior

    Postare la pagina di elaborazione completa.


  • User Attivo

    Ciao, questa è la pagina.php "inserimento_dati", anche se vedi scrittto "elenco_clienti" non preoccuparti perchè nell'originale va tutto ok.

    L'id_cl, il cognome e il nome li prendo da qui:

    [PHP]$query="INSERT INTO elenco_clienti (
    id_cl
    cognome,
    nome,
    sesso,
    data_di_nascita,
    citta_di_nascita,
    residenza,
    stato_civile,
    figli,
    telefono_abitazione,
    telefono_cellulare,
    utente_da_contattare,
    telefono_abitazione2,
    telefono_cellulare2,
    istruzione,
    professione,
    religione,
    data_registrazione)
    VALUES('" .
    addslashes ( $_POST['id_cl'] ) . "', '" .
    addslashes ( $_POST['cognome'] ) . "', '" .
    addslashes ( $_POST['nome'] ) . "', '" .
    addslashes ( $_POST['sesso'] ) . "', '" .
    addslashes ( $_POST['data_di_nascita'] ) . "', '" .
    addslashes ( $_POST['citta_di_nascita'] ) . "', '" .
    addslashes ( $_POST['residenza'] ) . "', '" .
    addslashes ( $_POST['stato_civile'] ) . "', '" .
    addslashes ( $_POST['figli'] ) . "', '" .
    addslashes ( $_POST['telefono_abitazione'] ) . "', '" .
    addslashes ( $_POST['telefono_cellulare'] ) . "', '" .
    addslashes ( $_POST['utente_da_contattare'] ) . "', '" .
    addslashes ( $_POST['telefono_abitazione2'] ) . "', '" .
    addslashes ( $_POST['telefono_cellulare2'] ) . "', '" .
    addslashes ( $_POST['istruzione'] ) . "', '" .
    addslashes ( $_POST['professione'] ) . "', '" .
    addslashes ( $_POST['religione'] ) . "', '" . )";

    $risultato = mysql_query( $query ) or die ( "query '$query' fallita

    " . mysql_error() );

    while ( $elenco_clienti = mysql_fetch_array( $risultato ) )

    {

    echo "<table>

    <style>
    table {
    border: solid 2px #000000;
    text-align: center;
    }
    td {
    solid 1px;
    color: Black;
    background: #F1EBAD;
    }
    </style>

           <tr>   
    
                <td><b>ID:</b>  " . stripslashes($elenco_clienti['id_cl']) . "</td></tr>   
                <td><b>COGNOME:</b>  " . stripslashes($elenco_clienti['cognome']) . "</td></tr>   
                <td><b>NOME:</b>  " . stripslashes($elenco_clienti['nome']) . "</td></tr>   
                <td><b>SESSO:</b>  " . stripslashes($elenco_clienti['sesso']) . "</td></tr>   
                <td><b>DATA DI NASCITA:</b>  " . stripslashes($elenco_clienti['data_di_nascita']) . "</td></tr>   
                <td><b>CITTA' DI NASCITA:</b>  " . stripslashes($elenco_clienti['citta_di_nascita']) . "</td></tr>   
                <td><b>RESIDENZA:</b>  " . stripslashes($elenco_clienti['residenza']) . "</td></tr> 
                <td><b>STATO CIVILE:</b>  " . stripslashes($elenco_clienti['stato_civile']) . "</td></tr>   
                <td><b>FIGLI:</b>  " . stripslashes($elenco_clienti['figli']) . "</td></tr>   
                <td><b>TELEFONO ABITAZIONE:</b>  " . stripslashes($elenco_clienti['telefono_abitazione']) . "</td></tr>   
                <td><b>TELEFONO CELLULARE:</b>  " . stripslashes($elenco_clienti['telefono_cellulare']) . "</td></tr>   
                <td><b>UTENTE DA CONTATTARE:</b>  " . stripslashes($elenco_clienti['utente_da_contattare']) . "</td></tr>   
                <td><b>TELEFONO ABITAZIONE:</b>  " . stripslashes($elenco_clienti['telefono_abitazione2']) . "</td></tr>   
                <td><b>TELEFONO CELLULARE:</b>  " . stripslashes($elenco_clienti['telefono_cellulare2']) . "</td></tr>   
                <td><b>ISTRUZIONE:</b>  " . stripslashes($elenco_clienti['istruzione']) . "</td></tr>   
                <td><b>PROFESSIONE:</b>  " . stripslashes($elenco_clienti['professione']) . "</td></tr>   
                <td><b>RELIGIONE:</b>  " . stripslashes($elenco_clienti['religione']) . "</td></tr>
    

    [/PHP]


  • ModSenior

    Ma questa pagina non ha nulla a che vedere con quella sopra...


  • User Attivo

    In che senso? :mmm:


  • ModSenior

    La pagina che hai appena postato si occupa dell'inserimento e non dell'aggiornamento del record. Fanno anche riferimento a 2 tabelle differenti.


  • User Attivo

    Per le tabelle differenti te l'ho detto, quello era uno script non aggiornato, dato che dietro di me avevo solo la penna, ma in quello originale coindidono, infatti funziona perfettamente. 🙂


  • User Attivo

    Ciao! Ecco la pagina modifica_dati_clienti.php intera 🙂
    Gli ho aggiunto l'isset.
    [php]<?php
    // Dati connessione al database
    $db_host = 'localhost'; // Host - solitamente localhost
    $db_utente = 'root'; // Nome utente del Database
    $db_password = ''; // Password del Database
    $db_nomedb = ''; // Nome del Database
    // Effettua la connessione al database
    $dbh=mysql_connect ($db_host, $db_utente, $db_password) or die ('Errore nella stringa di connessione al database: '.mysql_error());
    mysql_select_db($db_nomedb);

    if (isset($_POST['id_cl']) && !empty($_POST['id_cl'])) {
    $id=$_POST['id_cl'];
    $cognome=$_POST['cognome'];
    $nome=$_POST['nome'];
    $query=mysql_query("UPDATE inserimento_dati SET cognome = '$cognome', nome = '$nome' WHERE id_cl = '$id_cl'");
    $risultato = mysql_query($query) or die ("Query "$query" fallita ::: ".mysql_error());
    echo "update eseguito";
    }
    else {
    ?>
    <form method="post" action="modifica_dati_clienti.php">
    <input type="hidden" name="id_cl"><br />
    NOME <input type="text" name="nome"><br />
    COGNOME <input type="text" name="cognome"><br />
    <input type="submit" value="Invia" />
    </form>
    <?php } ?>
    [/php]

    Non mi dà nessun errore, nè warning nè notice, mi fà compilare il form e mi rimanda al form, come da richiesta se l'update non è stato eseguito.


  • ModSenior

    Perciò ora non ti da nessun errore ma non ti modifica i campi?
    Nella tabella c'è il record con quell'id?