- Home
- Categorie
- Coding e Sistemistica
- Coding
- non inserisce i dati nel db
-
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]
-
[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]