- Home
- Categorie
- Coding e Sistemistica
- Coding
- non inserisce i dati nel db
- 
							
							
							
							
							come faccio a non far eliminare e aggiornare tutti i messaggi che scrive l'utente?perchè io vorrei che potesse agire solo su quello interessato...il codice: [PHP]<?php 
 //inizio la sessione utente
 session_start();
 //includo i parametri del db
 include("varDB.inc");
 //apro la connessione al db e lo seleziono
 $conn=mysql_connect("localhost","root","") or die;
 mysql_select_db("sito");//inizializzo la variabile messaggio 
 $messaggio="";?> <html> <!-- striscia in alto--> <head> <!-- css esterno --> <link rel="stylesheet" type="text/css" href="stile.css"> <title>modifica/cancella annunci </title> </head> <body> <!-- striscia in alto --> <table> <tr> <td> <p><font face="magneto" color="black" size="20px"><center><b><i>"LA BOTTEGA DELL'USATO"</i></b></center></p> </td> </tr> </table><div id="menu"> 
 <ul>
 <?php
 //controllo che ci sia una sessione utente, altrimenti "sessione scaduta"if(isset($_SESSION['utente'])){ echo"<li><font face='georgia' color='red'size='4px'>ciao " . $_SESSION['utente'] . "!</li>"; echo"<li><a href='login.php?azione=logout'>logout</a></li>"; echo"<li><a href='cancellato.php'>cancella account</a></li>"; echo"<br>"; echo"<br>"; }else{ $messaggio= "<font color='black' face='times new roman' size='4px'>sessione scaduta"; } ?> </ul> </div><?php //seleziono gli annunci inseriti del db e li mostro $risultato = mysql_query("SELECT * FROM annunci_cerco WHERE autore='".$_SESSION['utente']."'"); //mostro tutti gli annunci inseritiwhile ($riga = mysql_fetch_array($risultato)) { echo "<br>"; 
 echo"<br>";?> <table id="table1"> <tr> 
 <td><?php echo"autore"; ?></td>
 <td><?php echo "titolo" ?></td>
 <td> <?php echo "testo"; ?></td></tr> <tr> <td id="testo"><?php echo $riga['autore'];?></td> <td id="testo"><?php echo $riga['title']; ?></td> <td id="testo"> <?php echo $riga['body']; ?></td> </tr> <tr> <td id="testo"><?php echo"<a href='inserisci1.php'>modifica</a>";?></td> <td id="testo"><?php echo"<a href='cancella1.php'>cancella</a>"?></td> </tr></table> <?php }//chiudo la connessione al db 
 mysql_close();
 ?>
 </body></html> 
 [/PHP][PHP]<?php 
 //inizio la sessione utente
 session_start();
 //includo i parametri del db
 include("varDB.inc");
 //apro la connessione al db e lo seleziono
 $conn=mysql_connect("localhost","root","") or die;
 mysql_select_db("sito");//inizializzo la variabile messaggio 
 $messaggio="";?> <html> <!-- striscia in alto--> <head> <!-- css esterno --> <link rel="stylesheet" type="text/css" href="stile.css"> <title>cancella annunci </title> </head> <body> <!-- striscia in alto --> <table> <tr> <td> <p><font face="magneto" color="black" size="20px"><center><b><i>"LA BOTTEGA DELL'USATO"</i></b></center></p> </td> </tr> </table><div id="menu"> 
 <ul>
 <?php
 //controllo che ci sia una sessione utente, altrimenti "sessione scaduta"if(isset($_SESSION['utente'])){ echo"<li><font face='georgia' color='red'size='4px'>ciao " . $_SESSION['utente'] . "!</li>"; echo"<li><a href='login.php?azione=logout'>logout</a></li>"; echo"<li><a href='cancellato.php'>cancella account</a></li>"; echo"<br>"; echo"<br>"; }else{ $messaggio= "<font color='black' face='times new roman' size='4px'>sessione scaduta"; } ?> </ul> </div><?php if (isset($_SESSION['utente'])){ ?> <form method="POST" action="cancellato1.php"> 
 <p><font face="Times new roman" color="black" size="4px">vuoi cancellare il messaggio?</p>Si<input type="radio" name="canc" value="si"/> 
 No<input type="radio" name="canc" value="no"/>
 <br>
 <br>
 <input type="submit" value="invia" name="invia"/></form> <?php 
 }else{$messaggio="sessione scaduta"; 
 }mysql_close(); 
 ?>
 </body>
 </html>[/PHP][PHP]<?php 
 //inizio la sessione utente
 session_start();
 //includo i parametri del db
 include("varDB.inc");
 //apro la connessione al db e lo seleziono
 $conn=mysql_connect("localhost","root","") or die;
 mysql_select_db("sito");//inizializzo la variabile messaggio 
 $messaggio="";?> <html> <!-- striscia in alto--> <head> <!-- css esterno --> <link rel="stylesheet" type="text/css" href="stile.css"> <title>cancella annunci </title> </head> <body> <!-- striscia in alto --> <table> <tr> <td> <p><font face="magneto" color="black" size="20px"><center><b><i>"LA BOTTEGA DELL'USATO"</i></b></center></p> </td> </tr> </table><div id="menu"> 
 <ul>
 <?php
 //controllo che ci sia una sessione utente, altrimenti "sessione scaduta"if(isset($_SESSION['utente'])){ echo"<li><font face='georgia' color='red'size='4px'>ciao " . $_SESSION['utente'] . "!</li>"; echo"<li><a href='login.php?azione=logout'>logout</a></li>"; echo"<li><a href='cancellato.php'>cancella account</a></li>"; echo"<br>"; echo"<br>"; }else{ $messaggio= "<font color='black' face='times new roman' size='4px'>sessione scaduta"; } ?> </ul> </div><?php // recupero i dati della sessione utente in corso 
 $autore=$_SESSION['utente'];$c="cancella"; 
 //l'azione cancella prevede l'opzione si/no
 $c = isset($_GET['cancella']) ? $_GET['cancella'] : "";if ($_POST["canc"]=="si") { // se sceglie si //eseguo la query per la cancellazione dell'account $cancellannunci="DELETE FROM annunci_cerco WHERE autore='$autore'"; $res=mysql_query($cancellannunci) or die("fallita"); // in caso di problemi con la query echo"<font color='black' face='times new roman' size='4px'>dati cancellati"; header("refresh:2,URL=annunci.php");} 
 //altrimenti se sceglgo no i dati non vengono cancellati
 if($_POST["canc"]=="no"){
 echo"<font color='black' face='times new roman' size='4px'>i dati non sono stati cancellati";
 header("refresh:2,URL=annunci.php");}//chiudo la connessione con il db 
 mysql_close();?> </body> </html> 
 [/PHP]
 
- 
							
							
							
							
							Adesso il problema ce l'ho solo nella pagina di aggiornamento dei messaggi... Ho creato una pagina dove l'utente trova i link per cancellare e modificare, che rimandeerà ad una form per scrivere il messaggio modificato e una che dovrebbe modificare e inserire nel db la modifica, ma leggo solo la modifica di fallimento...mi aiutate??? [PHP] 
 <?php
 //inizio la sessione utente
 session_start();
 //includo i parametri del db
 include("varDB.inc");
 //apro la connessione al db e lo seleziono
 $conn=mysql_connect($host,$user,$password) or die;
 mysql_select_db($db);//inizializzo la variabile messaggio 
 $messaggio="";?> <html> <!-- striscia in alto--> <head> <!-- css esterno --> <link rel="stylesheet" type="text/css" href="stile.css"> <title>modifica/cancella annunci </title> </head> <body> <!-- striscia in alto --> <table> <tr> <td> <p><font face="magneto" color="black" size="20px"><center><b><i>"LA BOTTEGA DELL'USATO"</i></b></center></p> </td> </tr> </table><div id="menu"> 
 <ul>
 <?php
 //controllo che ci sia una sessione utente, altrimenti "sessione scaduta"if(isset($_SESSION['utente'])){ echo"<li><font face='georgia' color='red'size='4px'>ciao " . $_SESSION['utente'] . "!</li>"; echo"<li><a href='login.php?azione=logout'>logout</a></li>"; echo"<li><a href='cancellato.php'>cancella account</a></li>"; echo"<br>"; echo"<br>"; }else{ $messaggio= "<font color='black' face='times new roman' size='4px'>sessione scaduta"; } ?> </ul> </div><?php //seleziono gli annunci inseriti del db e li mostro $risultato = mysql_query("SELECT * FROM annunci_cerco WHERE autore='".$_SESSION['utente']."'"); //mostro tutti gli annunci inseritiwhile ($riga = mysql_fetch_array($risultato)) { echo "<br>"; 
 echo"<br>";?> <table id="table1"> <tr> 
 <td><?php echo"autore"; ?></td>
 <td><?php echo "titolo" ?></td>
 <td> <?php echo "testo"; ?></td></tr> <tr> <td id="testo"><?php echo $riga['autore'];?></td> <td id="testo"><?php echo $riga['title']; ?></td> <td id="testo"> <?php echo $riga['body']; ?></td> </tr><tr> 
 <?php $id= $riga['id']?>
 <td id="testo"><?php echo"<a href='modifica_annunci_1.php?annuncio=".$riga['id']."'>modifica</a>"?></td>
 <td id="testo"><?php echo"<a href='cancellato1.php?annuncio=".$riga['id']."'>cancella</a>"?></td>
 </tr>
 </table><?php }//chiudo la connessione al db 
 mysql_close();
 ?>
 </body></html> [/PHP] 
 [PHP]<?php 
 //inizio la sessione utente
 session_start();
 //includo i parametri del db
 include("varDB.inc");
 //apro la connessione al db e lo seleziono
 $conn=mysql_connect($host,$user,$password) or die;
 mysql_select_db($db);//inizializzo la variabile messaggio 
 $messaggio="";?> <html> <!-- striscia in alto--> <head> <!-- css esterno --> <link rel="stylesheet" type="text/css" href="stile.css"> <title>modifica annunci </title> </head> <body> <!-- striscia in alto --> <table> <tr> <td> <p><font face="magneto" color="black" size="20px"><center><b><i>"LA BOTTEGA DELL'USATO"</i></b></center></p> </td> </tr> </table><div id="menu"> 
 <ul>
 <?php
 //controllo che ci sia una sessione utente, altrimenti "sessione scaduta"if(isset($_SESSION['utente'])){ echo"<li><font face='georgia' color='red'size='4px'>ciao " . $_SESSION['utente'] . "!</li>"; echo"<li><a href='login.php?azione=logout'>logout</a></li>"; echo"<li><a href='cancellato.php'>cancella</a></li>"; echo"<br>"; echo"<br>"; }else{ $messaggio= "<font color='black' face='times new roman' size='4px'>sessione scaduta"; } ?> </ul> </div><?php $_GET['annuncio']; 
 $id_ann=$_GET['annuncio'];mysql_query("SELECT * FROM annunci_cerco WHERE id=".$_GET['annuncio']); ?> 
 <form method="POST" action="modifica_annunci_2.php">
 <p>modifica i tuoi annunci</p>Titolo <input type="text" name="title" value=""/><br> Testo <textarea name="body" cols="10" rows="10"></textarea> <input type="submit" name="invia" value="inserisci"/></form> <?php 
 mysql_close();?> </body> 
 </html>[/PHP] 
 [PHP]<?php
 //inizio la sessione utente
 session_start();
 //includo i parametri del db
 include("varDB.inc");
 //apro la connessione al db e lo seleziono
 $conn=mysql_connect($host,$user,$password) or die;
 mysql_select_db($db);//inizializzo la variabile messaggio 
 $messaggio="";?> <html> <!-- striscia in alto--> <head> <!-- css esterno --> <link rel="stylesheet" type="text/css" href="stile.css"> <title>modifica annunci </title> </head> <body> <!-- striscia in alto --> <table> <tr> <td> <p><font face="magneto" color="black" size="20px"><center><b><i>"LA BOTTEGA DELL'USATO"</i></b></center></p> </td> </tr> </table><div id="menu"> 
 <ul>
 <?php
 //controllo che ci sia una sessione utente, altrimenti "sessione scaduta"if(isset($_SESSION['utente'])){ echo"<li><font face='georgia' color='red'size='4px'>ciao " . $_SESSION['utente'] . "!</li>"; echo"<li><a href='login.php?azione=logout'>logout</a></li>"; echo"<li><a href='cancellato.php'>cancella</a></li>"; echo"<br>"; echo"<br>"; }else{ $messaggio= "<font color='black' face='times new roman' size='4px'>sessione scaduta"; } ?> </ul> </div><?php 
 $_GET['annuncio'];
 $id_ann=$_GET['annuncio'];
 $title=$_POST['title'];$body=$_POST['body']; $modificannunci="UPDATE annunci_cerco SET title='$title',body='$body' WHERE id=$id_ann"; 
 $res=mysql_query($modificannunci) or die("fallita");mysql_close();?> </body> 
 </html>
 [/PHP]
 
