Foros del Web » Programando para Internet » PHP »

Consulta de varios campos

Estas en el tema de Consulta de varios campos en el foro de PHP en Foros del Web. Tengo un problema sencillo pero en realidad no se como resolver, pues soy novato en esto. Quiero hacer un formulario con varios List donde escojo ...
  #1 (permalink)  
Antiguo 21/04/2004, 13:22
Avatar de Jeremias  
Fecha de Ingreso: agosto-2003
Ubicación: Caracas
Mensajes: 504
Antigüedad: 21 años, 3 meses
Puntos: 0
Pregunta Consulta de varios campos

Tengo un problema sencillo pero en realidad no se como resolver, pues soy novato en esto.

Quiero hacer un formulario con varios List donde escojo los valores de los diferentes campos que quiero incluir en la busqueda. Eso lo se hacer y me resulta si los uso todos al mismo tiempo, pero quiero que el me haga la busqueda aunque yo no seleccione alguno, es decir si tengo SEXO, NACIONALIDAD, PROVINCIA, entonces quiero que si selecciono en SEXO: MASCULINO y en PROVINCIA:Caracas, como resultado me salga todos los registros con estos dos parametros, es decir sin haber seleccionado NACIOALIDAD, ya que a mi me funciona si escocojo una opcion de cada uno, pues puse como primera opcio de cada lista una casilla en blanco.

Entonces ¿como hago para poder realizar la consulta o busqueda en la base de datos con solo los list que yo haya escogido?
Gracias.
__________________
Atte. Jere
Agradezco su pronta colaboración.
;-) :arriba:Hoy por mi, mañana por ti:arriba: ;-)
  #2 (permalink)  
Antiguo 21/04/2004, 14:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 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.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:10.