Foros del Web » Programando para Internet » PHP »

Consulta a DB con filtro

Estas en el tema de Consulta a DB con filtro en el foro de PHP en Foros del Web. Estimados Necesito ayuda, tengo esta linea que no me esta funcionando bien: Código PHP: if(isset( $_GET [ 'q' ])){         if(isset( $_GET [ 'buscar' ]) &&  $_GET ...
  #1 (permalink)  
Antiguo 06/04/2015, 18:59
 
Fecha de Ingreso: diciembre-2011
Ubicación: Chile
Mensajes: 36
Antigüedad: 12 años, 3 meses
Puntos: 2
Exclamación Consulta a DB con filtro

Estimados

Necesito ayuda, tengo esta linea que no me esta funcionando bien:

Código PHP:
if(isset($_GET['q'])){    
    if(isset(
$_GET['buscar']) && $_GET['buscar'] !=''){    
    
$buscar     $mysqli->real_escape_string(quitar(urldecode(trim($_GET['buscar']))));    
    
$datos        $mysqli->query("SELECT * FROM productos WHERE nombre LIKE '%".$buscar."%' OR meta_key LIKE '%".$buscar."%' AND activo=1 ORDER BY categoria ");
    
$totalPro     $datos->num_rows;    
    }     
} else {
header('location:'.GetDomain().'404.php');} 
El tema esta en la consulta a la Base de Datos, no me filtra los resultados en la parte de "activo=1", probe poniendo comillas, revisando la DDBB (el campo en la tabla es un valor int y solo puede contener 1 valor, 0 ó 1), si le quito " LIKE '%".$buscar."%' OR meta_key LIKE '%".$buscar."%' " me arroja todos los valores que corresponden, por eso no entiendo que puede estar pasando

Alguna ayudita porfa

Atento a comentarios
  #2 (permalink)  
Antiguo 06/04/2015, 19:21
(Desactivado)
 
Fecha de Ingreso: abril-2015
Ubicación: España
Mensajes: 616
Antigüedad: 8 años, 11 meses
Puntos: 74
Respuesta: Consulta a DB con filtro

quizá sea cuestión de poner paréntesis. El AND tiene prioridad sobre el OR. Prueba esto:

Código PHP:
Ver original
  1. $datos = $mysqli->query("SELECT * FROM productos WHERE (nombre LIKE '%".$buscar."%' OR meta_key LIKE '%".$buscar."%') AND activo=1 ORDER BY categoria ");

Etiquetas: mysql, select, 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 07:10.