- 
							
							
							
							
							Invece di: 
 [php]
 mysql_query($modificannunci) or die("fallita");
 [/php]
 Metti:
 [php]
 mysql_query($modificannunci) or die("fallita".mysql_error());
 [/php]
 Cosi da visualizzare l'errore.
 
- 
							
							
							
							
							Notice: Undefined index: annuncio in C:\xampp\htdocs\prova\modifica_annunci_2.php on line 60 Notice: Undefined index: annuncio in C:\xampp\htdocs\prova\modifica_annunci_2.php on line 61 
 fallitaYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1Mi dice questo 
 
- 
							
							
							
							
							Non arrivano quelle variabili POST che tu utilizzi, ci sarà un altro nome impostato nel form. 
 
- 
							
							
							
							
							@Thedarkita said: Non arrivano quelle variabili POST che tu utilizzi, ci sarà un altro nome impostato nel form. Non riesco a modificare i dati...anche con le modifiche...ecco il codice modificato... [PHP]<?php 
 //inizio la sessione utente
 session_start();
 //includo i parametri del db
 include("varDB.inc");
 //apro la connessione al db e lo seleziono
 $conn=mysql_connect($host,$user,$password) or die;
 mysql_select_db($db);//inizializzo la variabile messaggio 
 $messaggio="";?> <html> <!-- striscia in alto--> <head> <!-- css esterno --> <link rel="stylesheet" type="text/css" href="stile.css"> <title>modifica annunci </title> </head> <body> <!-- striscia in alto --> <table> <tr> <td> <p><font face="magneto" color="black" size="20px"><center><b><i>"LA BOTTEGA DELL'USATO"</i></b></center></p> </td> </tr> </table><div id="menu"> 
 <ul>
 <?php
 //controllo che ci sia una sessione utente, altrimenti "sessione scaduta"if(isset($_SESSION['utente'])){ echo"<li><font face='georgia' color='red'size='4px'>ciao " . $_SESSION['utente'] . "!</li>"; echo"<li><a href='login.php?azione=logout'>logout</a></li>"; echo"<li><a href='cancellato.php'>cancella</a></li>"; echo"<br>"; echo"<br>"; }else{ $messaggio= "<font color='black' face='times new roman' size='4px'>sessione scaduta"; } ?> </ul> </div><?php $id_ann=$_GET['annuncio']; 
 $ris=mysql_query("SELECT * FROM annunci_cerco WHERE id=".$_GET['annuncio']);?> 
 <form method="POST" action="modifica_annunci_2.php"><?php echo $id_ann ?>
 <p>modifica i tuoi annunci</p>Titolo <input type="text" name="title" value=""/><br> Testo <textarea name="body" cols="10" rows="10"></textarea> <input type="submit" name="invia" value="inserisci"/></form> <?php 
 mysql_close();?> </body> 
 </html>
 [/PHP][PHP]<?php 
 //inizio la sessione utente
 session_start();
 //includo i parametri del db
 include("varDB.inc");
 //apro la connessione al db e lo seleziono
 $conn=mysql_connect($host,$user,$password) or die;
 mysql_select_db($db);//inizializzo la variabile messaggio 
 $messaggio="";?> <html> <!-- striscia in alto--> <head> <!-- css esterno --> <link rel="stylesheet" type="text/css" href="stile.css"> <title>modifica annunci </title> </head> <body> <!-- striscia in alto --> <table> <tr> <td> <p><font face="magneto" color="black" size="20px"><center><b><i>"LA BOTTEGA DELL'USATO"</i></b></center></p> </td> </tr> </table><div id="menu"> 
 <ul>
 <?php
 //controllo che ci sia una sessione utente, altrimenti "sessione scaduta"if(isset($_SESSION['utente'])){ echo"<li><font face='georgia' color='red'size='4px'>ciao " . $_SESSION['utente'] . "!</li>"; echo"<li><a href='login.php?azione=logout'>logout</a></li>"; echo"<li><a href='cancellato.php'>cancella</a></li>"; echo"<br>"; echo"<br>"; }else{ $messaggio= "<font color='black' face='times new roman' size='4px'>sessione scaduta"; } ?> </ul> </div><?php $id_ann=$_GET['id']; 
 $title=$_POST['title'];$body=$_POST['body']; if($title=="" ||$body==""){ 
 echo "<font color='black' face='times new roman' size='4px'>Non hai riempito i campi";$q="UPDATE annunci_cerco SET title='$title', body='$body' WHERE id=$id_ann";mysql_query($q); echo"modifica ok"; 
 }else{echo"impossibile modificare";} mysql_close();?> </body> 
 </html>
 [/PHP]
 
