Foros del Web » Programando para Internet » PHP »

Busqueda!!!!

Estas en el tema de Busqueda!!!! en el foro de PHP en Foros del Web. Hola! haber si hay alguien que me pueda ayudar porque la verdad es que antes de seguir creo que lo voy a preguntar. Os cuento, ...
  #1 (permalink)  
Antiguo 13/02/2003, 11:04
Avatar de elkno  
Fecha de Ingreso: diciembre-2002
Mensajes: 24
Antigüedad: 15 años
Puntos: 0
Busqueda!!!!

Hola! haber si hay alguien que me pueda ayudar porque la verdad es que antes de seguir creo que lo voy a preguntar.

Os cuento, tengo que hacer un buscador de ficheros en PHP, y a la hora de la busqueda tengo que tener en cuenta varios campos, claro eso seria muy facil si todos los campos fueran rellenados a la hora de buscar porque seria una simple sentencia en SQL pero si por ejemplo tengo 3 campos tienen que salir únicamente las que cumplan los criterios de búsqueda de los campos que hayamos usado.

Yo he empezado ha hacerlo pero claro:

if (campo1 == ' ')
{
if (campo2 ==' ')
{
if (campo3==' ')
{
ERROR
}
else
{
BUSQUEDA SOLO CON EL CAMPO3
}
else
{
if (campo3==' ')
{
BUSQUEDA SOLO CON EL CAMPO2
}
else
{
BUSQUEDA CON LOS CAMPOS 2y3
}
}
else
{
}
}

Vamos creo que me entendeis que seria 2^3 opciones, solo con tres campos y tres campos no son nada.

Una solución seria haciendo INTERSECT en las busquedas pues hariamos una busqueda por cada campo, teniendo en cuenta que los campos vacios sacariamos todos las filas y luego intersectamos las busquedas pero claro el problema es que MySQL no se si lo soporta.

QUE ALGUIEN ME AYUDEEEEEEEE!!!!!
  #2 (permalink)  
Antiguo 13/02/2003, 16:22
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Crea dinamicamente la condicion de busqueda. Por ejemplo:
Código PHP:
$condicion.='';  // primero vaciamos la consulta
if (''!=$campo1)
{
  
$condicion.=" and campo1='$campo1'";
}
if (
''!=$campo2)
{
  
$condicion.=" and campo2='$campo2'";
}
if (
''!=$campo3)
{
  
$condicion.=" and campo3='$campo3'";
}
// si $condicion esta vacia es que no han rellenado ningun campo
// Si es necesario que rellenen algun campo, lo tratamos como un error
if (''==$condicion)
{
  
//tratamos el error
}
// si tiene valor, quitamos los 4 primeros caracteres ' and'
$condicion=substr($condicion,4);
// con esto tenemos la condicion
// ahora montamos la consulta
$consulta="select * from tabla where ".$condicion." oreder by campo1"
Espero haber sido de ayuda.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 14/02/2003, 03:08
Avatar de elkno  
Fecha de Ingreso: diciembre-2002
Mensajes: 24
Antigüedad: 15 años
Puntos: 0
Muxas graciaaas!!!!!!
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 21:33.