Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

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
7752
Visitas
4
Resp
Por alber hace 104 meses
Administrador
Respuesta #1
Hola, está súper bueno el código, me ayudó demasiado.
1
Puntos
Por Rob hace 103 meses
Principiante
Respuesta #2
me alegro de que te sirva Rob ;)
0
Puntos
Por alber hace 103 meses
Administrador
Respuesta #3
Muchas Gracias alber, me fue muy útil el código.
1
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:
<?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
Por Agustin hace 61 meses
Principiante
Compartir en facebook
Compartir en twitter
Compartir
Para comentar Inicia sesión o Registrate