seguendo la tua guida ho provato ad adattare il tuo script per fare l'update di un record per adattarlo alle mie esigenze ecco il codice <?php include("config.inc.php"); include("connect.inc.php");
if($_POST && isset($_GET['id'])) { aggiorna_record(); } elseif(isset($_GET['id'])) { mostra_record(); } else mostra_lista();
function mostra_lista() { // mostro un eventuale messaggio if(isset($_GET['msg'])) echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';
// preparo la query $query = "SELECT id, titolo FROM ricette";
// invio la query $result = mysql_query($query);
// controllo l'esito if (!$result) { die("Errore nella query $query: " . mysql_error()); }
echo ' <table border="1"> <tr> <th>Ricetta</th> <th> </th> </tr>';
while ($row = mysql_fetch_assoc($result)) { $nome = htmlspecialchars($row['titolo']);
// preparo il link per la modifica dei dati del record $link = $_SERVER['PHP_SELF'] . '?id=' . $row['id'];
echo "<tr> <td>$nome</td> <td><a href=\"$link\">modifica</a></td> </tr>"; }
echo '</table>';
// libero la memoria di PHP occupata dai record estratti con la SELECT mysql_free_result($result);
// chiudo la connessione a MySQL mysql_close(); }
function aggiorna_record() { // recupero i campi di tipo "stringa" $titolo = trim($_POST['titolo']); $regione = trim($_POST['regione']); $persone = trim($_POST['persone']); $tipopiatto = trim($_POST['tipopiatto']); $ingredienti = trim($_POST['ingredienti']); $preparazione = trim($_POST['preparazione']); $note = trim($_POST['note']);
// verifico se devo eliminare gli slash inseriti automaticamente da PHP if(get_magic_quotes_gpc()) { $titolo = stripslashes($titolo); $regione = stripslashes($regione); $persone = stripslashes($persone); $tipopiatto = stripslashes($tipopiatto); $ingredienti = stripslashes($ingredienti); $preparazione = stripslashes($preparazione); $note = stripslashes($note);
}
// effettuo l'escape dei caratteri speciali per inserirli all'interno della query $titolo = mysql_real_escape_string($titolo); $regione = mysql_real_escape_string($regione); $persone = mysql_real_escape_string($persone); $tipopiatto = mysql_real_escape_string($tipopiatto); $ingredienti = mysql_real_escape_string($ingredienti); $preparazione = mysql_real_escape_string($preparazione); $note = mysql_real_escape_string($note);
$id = intval($_GET['id']);
// verifico la presenza dei campi obbligatori // if(!$nome) // { // $messaggio = urlencode("Non hai inserito il nome"); // header("location: $_SERVER[PHP_SELF]?id=$id&msg=$messaggio"); // exit; // }
// preparo la query $query = "UPDATE ricette SET
titolo ='$titolo', regione ='$regione', persone ='$persone', tipopiatto ='$tipopiatto', ingredienti ='$ingredienti', preparazione ='$preparazione', note ='$note', WHERE id = $id";
// invio la query $result = mysql_query($query);
// controllo l'esito if (!$result) { die("Errore nella query $query: " . mysql_error()); }
// chiudo la connessione a MySQL mysql_close();
$messaggio = urlencode('Aggiornamento effettuato con successo'); header("location: $_SERVER[PHP_SELF]?msg=$messaggio"); }
function mostra_record() { // mostro un eventuale messaggio if(isset($_GET['msg'])) echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';
$id = intval($_GET['id']);
// preparo la query $query = "SELECT titolo, regione, persone, tipopiatto, ingredienti, preparazione, note FROM ricette WHERE id = $id";
// invio la query $result = mysql_query($query);
// controllo l'esito if (!$result) { die("Errore nella query $query: " . mysql_error()); }
// controllo che la SELECT abbia restituito un record // l'id passato via GET potrebbe essere stato manipolato if(mysql_num_rows($result) != 1) { die("l'ID passato via GET è errato"); }
list($titolo,$regione,$persone,$tipopiatto,$ingredienti,$preparazione,$note) = mysql_fetch_row($result);
$titolo = htmlspecialchars($titolo); $regione = htmlspecialchars($regione); $persone = htmlspecialchars($persone); $tipopiatto = htmlspecialchars($tipopiatto); $ingredienti = htmlspecialchars($ingredienti); $preparazione = htmlspecialchars($preparazione); $note = htmlspecialchars($note);
?> <form name="form_registrazione" method="post" action=""> <label>Titolo: <input type=text size=50 name=titolo value="<?echo $titolo?>" /><br> </label> <br> <label>Nazione/Regione: <input type=text size=30 name=regione value="<?echo $regione?>" /> </label> <label>Portata: <input type=text size=30 name=regione value="<?echo $tipopiatto?>" /> </label> <label>N. Persone: <input type=text size=2 name=persone value="<?echo $persone?>" /> </label> <br> <br> <label>Ingredienti:<br> <textarea cols=50 rows=20 name=ingredienti><?echo $ingredienti?></textarea> </label> <br> <br> <label>Preparazione:<br> <textarea cols=50 rows=20 name=preparazione ><?echo $preparazione?></textarea><br> </label> <br> <br> <label>Note:<br> <textarea cols=25 rows=10 name=note><?echo $note?></textarea> </label> <br> <p> <input name="invia" type="submit" value="Invia" /> </p> </form> <? } ?>
il record viene estratto correttamente ma quando do' invia per modificarlo ricevo questo errore
[shadow=red,left]Errore nella query UPDATE ricette SET titolo ='Risotto al cacao', regione ='Primi', persone ='4', tipopiatto ='', ingredienti ='
\r\n
\r\n-300 g di riso carnaroli
\r\n
\r\n-5 cucchiai di cacao amaro
\r\n
\r\n-4 cucchiai di panna da cucina
\r\n
\r\n-1/2 cipolla tritata
\r\n
\r\n-1 bicchiere di vino bianco secco
\r\n
\r\n-30 g di burro brodo di pollo
\r\n
\r\n-parmigiano grattugiato', preparazione ='Sciogliete in padella il burro e soffriggetevi la cipolla tritata. Quando il soffritto è dorato e profumato, mettete in pentola il riso e tostatelo a fiamma bassa. Quando i chicchi di riso sono trasparenti, bagnate con il vino bianco e fiammeggiate per farlo svaporare. Quando il riso è asciutto, aggiungete un mestolo di brodo e ripetete loperazione ogni volta che il riso si asciuga fino al completamento della cottura (circa 18 minuti). Quando il risotto è cotto, setacciate il cacao sulla panna e mescolate. Aggiungete il composto al risotto cotto e mescolate per distribuirlo in maniera omogenea. Spolverizzate a piacere con parmigiano e servite in tavola.', note ='nulla', WHERE id = 6: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id = 6' at line 10[/shadow]
Dove sbaglio?
tra l'altro nel campo regione mi porta il valore del campo tipopiatto ??? ??? e tipopiatto lo lascia vuoto ::)
Del tuo script ho escluso questo ???
// verifico la presenza dei campi obbligatori
// if(!$nome)
// {
// $messaggio = urlencode("Non hai inserito il nome");
// header("location: $_SERVER[PHP_SELF]?id=$id&msg=$messaggio");
// exit;
// }
Ciao e grazie