• User Attivo

    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();
    }
    ?>
    
    

  • ModSenior

    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...


  • User Newbie

    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.
    Grazie

    posto 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]


  • User Newbie

    @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.
    Grazie

    Se 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?


  • User Newbie

    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.


  • User Newbie

    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.