- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problema con pagina di edit ( non aggiorna il db )
-
Problema con pagina di edit ( non aggiorna il db )
Buona sera dopo una lunga assenza sono tornato a visitare il forum, ho un problema con una pagina in php che dovrebbe permettermi di modificare il contenuto di una tabella, mi visualizza il messaggio che l'aggiornamento è andato a buon fine ma in realtà non è così, vi posto il codice
Pagina php con il form per l'update
<form action="edit_presentazione.php" method="post"> Titolo: <input type="text" name="presentazione_titolo" size="30"><br /> Testo:<br /><textarea name="presentazione_testo" id="presentazione_testo" cols="30" rows="10"></textarea><br /> <input name="id_presentazione" type="hidden" value="$id_presentazione" /> <br /><input type="submit" name="edit" id="edit" value="Save Changes"> </form>
edit_presentazione.php
<?php require_once("../config/connessione.php"); include "session.php"; //controlliamo l'invio dei dati if (isset($_POST['edit'])) { //raccogliamo i dati inviati tramite modulo $titolo = addslashes($_POST['presentazione_titolo']); $testo = addslashes($_POST['presentazione_testo']); $id = (int)$_POST['presentazione_id']; $update_presentazione= @mysql_query ("UPDATE $tabella_presentazione SET presentazione_titolo = '$titolo', presentazione_testo = '$testo' WHERE presentazione_id='$id'") or die (mysql_error()); //includiamo il file per la generazione del feed rss if ($result != false) { print "<p>Edittato</p>"; } } else print "<p>Non Modificato</p>"; //eseguiamo la query di aggiornamento ?>
Come detto la pagina stampa il messaggio di conferma, ma in realtà non aggiorna il conenuto del db e non visualizza nemmeno titolo e testo all'interno del form, e da ieri che nn trovo soluzione...
-
Come passi l'$id_presentazione alla pagina del form?
Mettiamo che la tua pagina si chiami modifica.php, dovresti contattarla così: modifica.php?id=123
e prima del form in modifica.php inserire un riga di php come questa:[php]$id_presentazione = $_GET['id'];[/php]
Inoltre nel tuo form, dove metti
[php]value="$id_presentazione"[/php]
dovresti metterlo in un echo
[php]value="<? echo "$id_presentazione"; ?>"[/php]
Ciao.
-
Ciao e grazie per aver risposto, l'id viene recuperato da un'altra pagina correttamente ora posto il codice completo delle 2 pagine
presentazione.php
<h1>Admin news</h1> <h2>Inserimento news</h2> <form action="adm_presentazione.php" method="post"> Titolo: <input type="text" name="presentazione_titolo" size="30"><br /> Testo:<br /><textarea name="presentazione_testo" id="presentazione_testo" cols="30" rows="10"></textarea><br /> <br /><input type="submit" name="submit" value="Inserisci\"> </form> <?php //lista delle news disponibili echo "<h2>Lista news</h2>\n"; //contiamo i record $conto = @mysql_query ("SELECT COUNT(*) FROM $tabella_presentazione") or die (mysql_error()); $tot = @mysql_fetch_array ($conto) or die (mysql_error()); $sommma = $tot['conta']; //stabiliamo una notifica da visualizzare //se i record sono pari a zero if ($sommma=='0') { echo "Nessuna news inserita."; }else{ //visualizziamo i banner se presenti $query = @mysql_query("SELECT * FROM $tabella_presentazione ORDER BY presentazione_id DESC") or die (mysql_error()); while($fetch = @mysql_fetch_array($query)) { $presentazione_id_list = stripslashes($fetch['presentazione_id']); $presentazione_titolo_list = stripslashes($fetch['presentazione_titolo']); $presentazione_testo_list = stripslashes($fetch['presentazione_testo']); //modifichiamo la data nel formato europeo dd mm yyyy echo "<h2>" .$presentazione_titolo_list. "</h2>"; echo "<h2>" .$presentazione_testo_list. "</h2>"; echo "<h2>" .$presentazione_data_list. "</h2>"; //link al file di modifica echo "<a href=\"mod_presentazione.php?id_presentazione=" .$presentazione_id_list. "\">Modifica</a>"; //link al file di cancellazione echo " :: <a href=\"delete.php?id_presentazione=" .$presentazione_id_list. "&action=del_presentazione\">Cancella</a><br /><br />"; } } //chiudiamo la connessione ?>
mod_presentazione.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US"> <head> </head> <body> <h1>Admin news</h1> <h2>Modifica della presentazione</h2> <form action="edit_presentazione.php" method="post"> Titolo: <input type="text" name="presentazione_titolo" size="30"><br /> Testo:<br /><textarea name="presentazione_testo" id="presentazione_testo" cols="30" rows="10"></textarea><br /> <input name="id" type="hidden" value="<?php echo"$presentazione_id_list";?>" /> <br /><input type="submit" name="edit" id="edit" value="Save Changes"> </form> </div> </div><!--Fine del div wrapper--> </body> </html>
Ho fatto i cambiamenti indicati ma non aggiorna ancola il contenuto del db
-
Ciao, ci sono degli errori nel codice della query update.
dove hai scritto:[PHP]
$update_presentazione= @mysql_query ("UPDATE $tabella_presentazione SET
presentazione_titolo = '$titolo',
presentazione_testo = '$testo'
WHERE presentazione_id='$id'") or die (mysql_error());
[/PHP]Correggi così:
[PHP]
$update_presentazione= mysql_query ("UPDATE tabella_presentazione SET
presentazione_titolo = '$titolo',
presentazione_testo = '$testo'
WHERE presentazione_id=$id") or die (mysql_error());
[/PHP]Togli la chiocciola dalla funzione mysql_query per vedere se da errori, poi davanti al nome della tabella (verifica che sia corretto) c'era il simbolo del dollaro, va tolto. Inoltre alla fine $id non va tra virgolette perchè è un campo numerico (verifica che sia un intero nel db).
-
Ciao l'uso del carattere $ è corretto perchè il nome della tabella reale è contenuto nella fariabile $tabella_presentazione, effettivamente la querry di update aveva un errore nella linea 4 quella che includeva il file sessione.php, quello è sistemato manca solo il form per l'edit della presentazione.
Che da questo errore
mysql_fetch_array() expects parameter 1 to be resource null given in **C:\xampp\htdocs\Sito_personale\amministrazione\mod_presentazione.php** on line **63** [code] Codice della pagina mod_presentazione ( dalla linea 62 alla 70 ) [code] <?php $id_presentazione=$_GET['presentazione_id']; // RECUPERA VARIABILE ID DA PAGINA PRECEDENTE $query=mysql_query("SELECT * FROM $tabella_presentazione where presentazione_id='".$id_presentazione["presentazione_id"]."'") or die(mysql_error())or die (mysql_error()); $row = mysql_fetch_array($result) or die(mysql_error()); ?> <div id="content"> <h1>Admin news</h1> <h2>Modifica della presentazione</h2> <form action="edit_presentazione.php" method="post"> Titolo: <input type="text" name="presentazione_titolo" size="30" <?php echo $row['presentazione_titolo']; ?><br /> Testo:<br /><textarea name="presentazione_testo" id="presentazione_testo" cols="30" rows="10"><?php echo $row['presentazione_tetso']; ?></textarea><br /> <input name="id" type="hidden" value="<?php echo $row['presentazione_id'];?>" /> <br /><input type="submit" name="edit" id="edit" value="Save Changes"> </form> </div>
-
Ok.
C'è un errore, il risultato estratto dalla query lo metti nella variabile $query ma poi il fetch_array lo fai su $result, mentre dovresti farlo su $query.Correggi così:
[PHP]
$result=mysql_query("SELECT * FROM $tabella_presentazione where presentazione_id='".$id_presentazione["presentazione_id"]."'") or die(mysql_error())or die (mysql_error());
$row = mysql_fetch_array($result) or die(mysql_error());
[/PHP]E poi l'ID presentazione vedo che lo metti tra virgolette, nel DB è un campo stringa?
-
Ciao sistemato ora nn c'è più l'errore ma non elabora l'update e non visualizza nel form il contenuto dei campi come titolo e testo relativi all'id passato come parametro...
Cmq l'id no non è una stringa
-
ok non essendo stringa la variabile ID va senza virgolette.
Non ti da nessun errore?Postami il codice che do un'occhiata