Foros del Web » Programando para Internet » PHP »

Buscador Avanzado

Estas en el tema de Buscador Avanzado en el foro de PHP en Foros del Web. Hola Buenos dias Alguien me podria orientar, quiero realizar un buscador avanzado con un formulario en el que pueda realizar una busqueda con varios parametro ...
  #1 (permalink)  
Antiguo 22/10/2015, 12:03
 
Fecha de Ingreso: junio-2015
Mensajes: 63
Antigüedad: 4 años, 6 meses
Puntos: 0
Pregunta Buscador Avanzado

Hola Buenos dias


Alguien me podria orientar, quiero realizar un buscador avanzado con un formulario en el que pueda realizar una busqueda con varios parametro pero no encuentro como.

osea que me busque en una tabla en la que tiene no se 5 columnas y que si yo le digo quiero que me busques los marca=ford, modelos de=6 cilindros, rines de =14" y que mencionando los criterios que quiero me haga la busqueda en en una tabla.

Lo e logrado con jquery pero no necesito sobre formulario.

Alguien me pudiera orientar por favor se los agradeceria mucho
  #2 (permalink)  
Antiguo 22/10/2015, 13:11
Avatar de Alexis88
Objetivista
 
Fecha de Ingreso: noviembre-2011
Ubicación: Lima, Perú
Mensajes: 5.431
Antigüedad: 8 años
Puntos: 930
Respuesta: Buscador Avanzado

Utiliza un formulario con la cantidad de campos que necesitas para realizar la búsqueda. Asigna nombres a cada campo y recibe los datos en el archivo PHP que los procesará y realizará la búsqueda. Como lo que deseas realizar no modificará a la base de datos, utiliza el método GET.

Tendrás que armar la consulta SQL de acuerdo a los valores recibidos; por ejemplo, si de los cinco campos, solo recibes datos de uno de ellos, la consulta solo deberá realizar la búsqueda de acuerdo a dicho dato.

Un saludo
__________________
«Laissez faire et laissez passer, le monde va de lui même»
  #3 (permalink)  
Antiguo 22/10/2015, 15:11
 
Fecha de Ingreso: junio-2015
Mensajes: 63
Antigüedad: 4 años, 6 meses
Puntos: 0
Respuesta: Buscador Avanzado

Muchas gracias me diste la idea, ya lo resolvi

pero ahora me salio otro problema, necesito realizar una busqueda sobre un mismo campo.

en mi columna de nombres tengo a erika,carlos,omar, alejandro, uno en cada fila, lo que necesito es que dentro de un input me realice la busqueda de todos osea si en el input ingreso erika, carlos, que me arroje todas las erikas y todos los carlos ddentro de la consulta. eso se podra?


estoy resolviendolo asi, el problema es que si quiero solo escribir en un solo input de los dos que tengo me arroja todos los registros, tengo que escribir datos en los dos inputs para que me realice la busqueda como tal


<?php
$busca="";
$busca=$_POST['busca'];
$buscar="";
$buscar=$_POST['buscar'];
mysql_connect("localhost","root","");
mysql_select_db ("x");
if ($busca!=""){
$busqueda=mysql_query("SELECT * FROM direcciones where correoelectronico like '%".$busca."%' or correoelectronico like '%".$buscar."%'");
}

?>

Última edición por isisunicornio; 22/10/2015 a las 15:40
  #4 (permalink)  
Antiguo 22/10/2015, 17:23
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 10 años, 3 meses
Puntos: 214
Respuesta: Buscador Avanzado

Saludo

'¡Divide y vencerás!'

Sí ya tienes los datos por los que vas a buscar en un input
(que imagino es busca), lo que se tiene que hacer es un split,
o mejor aún, un explode.

En ambos casos, lo resultante es un array.
Luego, basta con recorrer el array para crear
tantas condiciones como se necesite en una variable string,
y luego simplemente a la variable que contiene el query,
se le agrega este nuevo string.


__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #5 (permalink)  
Antiguo 28/10/2015, 10:46
 
Fecha de Ingreso: junio-2015
Mensajes: 63
Antigüedad: 4 años, 6 meses
Puntos: 0
Respuesta: Buscador Avanzado

Cita:
Iniciado por mortiprogramador Ver Mensaje
Saludo

'¡Divide y vencerás!'

Sí ya tienes los datos por los que vas a buscar en un input
(que imagino es busca), lo que se tiene que hacer es un split,
o mejor aún, un explode.

