Foros del Web » Programando para Internet » PHP »

filtrar una busqueda

Estas en el tema de filtrar una busqueda en el foro de PHP en Foros del Web. Hola amigos a ver si me pueden ayudar con esto. Estoy haciendo un buscador que metiendo palabras en un input me busca los resultados buscando ...
  #1 (permalink)  
Antiguo 16/09/2015, 05:39
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
filtrar una busqueda

Hola amigos a ver si me pueden ayudar con esto.
Estoy haciendo un buscador que metiendo palabras en un input me busca los resultados buscando dicha palabra en el titulo y caracteristicas de los productos en la bbdd.

el asunto es que me gustaria que filtrara la busqueda segun la palabra introducida + marcando un checkbox que indique oferta, stock, agotado etc... lo que sea.

pero no me funciona lo que tengo hecho , si pudieran ayudarme les estaria muy agradecido:

Código HTML:
Ver original
  1. <form action="" method="" name="formulario_buscar" id="formulario_buscar">
  2.                        
  3.                             <input type="text" name="buscar" id="buscar" class="input_buscador"  placeholder="Buscar...">
  4.                            
  5.                             <br>
  6.                            
  7.                             <select name="el_nombre_tabla" id="nombre_tabla">  
  8.                                  
  9.                               <option value="tienda_galeria_1">tienda galería 1</option>
  10.                               <option value="tienda_galeria_2">tienda galería 2</option>
  11.                              
  12.                             </select>    
  13.                            
  14.                             <br>
  15.                            
  16.                  <input type="checkbox" name="oferta" value="oferta" id="oferta"> Oferta<br>    
  17.  
  18.                        
  19.                             <input type="submit" name="lupa" id="lupa" value="">
  20.                        
  21.                         </form>



Código PHP:
Ver original
  1. class ClaseDatosBusqueda
  2.        
  3.         {          
  4.             public function DatosBusqueda($nombre_tabla, $buscar, $filtro_oferta)
  5.            
  6.                 {                                      
  7.                         $sql = "SELECT * FROM " . $nombre_tabla . "
  8.                    
  9.                     WHERE
  10.                    
  11.                     titulo like '%".$buscar."%' OR
  12.                    
  13.                     caracteristicas LIKE '%".$buscar."%' AND
  14.  
  15.                     estado LIKE '".$filtro_oferta."'
  16.  
  17.                     ORDER BY visitas DESC";
  18.                    
  19.                    
  20.                    
  21.                     $con = new Conectar();             
  22.                     $link=$con->ConectarBbdd();
  23.                    
  24.                     $res = mysqli_query($link,$sql) or die ('Lo siento pero no selecciona los datos' . mysqli_error($link));
  25.                     return $res;   
  26.                 }
  27.         }
  28.                
  29.  
  30.     $llamada_ClaseDatosBusqueda = new ClaseDatosBusqueda();
  31.  
  32.  
  33.  
  34.  
  35.  
  36.     $buscar = strtolower($_POST['buscar']);
  37.    
  38.     $nombre_tabla = strtolower($_POST['nombre_tabla']);
  39.  
  40.     $filtro_oferta = strtolower($_POST['oferta']);
  41.    
  42.    
  43.  
  44.     $res = $llamada_ClaseDatosBusqueda->DatosBusqueda($nombre_tabla, $buscar, $filtro_oferta);
  45.        
  46.     $total_resultados = mysqli_num_rows($res);


gracias de antemano
  #2 (permalink)  
Antiguo 17/09/2015, 09:07
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
Respuesta: filtrar una busqueda

Lo explicare de otra forma a ver si se ve mas claro lo que me pasa:

Lo de meter una palabra en el input funciona bien , me salen todos los resultados relacionados con la palabra metida.
Lo que no funciona es el checkbox.

Os explico con un ejemplo:
Si en la base de datos hay 20 productos y yo meto una palabra en el buscador, por ejemplo "coches", y me sale un resultado de 10 resultados encontrados, si luego de esos 10 quiero filtrar con el checkbox para que me muestre los de color rojo, imaginen que coches rojos solo hay 3 de entre esos 10 pues no me los muestra.

Me sigue mostrando esos mismos 10 resultados.
Help please
  #3 (permalink)  
Antiguo 18/09/2015, 11:37
Avatar de jpint  
Fecha de Ingreso: junio-2012
Ubicación: Ciudad Real - España
Mensajes: 97
Antigüedad: 11 años, 10 meses
Puntos: 12
Respuesta: filtrar una busqueda

Has probado a usar paréntesis en la SQL?? ¿Estas seguro de que la variable filtro_busqueda te llega con el valor deseado?


Código PHP:
$sql "SELECT * FROM " $nombre_tabla 
                    
    WHERE 
    
        (titulo like '%"
.$buscar."%' OR 
    
        caracteristicas LIKE '%"
.$buscar."%' )

        AND estado LIKE '"
.$filtro_oferta."'

    ORDER BY visitas DESC"


Etiquetas: busqueda, filtrar, formulario, mysql, select, sql, 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




La zona horaria es GMT -6. Ahora son las 19:47.