• User Newbie

    Uso LIKE con % ma con tutti records a vista

    Cari amici, ho una dbase dei libri, ho preparato una pagina php che presenta una form dove inserire il cognome dell'autore che funziona!!
    Ma quando si apre la pagina viene subito sotto la tabella con tutti i record del DBase. So che dovrei levare i "%" se uso LIKE ma per me è utile se scrivo solo parte del cognome perche mi trova tutto.
    Domando, c'è un modo di usare LIKE senza che venga sotto la tabella con tutti i records?
    Grazie

                        <form method='get' action='<?php echo $PHP_SELF; ?>'>
                          <p>cognome  
                            <input size='30' name='apellido'>
                          </p>
                          <p> 
                            <input type='submit' name='Apply' value=' Cerca '>
                          </p>
                        </form>
                        <p> 
                          <?php // Make a MySQL Connection
    

    mysql_connect("myserver", "Sql123456", "passw") or die(mysql_error());
    mysql_select_db("Sql123456_1") or die(mysql_error());

    // Get all the data from the "tabella1" table
    $cur = mysql_query ("
    SELECT cognome, nome, titolo, anno_pub
    FROM tabella1
    WHERE cognome LIKE '%$apellido%'
    ");

    echo "
    <table border>
    <tr><th>Cognome<th>Nome<th>Titolo<th>Anno Pubblicazione</tr>
    ";
    while ($riga = mysql_fetch_row($cur)){
    echo "<tr><td>$riga[0]<td>$riga[1]<td>$riga[2]<td>$riga[3]";
    }
    echo "</table>";

    ?>
    </p>


  • User

    Anzitutto, non usare register_globals.
    Inoltre, accade questo perché fai la query anche se il form non è stato inviato. In tal modo all'inizio la query ha la clausola LIKE "%%" che ovviamente è sempre verificata, per qualsiasi riga.
    Fai un controllo su $apellido prima di fare la query: se è vuota, non eseguire la query.


  • User Newbie

    Tantissime grazie dalla risposta veloce... adesso provo ad applicare ciò che hai scritto. Grazie ancora