Buscador múltiple avanzado en php
En el siguiente ejemplo podemos ver un buscador múltiple avanzado en php que ejecuta una consulta dinámica a la base de datos según los campos del formulario seleccionados:
<?php //Creamos las variables $consulta=''; $parametros=''; //Creamos el primer parametro en caso de que exista if ($_POST['columna1']!='') $parametros.="columna1=".$_POST['columna1'].'&'; //Creamos el segundo parametro en caso de que exista if ($_POST['columna2']!='') $parametros.="columna2=".$_POST['columna2'].'&'; //Dividimos los parametros $porciones=explode('&',$parametros); //Contamos la cantidad de parametros $cantidad=count($porciones)-1; //Si hay mas de 1 parametro los unimos con AND para mysql if ($cantidad>1){ for ($i=0; $i < $cantidad; $i++) { $consulta.= $porciones[$i].' AND '; } } else { $consulta.= $porciones[0].' AND '; } //Eliminamos el AND del final $consulta = substr ($consulta, 0, strlen($consulta) - 4); //Obtenemos algo como columna1=dato1 AND columna2=dato2 echo $consulta.'<br><br>'; //Pasamos los parametros dinámicos de $consulta despues del WHERE $query_Consulta = sprintf("SELECT * FROM tabla WHERE $consulta"); ?>
5
Puntos
Puntos
7752
Visitas
Visitas
4
Resp
Resp
Por alber hace 104 meses
Administrador
Respuesta #1
Hola, está súper bueno el código, me ayudó demasiado.
1
Puntos
Puntos
Por Rob hace 103 meses
Principiante
Respuesta #2
me alegro de que te sirva Rob ;)
0
Puntos
Puntos
Por alber hace 103 meses
Administrador
Respuesta #3
Muchas Gracias alber, me fue muy útil el código.
1
Puntos
Puntos
Por Rover Jonathan hace 96 meses
Principiante
Respuesta #4
Quise implementar este filtrado a los resultados de busqueda (Buscador hecho con el del cursos de web responsive) y me arroja el siguiente erro:
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\Empleos\empleos\resultados.php on line 57
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\Empleos\empleos\resultados.php on line 58
Codigo:
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\Empleos\empleos\resultados.php on line 57
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\Empleos\empleos\resultados.php on line 58
Codigo:
<?php require_once('conexion.php'); $menu='resultados'; //Creamos las variables $consultados=''; $parametros=''; //Creamos el primer parametro en caso de que exista if (isset($_POST['xcategoria'])) { if ($_POST['xcategoria']!='') $parametros.="categoria=".$_POST['xcategoria'].'&'; } //Creamos el segundo parametro en caso de que exista if (isset($_POST['xpuesto'])) { if ($_POST['xpuesto']!='') $parametros.="puesto=".$_POST['xpuesto'].'&'; } //Dividimos los parametros $porciones=explode('&',$parametros); //Contamos la cant de parametros $cant=count($porciones)-1; //Si hay mas de 1 parametro los unimos con AND para mysql if ($cant>1){ for ($i=0; $i < $cant; $i++) { $consultados.= $porciones[$i].' AND '; } } else { $consultados.= $porciones[0].' AND '; } //Eliminamos el AND del final $consultados = substr ($consultados, 0, strlen($consultados) - 4); //Obtenemos algo como columna1=dato1 AND columna2=dato2 $cadena=trim($_GET['buscar']); $consulta=''; $partes=explode(' ',$cadena); $cantidad=count($partes); for ($i=0; $i < $cantidad; $i++) { $consulta.= 'ciudad LIKE '.formatearcadena('%'.$partes[$i].'%','text').' AND '; } $consulta=substr($consulta,0,-4); //Seleccionar tabla m_posts $accion_post="SELECT * FROM e_posts WHERE $consulta AND $consultados ORDER BY visitas DESC"; $consulta_post=mysqli_query($conexion,$accion_post); $datos_post=mysqli_fetch_assoc($consulta_post); $cantidad_post=mysqli_num_rows($consulta_post); ?>Espero podamos encontrarle una solución y desde ya muchas gracias
0
Puntos
Puntos
Por Agustin hace 61 meses
Principiante