Estoy haciendo mi primer buscador con varios select, y quisiera saber si es la mejor forma de hacer este tipo de buscadores.
La question que tengo es que cuando no se selecciona las opciones y se deja por defecto "todos" tengo que realizar demasiados comparaciones.
Les dejo lo que hice para que explicarme mejor.
Código:
<form action="results.php" method="post">
<tr>
<td width="26%">
<input type="radio" name="estado" value="Usado" checked="checked"> Usados
</td>
<td width="49%">
<input type="radio" name="estado" value="Nuevo"> Nuevos
</td>
</tr>
<tr>
<td>Marca:</td>
<td>
<select name="select1" id="select1" style="width:150px">
<option value="all">- todo -</option>
<?php
$marcas_array = get_marcas();
foreach($marcas_array as $marcas){
echo "<option value=\"";
//imprimimos las categorias
echo $marcas['id_marca'];
echo "\"";
echo ">";
echo $marcas['id_marca'].$marcas['marca'];
echo "\n";
echo "</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td>Modelo:</td>
<td>
<select name="select2" id="select2" style="width:150px">
<option value="all">- todo -</option>
</select>
</td>
</tr>
<tr>
<td>Precio:</td>
<td>
<select name="desde_price" id="desde_price" style="width:74px">
<option value="all">- todo -</option>
<option value="3000">3.000</option>
<option value="3500">3.500</option>
<option value="4000">4.000</option>
<option value="4500">4.500</option>
<option value="5000">5.000</option>
<option value="5500">5.500</option>
<option value="6000">6.000</option>
..........
</select>
<select name="hasta_price" id="hasta_price" style="width:73px">
<option value="all">- todo -</option>
<option value="3000">3.000</option>
<option value="5000">5.000</option>
<option value="5500">5.500</option>
<option value="6000">6.000</option>
<option value="6500">6.500</option>
<option value="7000">7.000</option>
<option value="7500">7.500</option>
<option value="8000">8.000</option>
<option value="8500">8.500</option>
<option value="9000">9.000</option>
<option value="9500">9.500</option>
<option value="10000">10.000</option>
<option value="10500">10.500</option>
<option value="11000">11.000</option>
..........
</select>
</td>
</tr>
<tr>
<td>año:</td>
<td>
<select name="desde_year" id="desde_year" style="width:74px">
<option value="all">- todo -</option>
<option value="1950">1950</option>
<option value="1951">1951</option>
<option value="1952">1952</option>
<option value="1953">1953</option>
<option value="1954">1954</option>
<option value="1955">1955</option>
<option value="1960">1960</option>
<option value="1961">1961</option>
.................
</select>
<select name="hasta_year" id="hasta_year" style="width:73px">
<option value="all">- todo -</option>
<option value="2011">2011</option>
<option value="2010">2010</option>
<option value="2009">2009</option>
</select>
</td>
</tr>
<tr>
<td>Combustible:</td>
<td>
<select name="combustible" id="combustible" style="width:150px">
<option value="all">- todo -</option>
<option value="nafta">nafta</option>
<option value="diesel">diesel</option>
<option value="flex">flex</option>
<option value="gas">gas</option>
</select>
</td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Buscar"/></td>
</tr>
</form>
</table>
Aqui es el problema cuando no se selecciona nada y hago muchas comparaciones la primera seria....
Código:
<?php
// recibo post
$estado = $_POST['estado'];
$tipo = $_POST['tipo'];
$select1 = $_POST['select1'];
$select2 = $_POST['select2'];
$desde_price = $_POST['desde_price'];
$hasta_price = $_POST['hasta_price'];
$desde_year = $_POST['desde_year'];
$hasta_year = $_POST['hasta_year'];
$combustible = $_POST['combustible'];
// si no se selecciona nada busco solo por estado
if($tipo = "all" & $select1 = "all" & $select2="all" & $desde_price="all" & $hasta_price="all" &
$desde_year="all" & $hasta_year="all" & $combustible="all"){
$con = conectarse();
$query = "SELECT * FROM auto WHERE estado = '$estado'";
$result = mysql_query($query);
}else{
$con = conectarse();
$query = "SELECT * FROM auto WHERE estado ='$estado' AND id_marca ='$select1'
AND modelo = '$select2' AND precio BETWEEN '$desde_price' AND '$hasta_price'
AND year BETWEEN '$desde_year' AND '$hasta_year' AND combustible = '$combustible'";
$result = mysql_query($query);
}
if($result){
//muestro resultados.......
}
Entonces como me recomendarian hacer de otra forma este tipo de buscadores ya que si no selecciono nada realizo muchas verificaciones y consultas dependiendo de las selecciones.
Tambien si me podrian decir sobre la segunda consulta si esta bien hacerla con tantos "AND" y de que otra forma podria hacerlo. Gracias