- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problema query recupero dati da db tramite id
-
Problema query recupero dati da db tramite id
Ciao a tutti ho un problema con una query sql che dovrebbe recuperare il titolo e il testo con un id specifico da una tabella presente in un database ma non funziona non stampa nessun risultato.
Questo è il codice della pagina elenco.php che viene inclusa nella barra laterale per formare un menù con i servizi offerti ( e funziona correttamente )
<?php include"../config/connessione.php"; //contiamo i record $conto = @mysql_query ("SELECT COUNT(*) AS conta FROM $tabella_servizi") or die (mysql_error()); $tot = @mysql_fetch_array ($conto) or die (mysql_error()); $sommma = $tot['conta']; //stabiliamo una notifica da visualizzare //se i record sono pari a zero if ($sommma=='0') { echo "Nessuna voce nei servizi."; $ul =""; }else{ echo "<ul>"; $query = @mysql_query("SELECT * FROM $tabella_servizi ORDER BY servizi_id ") or die (mysql_error()); while ($fetch=@mysql_fetch_array($query)) { $servizi_id = stripslashes($fetch['servizi_id']); $servizi_titolo = stripslashes($fetch['servizi_titolo']); //stampa dei record echo "<li><a href=\"".$path_servizi."/servizi.php?id_servizi=" .$servizi_id. "\">" .$servizi_titolo. "</a> </li>"; } echo "</ul>"; } ?>
Questo è il codice della pagina servizi.php quella che non visualizza i risultati
<?php @include "../config/config.php"; if (isset($_GET['id_servizi'])) { $id_servizi = $_GET['id_servizi']; $query = @mysql_query("SELECT servizi_titolo, servizi_testo, FROM $tabella_servizi WHERE servizi_id='$id_servizi'") or die (mysql_error()); $fetch = @mysql_fetch_array($query) or die (mysql_error()); $servizi_titolo = stripslashes($fetch['servizi_titolo']); $servizi_testo = stripslashes($fetch['servizi_testo']); echo "<h3>" .$servizi_titolo. "</h3>"; echo "<h4>" .$servizi_testo. "</h4>"; @mysql_close(); } ?>
-
Ciao,
c'è una virgola di troppo nella query:
[php]
$query = @mysql_query("SELECT servizi_titolo, servizi_testo, FROM $tabella_servizi WHERE servizi_id='$id_servizi'") or die (mysql_error());[/php]
invece di:
[php]
$query = @mysql_query("SELECT servizi_titolo, servizi_testo FROM $tabella_servizi WHERE servizi_id='$id_servizi'") or die (mysql_error());[/php]
Sarebbe meglio evitare l'uso delle @ per nascondere i messaggi di errore, che poi non capisci dov'è il problema...
-
Ciao anche io ho un problema simile, dovrei stampare il record di una tabella ma non mi riesce.... dove sbaglio??
Devo selezionare un record da tabella e stamparlo per poi inviarlo in una mail; ho verificato tutto il codice ed ho notato che il ciclo while non viene mai eseguito nonostante la query vada a buon fine.
Spero di essere stato chiaro.
Grazieposto il codice:
[php]<?phpinclude '_config.php';
if(isset($_POST['submit'],$_SESSION['viaggio'])){
$to = $_POST['ricevente'];
$to1 = $_POST['mailricevente'];$query = 'select * from viaggio where id = "'.$_SESSION['viaggio'].'"';
$risultato = mysql_query($query) or die ('Errore '.mysql_error());
$numcampi = mysql_num_fields($risultato);
$subject = 'Modulo di prenotazione viaggio';
$body = '';
$body .= 'Prenotazione per il viaggio: <br />';
$row = mysql_fetch_row($risultato);while ($row = mysql_fetch_row($risultato)){
echo '<p>'.implode($row,',')."</p>";
}$body .="<br />Contenuto del messaggio:<br />'".$_POST['messaggio']."'";
echo "<br /> A: '".$to."' '".$to1."'";
echo "<br /> subjact: '".$subject."'";
echo "<br /> body: '".$body."'";
}
?>[/php]
-
@winston_smith said:
Ciao anche io ho un problema simile, dovrei stampare il record di una tabella ma non mi riesce.... dove sbaglio??
Devo selezionare un record da tabella e stamparlo per poi inviarlo in una mail; ho verificato tutto il codice ed ho notato che il ciclo while non viene mai eseguito nonostante la query vada a buon fine.
Spero di essere stato chiaro.
GrazieSe la query va a buon fine probabilmente vuol dire che ritorna 0 righe. Se fai un echo di $_SESSION['viaggio'] e di $numcampi che ti viene fuori?
-
fatto $_SESSION['viaggio'] e di $numcampi contengono quello che devono contenere...
comunque poi ho risolto in questo modo e funziona
[php]<?phpinclude '_config.php';
if(isset($_POST['submit'],$_SESSION['viaggio'])){ $to = $_POST['ricevente']; $to1 = $_POST['mailricevente']; $query = 'select offerta_richiesta, italia_estero ora, data, partenza, arrivo from viaggio where id = '.$_SESSION['viaggio'].''; $risultato = mysql_query($query) or die ('Errore '.mysql_error());
$subject = 'Modulo di prenotazione viaggio'; $body = ''; $body .= 'Prenotazione per il viaggio: <br />';
if ($risultato){ while($row = mysql_fetch_row($risultato)){ $body .= "<p>".implode($row, '<br />')."</p>"; } }
$body .="<br />Contenuto del messaggio:<br />'".$_POST['messaggio']."'"; if(mail($to1,$subject,$body)){ echo 'mail inviata con successo!'; } else{ echo 'invio fallito!'; } }?>[/php]è stato quell' if($risultato){....} che mi ha risolto....
ora il problema è l'invio della mail, che mi va a buon fine ma in realta non mi arriva nessuna mail.... ma penso che non sia questo il posto adatto.
-
fatto $_SESSION['viaggio'] e di $numcampi contengono quello che devono contenere...
comunque poi ho risolto in questo modo e funziona
[php]<?phpinclude '_config.php';
if(isset($_POST['submit'],$_SESSION['viaggio'])){
$to = $_POST['ricevente'];
$to1 = $_POST['mailricevente'];
$query = 'select offerta_richiesta
, italia_estero
ora,
data,
partenza,
arrivo from viaggio where id = '.$_SESSION['viaggio'].'';$risultato = mysql_query($query) or die ('Errore '.mysql_error()); $subject = 'Modulo di prenotazione viaggio'; $body = ''; $body .= 'Prenotazione per il viaggio: <br />';
if ($risultato){
while($row = mysql_fetch_row($risultato)){
$body .= "<p>".implode($row, '<br />')."</p>";
}
}
$body .="<br />Contenuto del messaggio:<br />'".$_POST['messaggio']."'";
if(mail($to1,$subject,$body)){
echo 'mail inviata con successo!';
}
else{
echo 'invio fallito!';
}
}
?>[/php]è stato quell' if($risultato){....} che mi ha risolto....
ora il problema è l'invio della mail, che mi va a buon fine ma in realta non mi arriva nessuna mail.... ma penso che non sia questo il posto adatto.