Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [MySQL]: Query per ricerca nel db non restituisce tutti i record.

    Ciao ragazzi,
    ho un problema piuttosto strano, molto semplicemente volevo fare un form php attraverso cui è possibile ricercare un nome di un oggetto inserito in un db con l'operatore LIKE.

    Il problema è che, non so per quale ragione, non compare il primo record inserito ma tutto il resto compare correttamente, di seguito la struttura della tabella, il form html e il file PHP

    TABELLA
    dato_nome codice dato_quantita
    sample_data1 0001 5
    sample_data2 0002 6


    codice HTML:
    <form method="post" action="ricerca_per_nome.php">            
    <input type="text" name="valore_ricerca" />Inserisci il nome dell'oggetto<br />            
    <input type="submit" value="Ricerca oggetto" />
    </form>



    ricerca_per_nome.php
    Codice PHP:
    <?php
    $host
    ="sample_host";    
    $user="sample_user";    
    $password="sample_password";    
    $database="mydatabase";       
    $db=mysql_connect($host,$user,$password) or die("Impossibile collegarsi al server");    
    @
    mysql_select_db("$database") or die("Impossibile connettersi al database");

       
    $input=$_POST['valore_ricerca'];        

    $query_nome="SELECT * FROM tabella WHERE dato_nome LIKE '$input%' AND dato_quantita>0 ORDER BY codice";            
    $risposta mysql_query($query_nome) or die ("Utilizza termini più specifici!");                

    $dentro_la_querymysql_fetch_assoc($risposta);        
    if ( 
    $dentro_la_query == TRUE ){                
    while(
    $row=mysql_fetch_assoc($risposta)){ 
    $nome $row['dato_nome'];                    
    $codice $row['codice'];                    
    $quantita =$row['dato_quantita'];                                            
    echo 
    "<table><tr><td> $nome </td><td>$codice</td><td>$quantita</td></tr></table>";             }            
    }         
    else { 
    echo(
    "Non hai trovato un oggetto con questo nome");                    
    }                

    ?>

    Ho provato ad eseguire la query di SELECT nel pannello di controllo di MySQL e visualizza tutte le query che, per esempio, iniziano con s (ossia sample_data1 e sample_data2), quindi non ci sono problemi da quel punto di vista.
    www.ginoguida.com

  2. #2
    Risolto, non andava inizializzata la variabile $dentro_la_query ed ho ovviato con mysql_num_rows.
    Grazie comunque
    www.ginoguida.com

  3. #3
    Quote Originariamente inviata da riroro14 Visualizza il messaggio
    Risolto, non andava inizializzata la variabile $dentro_la_query ed ho ovviato con mysql_num_rows.
    Grazie comunque
    Non e' perche' inizializzi la variabile $dentro_la_query ma perche' fai una chiamata al result set con la funzione mysql_fetch_assoc().
    Ad ogni chiamata il puntatore al result set avanza di un record e quindi al momento della stampa vai al record 2 oppure ricevi false se il record risultante fosse stato uno solo.

    Corretto quindi verificare il numero dei record ricevuti nel result set e decidere se stampare o segnalare nessun record.

    meglio avere le idee chiare sui perche'.... puo' sempre tornare utile.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Quote Originariamente inviata da piero.mac Visualizza il messaggio
    Non e' perche' inizializzi la variabile $dentro_la_query ma perche' fai una chiamata al result set con la funzione mysql_fetch_assoc().
    Ad ogni chiamata il puntatore al result set avanza di un record e quindi al momento della stampa vai al record 2 oppure ricevi false se il record risultante fosse stato uno solo.

    Corretto quindi verificare il numero dei record ricevuti nel result set e decidere se stampare o segnalare nessun record.

    meglio avere le idee chiare sui perche'.... puo' sempre tornare utile.
    Hai perfettamente ragione, mi sono espresso male prima ma mentalmente avevo dedotto le stesse cose.

    Grazie!
    www.ginoguida.com

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.