BUSCADOR con FILTROS php mysql

Php - Mysql - Html


26/08/2022


BUSCADOR con FILTROS php mysql

Descripción

EL BUSCADOR QUE TODOS QUIEREN ❤️ este el el mejor buscador para tu web que todos quieren tener implementado. No te pierdas detalle y se el primero en insertar este buscador con filtros de búsqueda en tu página web

 

A continuación os doy los pasos que teneis que seguir para poder tener un filtro de busqueda funcionando en vuestra página web.
Lo primero tener insertada vuestra conexión correctamente y para ello os dejo como seria la configuración.
 

 

  //Conexion

 

  $servidor = "dirección de mi servidor";

  $usuario = "mi usuario";

  $password = "contraseña";

  $nombreBD = "base de datos";

  $conexion = new mysqli($servidor, $usuario, $password, $nombreBD);

  if ($conexion->connect_error){

  die("La conexión ha fallado " . $conexion->connect_error);

  //echo "algo va mal";

  }else{

  //    echo "Todo ha salido bien";

  }

 

Seguidamente vamos a declarar las variables que vamos a utilizar en nuestro filtro de busqueda para nuesta página web y para ello insertadremos las siguientes líneas.

 

if (!isset($_POST['buscar'])){$_POST['buscar'] = '';}

if (!isset($_POST['buscadepartamento'])){$_POST['buscadepartamento'] = '';}

if (!isset($_POST['color'])){$_POST['color'] = '';}

if (!isset($_POST['buscafechadesde'])){$_POST['buscafechadesde'] = '';}

if (!isset($_POST['buscafechahasta'])){$_POST['buscafechahasta'] = '';}

if (!isset($_POST['buscapreciodesde'])){$_POST['buscapreciodesde'] = '';}

if (!isset($_POST['buscapreciohasta'])){$_POST['buscapreciohasta'] = '';}

if (!isset($_POST["orden"])){$_POST["orden"] = '';}

 

 

Esto tenemos que realizarlo para que no salte ningún error en el código si en algún momento dichas variables están vacias, si fuese el caso entonces saltaría un error en el filtro de busqueda ya que el campo no esta completo.
Asi que lo que estamos indicandole al código es que si por ejemplo la variable buscar esta vacia entonces sea igual a nada.

El siguiente paso es que cada uno tengamos ya desarrollada nuestra página con nuestro buscador y tabla con filtros para poder aplicar el código del filtro de busqueda.
Si no lo teneis no os preocupeis que al final del tutorial teneis la descarga completa del filtro de busqueda para que podais incluirlo en vuestra página web.

Lo primero que haremos para comenzar con nuestro filtro de busqueda para nuestra página web es un explode a buscar para recoger una por una cada palabra que esta buscando.

 

 $aKeyword = explode(" ", $_POST['buscar']);

 

Ahora comprobaremos  algún campo del filtro de busqueda esta completo, si todos están vacios entonces realizaremos una busqueda normal pero si no es asi entonces aplicaremos las funciones del filtro de busqueda.

 

     if ($_POST["buscar"] == '' AND $_POST['buscadepartamento'] == '' AND $_POST['color'] == '' AND $_POST['buscafechadesde'] == '' AND $_POST['buscafechahasta'] == ''AND $_POST['buscapreciodesde'] == '' AND $_POST['buscapreciohasta'] == ''){

                $query ="SELECT * FROM datos_usuario ";

        }else{

 

Como veis primero compruebo si estan los campos vacios.
Si no es asi entonces primero realizo una consulta más avanzada
 

 

                $query ="SELECT * FROM datos_usuario ";

        if ($_POST["buscar"] != '' ){

                $query .= "WHERE (nombre LIKE LOWER('%".$aKeyword[0]."%') OR apellidos LIKE LOWER('%".$aKeyword[0]."%')) ";

        for($i = 1; $i < count($aKeyword); $i++) {

           if(!empty($aKeyword[$i])) {

               $query .= " OR nombre LIKE '%" . $aKeyword[$i] . "%' OR apellidos LIKE '%" . $aKeyword[$i] . "%'";

           }

         }

        }

 

Como veis en esta consulta estoy realizando un for para que haga una busqueda palabra por palabra.
Seguidamente le inyectamos el filtro de busqueda y eso lo realizamos en la variable $query .=
Lo haremos con el siguiente código
 

 

         if ($_POST["buscadepartamento"] != '' ){

                $query .= " AND departamento = '".$_POST['buscadepartamento']."' ";

         }

 

         if ($_POST["buscafechadesde"] != '' ){

                $query .= " AND fecha BETWEEN '".$_POST["buscafechadesde"]."' AND '".$_POST["buscafechahasta"]."' ";

         }

 

         if ( $_POST['buscapreciodesde'] != '' ){

                $query .= " AND precio >= '".$_POST['buscapreciodesde']."' ";

         }

 

         if ( $_POST['buscapreciohasta'] != '' ){

                $query .= " AND precio <= '".$_POST['buscapreciohasta']."' ";

         }

               

         if ($_POST["color"] != '' ){

                $query .= " AND color = '".$_POST["color"]."' ";

         }

 

         if ($_POST["orden"] == '1' ){

                $query .= " ORDER BY nombre ASC ";

         }

 

         if ($_POST["orden"] == '2' ){

                $query .= " ORDER BY departamento ASC ";

         }

 

         if ($_POST["orden"] == '3' ){

                $query .= " ORDER BY color ASC ";

         }

 

         if ($_POST["orden"] == '4' ){

                $query .= " ORDER BY precio ASC ";

         }

 

         if ($_POST["orden"] == '5' ){

                $query .= " ORDER BY precio DESC ";

         }

 

         if ($_POST["orden"] == '6' ){

                $query .= " ORDER BY fecha ASC ";

         }

 

         if ($_POST["orden"] == '7' ){

                $query .= " ORDER BY fecha DESC ";

         }

}

 

Lo que estoy realizando es primero preguntar si la variable esta vacia y si no es asi entonces incluya en la busqueda el apartado especificado ya sea para fecha, orden, precio.
Y ya solo nos quedaria mostrar los resultados que haremos con un WHILE de la siguiente forma

 

            <?php While($rowSql = $sql->fetch_assoc()) {   ?>

 

                        <tr>

                        <td style="text-align: center;"><?php echo $rowSql["nombre"]; ?></td>

                        <td style="text-align: center;"><?php echo $rowSql["departamento"]; ?></td>

                        <td style="text-align: center;"><?php echo $rowSql["color"]; ?></td>

                        <td style="text-align: center;"><?php echo $rowSql["precio"]; ?> €</td>

                        <td style=" text-align: center;"><?php echo $rowSql["fecha"]; ?></td>

                        </tr>

               

               <?php } ?>

 

Descarga el contenido para que te sea mucho más fácil insertar un filtro de busqueda en tu tienda online o página web.

DERCARGAR

 


© Copyright. Todos los derechos reservados.