- 
							
							
							
							
							Ma che senso ha fare un controllo che i campi siano vuoti e fare l'update in quel caso? Non dovresti fare il contrario? 
 
- 
							
							
							
							
							Hai ragione, ma ero solo per leggere se la modifica era andata a buon fine...al posto di quello ho inserito... [PHP]$m=mysql_query("UPDATE annunci_cerco SET title='$title',body='$body' WHERE id=$id_ann"); 
 if($m){echo"modifica ok"; 
 }else{echo"impossibile modificare";}[/PHP] Però le modifiche non vanno a buon fine..perchè leggo impossibile modificare...come è possibile? 
 
- 
							
							
							
							
							La query genera un qualche errore, aggiungi mysql_error() per mostrarlo. 
 
- 
							
							
							
							
							@Thedarkita said: La query genera un qualche errore, aggiungi mysql_error() per mostrarlo. Mi da questo messaggio fallitaQuery was empty 
 
- 
							
							
							
							
							Devi fare in questo modo: 
 [php]
 $m=mysql_query("UPDATE annunci_cerco SET title='$title',body='$body' WHERE id=$id_ann") or die(mysql_error());
 if($m){echo"modifica ok"; 
 }else{echo"impossibile modificare";}[/php] 
 
- 
							
							
							
							
							ecco l'errore che mi da.. 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 '' at line 1 la seconda olta che ho provato mi dice sempre fallitaQuery was empty 
 
