- 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 inseriti
while ($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 inseriti
while ($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]