- Home
- Categorie
- Coding e Sistemistica
- Coding
- non inserisce i dati nel db
- 
							
							
							
							
							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]
 
- 
							
							
							
							
							[PHP] 
 if($title!="" && $body !=""){
 $risultato = mysql_query("SELECT * FROM annunci_offro WHERE autore='".$_SESSION['utente']."'")or die(mysql_error("query annunci fallita"));
 if(mysql_num_rows($risultato) == 0)
 die('ID non presente');$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] Mi diresti se va bene così? 
 
- 
							
							
							
							
							Si va bene cosi, ma la funzione mysql_error non ha come primo parametro una stringa. 
 
- 
							
							
							
							
							@Thedarkita said: Si va bene cosi, ma la funzione mysql_error non ha come primo parametro una stringa. Quindi dovrei togliere il mysql_error? 
 
- 
							
							
							
							
							Dovrebbe diventare una cosa di questo tipo: 
 [php]
 or die("query annunci fallita: ".mysql_error())
 [/php]
 
- 
							
							
							
							
							@Thedarkita said: Dovrebbe diventare una cosa di questo tipo: 
 [php]
 or die("query annunci fallita: ".mysql_error())
 [/php][PHP]$q="SELECT * FROM utenti WHERE username='$username'"; 
 $ris=mysql_query($q) or die("fallita");
 if(mysql_affected_rows()== 0){
 echo"non presente";}else{ 
 $c = isset($_GET['cancella']) ? $_GET['cancella'] : "";
 if ($_POST["canc"]=="si") { // se sceglie si//eseguo la query per la cancellazione dell'account $query="DELETE FROM utenti WHERE username='$username'"; $res=mysql_query($query) or die(" query cancellazione account fallita"); // in caso di problemi con la query $messaggio="dati cancellati"; header("refresh:; URL=home.php");}else{ //altrimenti se sceglgo no i dati non vengono cancellati 
 if($_POST["canc"]=="no")$messaggio="i dati non sono stati cancellati"; 
 $username=$_SESSION['utente'];} echo $messaggio; 
 }
 }[/PHP]Mi dici se può andare il controllo per verificare prima della cancellazione se l'utente è presente? 
 
- 
							
							
							
							
							No, mysql_affected_rows serve per query di update/delete/insert. 
 
- 
							
							
							
							
							Quindi per cancellare un utente, verifico la sua esistenza se c'è lo cancello...correggo così? 
 [php]
 $q="SELECT * FROM utenti WHERE username='$username'";
 $ris=mysql_query($q) or die("fallita");
 if(mysql_num_rows()== 0){
 echo"user non presente";}else{ 
 $c = isset($_GET['cancella']) ? $_GET['cancella'] : "";
 if ($_POST["canc"]=="si") { // se sceglie si//eseguo la query per la cancellazione dell'account $query="DELETE FROM utenti WHERE username='$username'"; $res=mysql_query($query) or die(" query cancellazione account fallita"); // in caso di problemi con la query $messaggio="dati cancellati"; header("refresh:; URL=home.php");}else{ //altrimenti se sceglgo no i dati non vengono cancellati 
 if($_POST["canc"]=="no")$messaggio="i dati non sono stati cancellati"; 
 $username=$_SESSION['utente'];} echo $messaggio; 
 }
 }
 [/php]