- 
							
							
							
							
							Avrai il carattere ' in una delle 3 variabili che passi alla query, devi usare addslashes. 
 TI consiglio inoltre una lettura di questa guida:
 http://www.giorgiotave.it/forum/scripting-e-risorse-utili/189074-guida-sql-injection.html
 
- 
							
							
							
							
							Mi puoi spiegare cosa significa? 
 
- 
							
							
							
							
							Dovresti leggere la guida per capire, li è tutto spiegato sui problemi che derivano dagli apici e determinate configurazioni di php. 
 
- 
							
							
							
							
							Adesso funziona tutto!!!mi è bastato cambiare questo della pag contenente i dati inviati dal form 
 $id_ann=$_POST['id'];
 al postodi $id_ann=$_GET['id'];graazie dell'aiuto!!! 
 
- 
							
							
							
							
							volevo chiedere ancora una volta..vorrei verificare prima di una modifica e di una cancellazione l'esistenza del messaggio..come posso fare? 
 
- 
							
							
							
							
							Fai una query select e controlli con mysql_num_rows se c'è il record. 
 
- 
							
							
							
							
							Tipo una cosa del genere? [PHP]if($title!="" && $body !=""){ 
 $risultato = mysql_query("SELECT * FROM annunci_offro WHERE autore='".$_SESSION['utente']."'")or die(mysql_error("query annunci fallita"));
 mysql_num_rows($risultato);$modifica=mysql_query("UPDATE annunci_offro SET title='$title',body='$body' WHERE id=$id_ann") or die(mysql_error("query modifica fallita")); echo"modifica ok"; 
 header("refresh:2;URL=annunci_offro.php");
 }else{echo"impossibile modificare"; header("refresh:2;URL=annunci_offro.php"); }} 
 mysql_close();?> 
 [/PHP]dove prima della query update ho messo select con il num_rows 
 
- 
							
							
							
							
							[php] 
 mysql_num_rows($risultato);
 [/php]
 Restituisce il numero di record quindi tu dovresti fare una cosa del tipo:
 [php]
 if(mysql_num_rows($risultato) == 0)
 die('ID non presente');
 [/php]