- Home
- Categorie
- Coding e Sistemistica
- Coding
- non inserisce i dati nel db
-
@Thedarkita said:
$title="" sovrascrive il contenuto di title, manca un = nell'if.
Devi fare un'altra query per recuperare l'annuncio cosi da mostrarlo di base ogni volta accedi alla pagina.
Oh vero, grazie tante!!!
mi potresti fare un esempio, cosi da capire meglio?...chiedo perchè non sono pratica...
-
Dipende di preciso come vuoi fare, di norma inserimento e modifica non vengono mischiati in questo modo.
-
Non voglio mischiare l'inserimento e la modifica in una query, ma solo far si che un utente loggato veda il contenuto..
Dovrei prima usare SELECT e poi richiamare e stampare tutto con il mysql_fetch_array?
-
Si, devi fare in quel modo.
-
@Thedarkita said:
Si, devi fare in quel modo.
grazie mille, ho fatto come hai detto..funziona!!
Però non capisco perchè mi inserisce gli annunci doppi..non solo nella pagweb, ma anche nel db..il codice delle due pagine...una solo per il form e l'altra contenente le query[PHP]<?php
session_start();
Include("varDB.inc");
$conn=mysql_connect("localhost","root","");
mysql_select_db("sito");
$messaggio="";
?><html>
<head>
<script type="text/javascript">var NREUMQ=NREUMQ||[];NREUMQ.push(["mark","firstbyte",new Date().getTime()]);</script>
<link rel="stylesheet" type="text/css" href="stile.css">
<title>Inserisci </title>
</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 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= "sessione scaduta"; } ?> </ul> </div>
<?php
if (isset($_SESSION['utente'])){
?>
<form method="POST" action="entra.php">
<p>Inserisci 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}else{
echo"sessione scaduta";
}
?><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,61,new Date().getTime(),"","","","",""]);</script>
<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,59,new Date().getTime(),"","","","",""]);</script>
</body></html>[/PHP]
[PHP]<?php
session_start();
include("varDB.inc");
$conn=mysql_connect("localhost","root","");
mysql_select_db("sito");?>
<html>
<head>
<!-- striscia in alto -->
<title>annunci</title>
<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 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= "sessione scaduta"; } $title=$_POST['title'];
$body=$_POST['body'];
if($title=="" ||$body==""){
echo "Non hai riempito i campi";}else{ $inserimentoannunci=mysql_query("INSERT INTO annunci_cerco (title,body) VALUES ('$title','$body')"); } if($inserimentoannunci){ echo"".$title.""; echo"<br>"; echo"".$body."" ; }else{ $messaggio="errore"; } $risultato = mysql_query("SELECT * FROM annunci_cerco");
while ($riga = mysql_fetch_array($risultato)) {
echo $riga['title'];
echo"<br>";
echo"<br>";
echo"<br>";
echo"<br>";
echo $riga['body'];}
mysql_close(); ?> </ul> </div>
</body>
</html>
[/PHP]
-
Il problema è che tu per inserire mandi alla pagina X, che non inserisce solamente, ma visualizza anche. Basta refleshare quella pagina per avere un altro inserimento identico.
-
no, ho cambiato destinazione e creato due pagine diverse, una per il form che invia i dati ad un'altra pagina..se non errro, perchè mettendo in commento questa parte di codice non si pone piùil problema...ma vorrei sapere se è giusto fare così...
[PHP]<?php
session_start();
include("varDB.inc");
$conn=mysql_connect("localhost","root","");
mysql_select_db("sito");?>
<html>
<head>
<!-- striscia in alto -->
<title>annunci</title>
<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 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= "sessione scaduta"; } $title=$_POST['title'];
$body=$_POST['body'];
if($title=="" ||$body==""){
echo "Non hai riempito i campi";}else{ $inserimentoannunci=mysql_query("INSERT INTO annunci_cerco (title,body) VALUES ('$title','$body')"); } if($inserimentoannunci){ $risultato = mysql_query("SELECT * FROM annunci_cerco");
while ($riga = mysql_fetch_array($risultato)) {
echo $riga['title'];
echo"<br>";
echo"<br>";
echo"<br>";
echo"<br>";
echo $riga['body'];}
//echo"".$title."";
//echo"<br>";
//echo"".$body."" ;}else{ $messaggio="errore"; } mysql_close(); ?> </ul> </div>
</body>
</html>
[/PHP]
Dove si vede la parte messa in commento...è giusto così o non si può fare?
-
Cioè vorresti togliere i commenti?
-
DOvrei togliere la parte in commento, perchè altrimenti mi stampa due volte quello che scrivo...però non so se posso mettere dentro un if while...
-
Allora non inseriva 2 volte, semplicemente stampava 2 volte. È normale che se tu inserisci nella tabella, e dopo dici stampami la tabella, hai già stampato 1 volta ciò che hai appena inserito. Per cui non c'è motivo che fai altri echo.
-
Però inseriva lo stesso due volte nel db, lo stesso messaggio...allora posso togliere quello che ho già messo in commento?
-
Si lo puoi togliere tranquillamente, visto che non ti serve a nulla.
-
ok, ti ringrazio!
-
però inserisce sempre doppio messaggio nel db..e vedo il titolo attaccato al messaggio anche se metto il br...come posso risolvere?
-
anzi ogni volta che ricarico la pagina mi trovo altri messaggi identici, e lo stesso capita nel db!!
-
Questo è normale, visto che hai unito visualizzazione e inserimento nella stessa pagina, come ti avevo già detto prima dovrebbero essere 2 cose separate.
-
@Thedarkita said:
Questo è normale, visto che hai unito visualizzazione e inserimento nella stessa pagina, come ti avevo già detto prima dovrebbero essere 2 cose separate.
Hai ragione, scusa non avevo ben capito cosa..pensavo si riferisse solo alla stampa a video..provvedo a correggere!
-
Ho creato un'altra pagina..solo che vedo errori di notice, anche se ho richiamato le varibiali...ecco il codice..
Notice: Undefined index: title in C:\xampp\htdocs\prova\annunci.php on line 59Notice: Undefined index: body in C:\xampp\htdocs\prova\annunci.php on line 60
[PHP]<?php
//inizio la sessione utente
session_start();
include("varDB.inc");
//creo una connessione al db e lo seleziono
$conn=mysql_connect("localhost","root","");
mysql_select_db("sito");?>
<html> <!-- striscia in alto-->
<head> <link rel="stylesheet" type="text/css" href="stile.css"> <title>Inserisci </title> </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 //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
$title=$_POST['title'];
$body=$_POST['body'];
$risultato = mysql_query("SELECT * FROM annunci_cerco WHERE title='$title' AND body='$body' ");
//mostro tutti gli annunci inseriti
while ($riga = mysql_fetch_array($risultato)) {
echo" <font color='black' face='times new roman' size='4px'>";
echo $riga['title'] ;echo"<br>";
echo"<br>";
echo"<br>";
echo"<font color='black' face='times new roman' size='4px'>";
echo $riga['body'];}
mysql_close();
?>
</body></html>
[/PHP]
-
Significa che le 2 variabili POST non hanno quei 2 indici che stai utilizzando al momento dell'accesso alla pagina.
-
@Thedarkita said:
Significa che le 2 variabili POST non hanno quei 2 indici che stai utilizzando al momento dell'accesso alla pagina.
mmm...eppure a me sembra di aver messo gli stessi indici...