En ambos casos, lo resultante es un array.
Luego, basta con recorrer el array para crear
tantas condiciones como se necesite en una variable string,
y luego simplemente a la variable que contiene el query,
se le agrega este nuevo string.


Hola muchas gracia fijate que mi formulario lo realice de la siguiente forma

<form name="consulta1" method="post" action="buscador.php">
Carrier:<input type="text" name="codigo" maxlength="20">
Origin:<input type="text" name="codigo2" maxlength="20">
Origin:<input type="text" name="codigo3" maxlength="20">
<input type="submit" value="Aceptar">
</form>

y en la pagina destino lo resolvi asi

"SELECT carrier, origin, destination FROM resgistros WHERE carrier='".$_POST['codigo']."' and origin='".$_POST['codigo2']."' and destination='".$_POST['codigo3']."'"



la cuestion ahora es que si no lleno alguno de los input no me realiza las demas busquedas osea,


si lleno los 3 campos de mi formulario me realiza la busqueda con los parametros que le digo, pero si no lleno el primero por ejemplo y los otros dos si, ya no me hace la busqueda


como puedo realizarla sin que tenga que llenas siemore campos, e utilizado el operador xor y si por individual me las realiza pero si quiero dos ya no me da los resultados

Última edición por isisunicornio; 28/10/2015 a las 11:08
  #6 (permalink)  
Antiguo 28/10/2015, 14:05
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 10 años, 3 meses
Puntos: 214
Respuesta: Buscador Avanzado

Saludo
Eso es porque la consulta actual está pensada para que los tres campos
sean diligenciados.

Para cambiar la consulta y se pueda buscar por cualquiera de los tres,
lo primero es cambiar la condición del WHERE, podría ser dejar
una condición fija (Por ej una condición de fechas , o que el id sea mayor a 0).

Esto para que así no se diligencie ninguno de los campos del formulario,
la consulta arroje datos.

Y luego, se tienen que cambiar todos los AND por OR.
(Obviamente la condición que iba antes en el WHERE
ahora se convierte en otro OR)

Y ya con eso debería funcionar.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #7 (permalink)  
Antiguo 29/10/2015, 04:23
 
Fecha de Ingreso: julio-2015
Ubicación: Barcelona
Mensajes: 93
Antigüedad: 4 años, 4 meses
Puntos: 3
Respuesta: Buscador Avanzado

Yo lo que haría es mirar si esos post contienen lo que me interesa y si no, añadirle un valor por defecto que haga que la query no vaya mal.
  #8 (permalink)  
Antiguo 06/11/2015, 15:52
 
Fecha de Ingreso: junio-2015
Mensajes: 63
Antigüedad: 4 años, 6 meses
Puntos: 0
Respuesta: Buscador Avanzado

Cita:
Iniciado por mortiprogramador Ver Mensaje
Saludo
Eso es porque la consulta actual está pensada para que los tres campos
sean diligenciados.

Para cambiar la consulta y se pueda buscar por cualquiera de los tres,
lo primero es cambiar la condición del WHERE, podría ser dejar
una condición fija (Por ej una condición de fechas , o que el id sea mayor a 0).

Esto para que así no se diligencie ninguno de los campos del formulario,
la consulta arroje datos.

Y luego, se tienen que cambiar todos los AND por OR.
(Obviamente la condición que iba antes en el WHERE
ahora se convierte en otro OR)

Y ya con eso debería funcionar.
Hola mortiprogramador, no consigo realizar lo que tu me dices, seria posible me lo pudieras explicar en codigo, no escuentro como hacerlo y lo que me comentas lo me sale o no se como ponerlo
  #9 (permalink)  
Antiguo 07/11/2015, 02:26
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 10 años, 3 meses
Puntos: 214
Respuesta: Buscador Avanzado

Cita:
Iniciado por isisunicornio Ver Mensaje
Hola mortiprogramador, no consigo realizar lo que tu me dices, seria posible me lo pudieras explicar en codigo, no escuentro como hacerlo y lo que me comentas lo me sale o no se como ponerlo

Saludo
Pues me refiero a esto.

Código SQL:
Ver original
  1. SELECT carrier, origin, destination FROM resgistros WHERE  id > 0 AND (carrier='".$_POST['codigo']."' OR origin='".$_POST['codigo2']."' OR  destination='".$_POST['codigo3']."')"

Prueba así.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: avanzado, buscador, formulario, tabla
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:30.