Foros del Web » Programando para Internet » PHP »

Como Hacer Un Buscador Avanzado

Estas en el tema de Como Hacer Un Buscador Avanzado en el foro de PHP en Foros del Web. Hola amigos quiero hacer un buscador avanzado pero no se como construir el sql. tengo un formulario con cuatro cajas de texto y dependiendo lo ...
  #1 (permalink)  
Antiguo 13/08/2008, 06:52
 
Fecha de Ingreso: diciembre-2007
Mensajes: 427
Antigüedad: 16 años, 4 meses
Puntos: 35
Como Hacer Un Buscador Avanzado

Hola amigos quiero hacer un buscador avanzado pero no se como construir el sql.
tengo un formulario con cuatro cajas de texto y dependiendo lo q escriba el usuario asi deberia buscar. Entonces tambien es posible q queden cajas de texto en blanco y no me busque en ellas.
Como se haria el sql??...
Gracias amigos
  #2 (permalink)  
Antiguo 13/08/2008, 07:18
Avatar de chitoso  
Fecha de Ingreso: mayo-2008
Ubicación: Montevideo, Uruguay
Mensajes: 205
Antigüedad: 15 años, 11 meses
Puntos: 5
Respuesta: Como Hacer Un Buscador Avanzado

maxpower2008, me parece que no quedó muy claro tu pregunta, o quizá es muy abierta a la interpretación. Capaz que agregandole un poco de contexto nos ayudas.
  #3 (permalink)  
Antiguo 13/08/2008, 07:21
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: Como Hacer Un Buscador Avanzado

Como dice chitoso no se entiende muy bien, ¿para qué cuatro cajas de texto? ¿Cuál es la función de cada una de ellas? ¿Buscar en un campo específico o qué?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 13/08/2008, 07:25
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: Como Hacer Un Buscador Avanzado

Supongo que los datos a buscar están en la misma tabla.
Lo primero que debes hacer cuando es generar la condición WHERE que es la que determinará qué datos "buscar". Para ello puedes hacerlo por partes:

Código PHP:
//
$sql "SELECT dato1,... FROM tabla WHERE";
$masUnElemento 0;
//Para cada una de las cajas:
if(trim($caja1) != ""){
  
$sql.=" elemento1 LIKE '$caja1' ";
  
$masUnElemento++;
}
if(
trim($caja3) != ""){
  if(
$masUnElemento){$sql.=" AND";}
  
$sql.=" elemento2 LIKE '$caja2' ";
  
$masUnElemento++;
}
if(
trim($caja3) != ""){
  if(
$masUnElemento){$sql.=" AND";}
  
$sql.=" elemento2 LIKE '$caja2' ";
  
$masUnElemento++;
}
if(
trim($caja4) != ""){
  if(
$masUnElemento){$sql.=" AND";}
  
$sql.=" elemento2 LIKE '$caja4' ";

Donde caja1, caja2... corresponde al contenido introducido en cada caja; elemento1, elemento2... a cada uno de los campos a comparar; dato1, dato2 ... cada uno de campos que desees mostrar; y tabla el nombre de la tabla donde estén almacenados.

En este momento tu query será del estilo:

$sql = "SELECT elemento1, ... FROM tabla WHERE ...";
Si quieres añadir algo más a la query (el orden o el número de elementos) sólo tienes que concatenar ($sql .= " ORDER BY ..." por ejemplo).

Recuerda comprobar que algún elemento por lo menos ha sido rellenado.
La función trim() eliminará los espacios en blanco que haya antes y después da cada caja.
  #5 (permalink)  
Antiguo 13/08/2008, 07:26
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Respuesta: Como Hacer Un Buscador Avanzado

Mmm... lo que deberías hacer es preguntar si cada campo del formulario es distinto de vacío y de ser verdadero, lo usas para armar dinámicamente una consulta SQL.

Si tienes alguna noción de objetos, podrías crearte una clase Sql que recibiera la información de la consulta (agrega x campos, agrega x tablas, etc) y cuando finalmente generas el sql recorres todos los parámetros, quitas los duplicados (su hubiera) y generas la sentencia.

De lo contrario, puedes hacer algo similar con arrays, uno para campos, otro para tablas, otro para condiciones, etc.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #6 (permalink)  
Antiguo 13/08/2008, 07:42
 
Fecha de Ingreso: diciembre-2007
Mensajes: 427
Antigüedad: 16 años, 4 meses
Puntos: 35
Gracias amigos lo probare.
Oye ilie ese $masunelemento siempre no se va a quedar en 0??
Segun tu codigoooo....

Es algo mas o menos asi lo q necesito....

Cada caja de texto es para buscar en un campo especifico de la tabla.

Listo ya lo hice utilizando el codigo de ilie
Gracias a todos por responder....

Última edición por GatorV; 13/08/2008 a las 08:30
  #7 (permalink)  
Antiguo 14/08/2008, 03:33
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: Como Hacer Un Buscador Avanzado

Me alegro de que te haya servido. Un saludo.
  #8 (permalink)  
Antiguo 14/08/2008, 03:54
 
Fecha de Ingreso: julio-2008
Mensajes: 52
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Como Hacer Un Buscador Avanzado

yo creo que es mejor poner "%texto%" que "$texto", con la 1a opción puedes buscar el texto en cualquier sitio.
  #9 (permalink)  
Antiguo 21/08/2008, 03:54
 
Fecha de Ingreso: agosto-2008
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 7
Respuesta: Como Hacer Un Buscador Avanzado

Eso es ya a gusto del consumidor jeje. Pero viene bien indicarlo.

Gracias sintanga.
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 03:20.