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:
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.<?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....... }
Tambien si me podrian decir sobre la segunda consulta si esta bien hacerla con tantos "AND" y de que otra forma podria hacerlo. Gracias