- Home
- Categorie
- Coding e Sistemistica
- PHP
- Form di ricerca considera solo alcuni parametri
-
Form di ricerca considera solo alcuni parametri
ho un problema con un form di ricerca. Questo form è composto da 3 campi select e 2 campi text.
La ricerca deve estrarmi tutti i dati della tabella se non ho selezionato nessuna delle condizioni del form, altrimenti deve estrarmi solo i dati che corrispondono alle condizioni del form.
Il problema è che la ricerca mi tiene conto dei due campi text, ma non fa assolutamente caso ai tre campi select. Non riesco a capire il perchè.
Questo è il codice del form:
[PHP]
<table cellpadding="3" width="500px">
<form method="post" action="" name="search">
<tr align="center">
<td><strong>Località</strong></td>
<td><strong>Luogo di interesse</strong></td>
<td><strong>Luogo publico</strong></td>
</tr>
<tr align="center">
<td>
<select name="localita" id="localita">
<option value="">-- seleziona --</option>
<?php
$qcli=mysql_query("SELECT nome FROM dove WHERE tipo='Localita' AND provincia='".$_SESSION['provincia']."' ORDER BY nome ASC");
while($cli=mysql_fetch_assoc($qcli)){
echo "<option value="".$cli['nome']."">".$cli['nome']."</option>"; }
$localita=$cli['nome'];?>
</select>
</td>
<td>
<select name="Luogo_di_interesse" id="Luogo_di_interesse">
<option value="">-- seleziona --</option>
<?php
$qcli2=mysql_query("SELECT nome FROM dove WHERE tipo='Luogo_di_interesse' AND provincia='".$_SESSION['provincia']."' ORDER BY nome ASC");
while($cli2=mysql_fetch_assoc($qcli2)){
echo "<option value="".$cli2['nome']."">".$cli2['nome']."</option>"; }?>
</select>
</td>
<td>
<select name="Luogo_pubblico" id="Luogo_pubblico">
<option value="">-- seleziona --</option>
<?php
$qcli3=mysql_query("SELECT nome FROM dove WHERE tipo='Luogo_pubblico' AND provincia='".$_SESSION['provincia']."' ORDER BY nome ASC");
while($cli3=mysql_fetch_assoc($qcli3)){
echo "<option value="".$cli3['nome']."">".$cli3['nome']."</option>"; }
?>
</select>
</td>
</tr>
<tr align="center">
<td><strong>Descrizione
</strong></td>
<td><strong>Data
</strong></td>
<td> </td>
</tr>
<tr align="center">
<td>
<input type="text" name="descr" id="descr" />
</td>
<td><input name="data" class="inputDate2" id="inputDate2" value="<?php //$b=date('d/m/Y'); echo $b; ?>" />
</td>
<td><input type="submit" name="cerca" id="cerca" value="Cerca" />
</td>
</tr></form> </table>[/PHP]
Questo è invece il codice della query che estrai i dati:
[PHP]$querymsg = "SELECT * FROM msg WHERE id != '0'";
if($localita!=''){$querymsg.="AND dove LIKE '%".$localita."%' ";} if($_POST['Luogo_di_interesse']!=''){$querymsg.="AND dove LIKE '%".$_POST['Luogo_di_interesse']."%' ";} if($_POST['Luogo_pubblico']!=''){$querymsg.="AND dove LIKE '%".$_POST['Luogo_pubblico']."%' ";} if($_POST['descr']!=''){$querymsg.="AND dove LIKE '%".$_POST['descr']."%' ";} if($_POST['data']!=''){$querymsg.="AND data LIKE '%".$_POST['data']."%' ";} echo $querymsg; $query_limit = mysql_query($querymsg) or die(mysql_error()); while ($msg = mysql_fetch_array($query_limit)) { ?>[/PHP]
come vedete per capirci di più stampo anche la query, ma se ad esempio seleziono una voce del campo localita quello che mi stampa è
SELECT * FROM msg WHERE id != '0'
come se non avessi selezionato alcuna voce... Come è possibile??Grazie in anticipo a tutti.