- Home
- Categorie
- Coding e Sistemistica
- Coding
- Uso LIKE con % ma con tutti records a vista
-
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>
-
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.
-
Tantissime grazie dalla risposta veloce... adesso provo ad applicare ciò che hai scritto. Grazie ancora