- Home
- Categorie
- Coding e Sistemistica
- Coding
- non inserisce i dati nel db
-
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]
-
Adesso mi sono occorta di avere un altro problema..Nella pag di login, succede questo. Quando digito username o pwd non corrette, oppure non riempio tutti i campi, invece di vedere i messaggi di errore, mi rimanda alla pagina degli annunci, ma non vedo gli annunci e vedo sessione scaduta..come posso risolverlo???
o:o [PHP]<?php
//inizia la sessione utente
session_start();
//includo i parametri del db
include("varDB.inc");
//apro una connessione con il db e lo seleziono
$conn = mysql_connect($host,$user,$password) or die;
mysql_select_db($db) or die;
// inizializzo la variabile
$messaggio = "";
// se è stato premuto il pulsante invia
if (isset($_POST['invia'])) {
// controllo sulle stringhe
$username = ($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
// se i campi non sono vuoti
if (!empty($username) && !empty($password)) {
//preparo la query
$query = "SELECT * FROM utenti WHERE username='$username' AND password='$password' ";
// la eseguo
$controllodati = mysql_query($query);
// se trovo un risultato
if (mysql_num_rows($controllodati) == 1) {
// recupero i dati del record
$sessione = mysql_fetch_array($controllodati);
// metto in sessione la username
$_SESSION['utente'] = $sessione['username'];
} else {
// utente non trovato$messaggio="<font color='black' face='times new roman' size='4px'>User o password non validi"; header("refresh: 2; URL=home.php"); } } else { // campi vuoti $messaggio = "<font color='black' face='Times new roman' size='4px'>devi riempire tutti i campi";"Non hai inserito le credenziali"; header("refresh: 2; URL=login.php?azione=login"); } } ?> <html> <head> <!-- striscia in alto --> <script type="text/javascript">var NREUMQ=NREUMQ||[];NREUMQ.push(["mark","firstbyte",new Date().getTime()]);</script>
<title>Login</title>
<!-- css esterno -->
<link rel="stylesheet" type="text/css" href="stile.css">
</head>
<body>
<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 // se non c'è una sessione utente mostro il link per il login o per la registrazione if (!isset($_SESSION['utente'])) { echo"<li><p><font color='red' Face='georgia' size='4px'>Ciao visitatore!</p></li>"; echo"<li><p><a href='login.php?azione=login'><p><font color='blue' Face='sans-serif' size='4px'>login</a></p></li>"; echo"<li><p><a href='registrati.php'>registrati</a></p></li>"; echo"<br>"; echo"<br>"; echo"<br>"; } else { // altrimenti il logout e il cancella dati, solo se c'è la sessione 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>"; } ?> </ul> </div> <?php echo "<p>" . $messaggio . "</p>"; //azione determina il login o il logout $p = isset($_GET['azione']) ? $_GET['azione'] : ""; if ($p == "login") { // se è già in corso la sessione utente l'utente non potrà loggarsi di nuovo if(isset($_SESSION['utente'])){ echo"<font color='black' face='times new roman' size='4px'>Verrai indirizzato alla pagina degli annunci"; header("refresh:2; URL=entra1.php"); }else{ ?> <form method="POST" action="login.php"> <label for="username">Username</label> <input type="text"name="username" id="username"/><br> <label for="password"> Password</label> <input type="password" name="password" id="password"/><br> <input type="submit" name="invia" value="entra"/><br>
<?PHP
}
?>
</form>
<?php
// con il logout
} else if ($p == "logout") {
//distruggo la sessione
session_destroy();echo"<br>"; echo"<br>"; echo"<br>"; echo"<font color='black' face='times new roman' size='4px'>Logout effettuato"; echo"<br>"; Echo"<font color='black' face='times new roman' size='4px'>Arrivederci,<b> " . $_SESSION['utente'] . "</b>"; // reindirizzo l'utente alla pag della home header("refresh: 2; URL=home.php"); }else{ echo"<br>"; echo"<br>"; echo"<font color='black' face='times new roman' size='4px'>Verrai reindirizzato alla pagina degli Annunci"; header("refresh:2, URL=entra1.php"); } // chiudo la connessione al db mysql_close(); ?> <script type="text/javascript">if(!NREUMQ.f){NREUMQ.f=function(){NREUMQ.push(["load",new Date().getTime()]);var e=document.createElement("script");e.type="text/javascript";e.src=(("http:"===document.location.protocol)?"http:":"https:")+"//"+"d1ros97qkrwjf5.cloudfront.net/42/eum/rum.js";document.body.appendChild(e);if(NREUMQ.a)NREUMQ.a();};NREUMQ.a=window.onload;window.onload=NREUMQ.f;};NREUMQ.push(["nrfj","beacon-1.newrelic.com","1b473294f5","550561","M1QBYUMCDUAEWkRfWgoeNkdYTAVcF0xdGUMGQgZaHxMLQw==",0,64,new Date().getTime(),"","","","",""]);</script>
</body>
</html>[/php]
-
Mi sapete aiutare?
-
Presumo che stai lavorando in un server virtuale installato in ambiente Windows.
Se così è la password è obbligatoriamente "root" e devi scriverla normalmente e dopo "root" nel punto dove adesso appaiono "".
Puoi impostare solo la password "root" ed è obbligatoria anche se ti colleghi direttamente al database MySQL.
MySQL devi eseguirlo come servizio.