- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problema query update
-
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.
-
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!)
-
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:
-
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
-
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.