Ver Mensaje Individual
  #2 (permalink)  
Antiguo 21/04/2004, 14:12
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si te das cuenta .. lo que usas para buscar en tus base de datos es lenguaje SQL (própio de tu BD usada .. deberías especifica cual usas para dar alguna respuesta más concreta).

Para el lenguaje de programación que usas (sea PHP o el que sea) esas sentencas SQL son o las interpreta como simples cadenas de texto (strings) hasta que las "ejecutas" bajo alguna de las funciones que disponga PHP para "lanzar" la consulta SQL a tu BD (en Mysql por ejemplo: mysql_query() ...)

Por lo tanto .. lo que debes es componer tu sentencia SQL (para el caso: string, cadena ..) deacuerdo a la existencia de tus variables (de tus "list" con valor) ..

La sentencia SQL a su vez .. lo que necesitas "crear" es la parte donde realizas los condicionales y usas los operadores lógicos AND .. (y/o OR).

Trabajando con arrays se me ocurre (no lo he probado pero más o menos debería ir ..):

Código PHP:
$sql=array();
// Se mira si existe la variable en cuestión .. podría usarse también empty() para ver si ademas tiene valor.

if ($isset($_POST['sexo'])){
// tus bloques de nombre campo = valor (valor de tu variable "list")
// Se crea un elemento en el array (autoincremental).
$sql[] = "sexo=".$_POST['sexo'];
}

// Otra condición ..
if ($isset($_POST['nacionalidad'])){
$sql[] = "nacionalidad=".$_POST['nacionalidad'];
}

//etc .. (todo esto con más uso de arrays podrías solventarlo con un bucle y un array definido con los nombres de los campos y/o nombres de las variables que toman en tu formulario.

Si hay mas de un elemento en el array .. se supone que se seleccionó más de una opciónde tus "list".
// por ende .. podemos hacer el WHERE ..

if (count($sql)>0){
$condicional=" WHERE ";
}

// Y .. por último concatenamos todos los "trozos" de SQL que hemos ido componiendo por el camino.
// Con el implode() concatenamos todos los elementos del array $sql con el operador AND .. así obtendremos bloques de:
// camp=valor AND .. tantos como elementos tengamos.

$sql_final"SELEC * FROM tabla".$condicional".implode(" AND ",$sql)." ORDER BY campo"; 
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.