• User Attivo

    Problema query update

    Salve, avrei bisogno di un vostro aiuto, in pratica, ho creato una pagina per modificare dei valori presi da una tabella del db, ho fatto diverse prove e tutto funzionava, il problema è sorto dopo che ho iniziato a integrare il tutto nella pagina del sito definitiva, con relativi css ecc...Allo stato attuale riesco solo a ripescare i dati ma non ad aggiornarli ecco il codice:
    Query per ripescare i dati dal db
    [PHP] <?php
    // richiamo il file di configurazione
    include './include/config.php';
    // richiamo lo script responsabile della connessione a MySQL
    include './include/connect.php';

    $id = (int) $_GET['id'];
    $sql = "select id,nome,cognome,codice_cliente,stato,note_pratica from lista where id = $id;";
    $res = mysql_query($sql);
    $row = mysql_fetch_array($res);
    ?> [/PHP]
    [PHP]<form id="form1" name="form1" method="post" action="edit_record.php">
    <div align="center" class="titolo">Modifica</div>
    <div align="center"><label>Id:</label><input name="id" type="text" disabled class="5" value="<?php echo $row['id']?>" readonly="readonly" /></div>
    <div align="center"><label>Nome:</label><input name="nome" type="text" value="<?php echo $row['nome']?>" /></div>
    <div align="center"><label>Cognome:</label><input type="text" name="sett" value="<?php echo $row['cognome']?>"/></div>
    <div align="center"><label>Codice Cliente:</label><input type="text" name="codice" value="<?php echo $row['codice_cliente']?>"/></div>
    <div align="center"><label>Note Pratica:</label><textarea name="note_pratica"><?php echo $row['note_pratica']?></textarea></div>
    <div align="center"><label>Stato Pratica:</label>
    <select name="stato" id="stato">
    <option selected>Seleziona</option>
    <option value="acconto">Approvata</option>
    <option value="pagato">Respinta</option>
    </select></div>
    <div class="form-button" ><input type="submit" value="modifica" /></div>
    <input type="hidden" value="' . $_GET['id'] . '" name="id" /></form> [/PHP]

    Premendo sul bottone modifica invio il tutto alla pagina per la modifica con la seguente query:

    [PHP]<?php
    // richiamo il file di configurazione
    require './include/config.php';

    // richiamo lo script responsabile della connessione a MySQL
    require './include/connect.php';

    // preparo la query
    $sql = "UPDATE lista SET nome='$_POST[nome]', cognome='$_POST[cognome]', codice_cliente='$_POST[codice_cliente]', stato='$_POST[stato]', note_pratica='$_POST[note_pratica]' WHERE id='$_POST[id]'";

    $res = mysql_query($sql);

    header("Location: home.php");

    ?>[/PHP]

    Dove sbaglio?

    Grazie.


  • User Attivo

    A parte il fatto che non fai validazione dell'input (con htmlspecialchars nell'HTML e mysql_real_escape_string nel tuo SQL e questo è molto grave) nel file HTML dove c'è il form tu fai un
    [html]<input type="hidden" value="' . $_GET['id'] . '" name="id" />[/html]che dovrebbe piuttosto essere
    [html]<input type="hidden" value="<?php echo htmlspecialchars($_GET['id']) ?>" name="id" />[/html]come fai prima per gli altri campi (ovviamente con htmlspecialchars!)


  • User Attivo

    Mettendo un attimo da parte la questione htmlspecialchars e mysql_real_escape_string che approfondirò in seguito, ho fatto la prova con la modifica da te consigliata ma lo stesso non funziona :bho:


  • User Attivo

    Uhm, mi sembra strano: dovresti fare un po' di prove ad esempio osservando che cosa contiene l'array $_POST in edit_record.php, ad esempio con print_r


  • User Attivo

    risolto 😄 effettivamente tra le varie prove, avevo commesso degli errori, nella pagina con il form usato get mentre nella query usavo post, sistemando questo e tutto ritornato a funzionare.

    Grazie mille.