Foros del Web » Programando para Internet » PHP »

buscador que filtre busqueda con listas desplegables

Estas en el tema de buscador que filtre busqueda con listas desplegables en el foro de PHP en Foros del Web. Hola, llevo varios días leyendo en foros y diferentes post pero no he conseguido avanzar ni un poco. Intento hacer un buscador con listas desplegables ...
  #1 (permalink)  
Antiguo 17/03/2011, 05:30
 
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 295
Antigüedad: 9 años, 1 mes
Puntos: 12
buscador que filtre busqueda con listas desplegables

Hola, llevo varios días leyendo en foros y diferentes post pero no he conseguido avanzar ni un poco.

Intento hacer un buscador con listas desplegables de manera que filtre la Búsqueda en una tabla hecha en MySQL.
En dicha tabla tengo los siguientes campos.

ID
Provincia
Nombre
Tipo de establecimiento.

Los ID de dichos elementos son de 5 cifras, las dos primeras siempre coinciden dependiendo de la provincia, así por ejemplo todos los establecimientos de Alava son 01001, 01023, 01231, etc. los de Albacete 02020, 02003, etc.

Actualmente tengo una busqueda con una sola lista desplegable de manera que los valores están dispuestos así:

<select>
<option value="busqueda_filtro.php?recordID=01">Alava</option>
<option value="busqueda_filtro.php?recordID=02">Albacete</option>
etc.
etc.
</select>


Cuando le daba al botón de Buscar me aparecía una nueva página: busqueda_filtro.php? de manera que me filtraba el resultado mediante este código:
Código PHP:
mysql_select_db($database_conexion$conexion);
$recordID $_GET['recordID'];
$ID substr("$recordID"02);

$query_DetailRS2 "SELECT * FROM establecimientos WHERE ID LIKE '$recordID%' ORDER BY ID DESC";
$query_limit_DetailRS2 sprintf("%s LIMIT %d, %d"$query_DetailRS2$startRow_DetailRS1$maxRows_DetailRS1);
$DetailRS2 mysql_query($query_limit_DetailRS2$conexion) or die(mysql_error());
$row_DetailRS2 mysql_fetch_assoc($DetailRS2);

echo 
$row_DetailRS2['nombre'];
$row_DetailRS2 mysql_fetch_assoc($DetailRS2); 
os he dejado el código simplificado.... cómo puedo hacer para conseguir que filtre por dos campos diferentes???

Sé que en realidad actualmente filtra por ID, pero me gustaría también filtrar por tipo de establecimiento... Sé que posiblente no tenga que aparecer el enlace a busqueda_filtro.php en cada value del select y que se debería hacer con un botón o algo por el estilo...

o también he pensado que podría hacerse una tabla nueva con un código especial para cada tipo de establecimiento y luego posiblemente enlazarla con la anterior, pero es que no encuentro la manera más fácil de hacerlo... y he intentado varias modificaciones del código y cada vez me sale peor.... por favor necesito ayuda???
  #2 (permalink)  
Antiguo 17/03/2011, 16:49
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.978
Antigüedad: 11 años, 3 meses
Puntos: 2192
Respuesta: buscador que filtre busqueda con listas desplegables

Sin ver tu codigo completo y, en base a como tienes los valores de cada option, supongo que el proceso se inicia mediante javascript, tal vez con onchange o con onsubmit.

Lo mas facil seria que el formulario sea con metodo GET, donde cada campo se agregue en la url:

Código HTML:
Ver original
  1. <form method="get" action="busqueda_filtro.php">
  2. <select name="campo1">
  3.     <option value="0">Selecciona...</option>
  4.     <option value="1">Valor 1</option>
  5. <select name="campo2">
  6.     <option value="0">Selecciona...</option>
  7.     <option value="1">Valor 1</option>
  8. <select name="campo3">
  9.     <option value="0">Selecciona...</option>
  10.     <option value="1">Valor 1</option>
  11. <input type="submit" value="Buscar" />
  12. </form>

De esta forma, recibiras los tres campos:
busqueda_filtro.php?campo1=#;campo2=#;campo3=#

Y todo lo que debes hacer es analizar cada valor para ver que sea correcto y, en ese caso, agregarlo al filtro en la busqueda:

Código PHP:
Ver original
  1. $filtros = array();
  2. if($campo1 != 0) {
  3.     // Supongo que deberas verificar que el valor recibido es correcto y
  4.     // corresponde a un registro en tu base de datos
  5.     $filtros[] = "campo1 = $campo1";
  6. }
  7.  
  8. // Despues de agregar cada campo, complementas tu consulta:
  9. if(count($filtros) > 0) {
  10.     $filtro = ' WHERE ' . implode(' AND ', $filtros);
  11. } else {
  12.     $filtro = '';
  13. }
  14. $consulta = "SELECT * FROM tabla $filtro";
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: desplegables, listas, buscadores
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 15:38.