Ver Mensaje Individual
  #5 (permalink)  
Antiguo 26/02/2009, 16:40
Avatar de atoBeto
atoBeto
 
Fecha de Ingreso: abril-2008
Ubicación: B.C.S., México
Mensajes: 35
Antigüedad: 16 años
Puntos: 2
Respuesta: Filtrar consulta varias opciones

Hola midpunto, como veo en el código del formulario tienes varios inputs, sin embargo estos consisten en cuadros de texto y elementos select que unicamente capturan un valor, por lo que del lado de PHP solo se recibirá un valor por cada uno de estos inputs, entonces podemos decir que tendremos 10 campos para realizar la consulta:

<input name="id" id="id" type="text">
<select name="situacion" id="buscapor">
<select name="zona" size="1" class="Estilo5" id="zona">
<select name="nombre_zona" id="nombre_zona" >
<select name="tipo" size="1" class="Estilo5" id="tipo">
<input name="dormitorios" id="dormitorios" size="2" type="text">
<input name="ascensor" id="ascensor" value="Y" type="checkbox">
<input name="garage" id="garage" value="Y" type="checkbox">
<input name="terraza" id="terraza" value="Y" type="checkbox">

Si los datos se envian por POST del lado de PHP serán recogidos con la variable predefinida $_POST, ahora bien, una forma que se me ocurre para hacer más rápido el proceso de recoger los datos para armar tu consulta puede ser la siguiente:

1.-Crea un arreglo asociativo que tenga como llaves los campos que se pueden consultar en la tabla de la base de datos, y como valores cada uno de estos datos enviados desde el formulario por post, es decir:

Código PHP:
/*Ojo, desconosco los nombres de los campos de la tabla que usas así que los inventaré*/
$consulta = array(); //Creamos el arreglo
$consulta['Id'] = $_POST['id'];//Llenamos los campos
$consulta['Situacion'] = $_POST['situacion'];
$consulta['Zona'] = $_POST['zona'];
...
$consulta['Terraza'] = $_POST['terraza'
Y así hasta que tengas todos los datos recibidos en este arreglo asociativo llamado $consulta. Entonces podemos acelerar las cosas...

2.-Para elaborar la consulta puedes tomar este arreglo y utilizando un ciclo foreach recorrer cada uno de los campos y agregarlos a una consulta:

Código PHP:
$filtro = array();//Arreglo que funcionará como un filtro para los campos recibidos
foreach($consulta as $campo=>$valor) {
    if(
$valor!="" && $valor!="...") { //Checamos que el campo contenga algún valor válido
         
$filtro []= "$campo='$valor'";//Agregamos  el campo con el valor al arreglo $filtro
   
}
}
$condicion implode(" AND "$filtro); //Juntamos todas las condiciones dentro del arreglo en una sola cadena 
3.- De esta forma formamos una cadena llamada $condicion que contendrá la parte de la condición que llevará tu consulta SQL, separando cada una de las condiciones con la palabra AND para al final obtener una cadena como la siguiente:

Id = '4' AND Situacion = 'Disponible' AND Zona = 'Centro' AND ...


que podrías utilizar dentro de tu consulta SQL.

Saludos.

Última edición por atoBeto; 26/02/2009 a las 16:53