Foros del Web » Programando para Internet » PHP »

Problemas con Consulta Multiple

Estas en el tema de Problemas con Consulta Multiple en el foro de PHP en Foros del Web. buenas, estoy generando una consulta de la siguiente manera: Código PHP: //recogo las variables desde el formulario.          $catid  =  $_GET [ 'catid' ];      $subcatid  =  $_GET [ 'subcatid' ...
  #1 (permalink)  
Antiguo 25/02/2011, 04:56
Avatar de crissrocca  
Fecha de Ingreso: febrero-2011
Mensajes: 51
Antigüedad: 13 años, 2 meses
Puntos: 1
Problemas con Consulta Multiple

buenas, estoy generando una consulta de la siguiente manera:

Código PHP:
//recogo las variables desde el formulario.
        
$catid $_GET['catid'];
    
$subcatid $_GET['subcatid'];
    
$subcat2id $_GET['subcat2id'];
    
$formato $_GET['formato'];
    
$location $_GET['location'];

//Realizo las consultas y cuento los ID para crear la paginacion en la web
               
$resultados mysql_query("SELECT id FROM phpbazar_ads WHERE publicview=1 AND catid='".$catid."' OR subcatid='".$subcatid."' OR subcat2id='".$subcat2id."' OR formato='".$formato."' OR location='".$location."' ");
        
$total_registros mysql_num_rows($resultados); 
        
$resultados mysql_query("SELECT * FROM phpbazar_ads WHERE publicview=1 AND catid='".$catid."' OR subcatid='".$subcatid."' OR subcat2id='".$subcat2id."' OR formato='".$formato."' OR location='".$location."' ORDER BY precio ASC LIMIT $inicio, $registros");
        
$total_paginas ceil($total_registros $registros);

//Desde aqui si existen datos genero un WHILE para mostrar los datos. 
//...... 
Actualmente la pagina recoge correctamente las variables y si realizo la QUERY con solo un valor, por ejemplo "publicview=1 AND catid='".$catid."'" funciona correctamente.

El problema es que necesito hacerla de tal manera que busque dentro de la tabla todo los campos que coincidad con todos sus valores. Teniendo en cuenta que el cliente puede seleccionar todos los campos en su formulario o a lo mejor solo selecciona 1 valor.

he probado de la siguiente manera:
Código PHP:
$sql "SELECT * FROM phpbazar_ads WHERE publicview=1";
if(
$_GET['catid'] != '')$sql .= " AND catid LIKE '%".$_GET['catid']."%'";
if(
$_GET['subcatid'] != '')$sql .= " AND subcatid LIKE '%".$_GET['subcatid']."%'";
if(
$_GET['subcat2id'] != '')$sql .= " AND subcat2id LIKE '%".$_GET['subcat2id']."%'";
if(
$_GET['formato'] != '')$sql .= " AND formato LIKE '%".$_GET['formato']."%'";
if(
$_GET['location'] != '')$sql .= " AND location LIKE '%".$_GET['location']."%'";
$sql .= "ORDER BY fecha DESC";

$resultados mysql_query($sql);

//y luego el resto del codigo... 
Pero no realiza la accion.

A ver si alguien sabe como hacer la QUERY consultando las variables que han llegado y mostrando los campos que coinciden en todas esas variables.

Gracias!
  #2 (permalink)  
Antiguo 25/02/2011, 08:21
Avatar de jhonmelguizo  
Fecha de Ingreso: enero-2008
Ubicación: Medellín - Colombia
Mensajes: 264
Antigüedad: 16 años, 3 meses
Puntos: 6
Información Respuesta: Problemas con Consulta Multiple

Hola amigo,

Imprime lo que contiene la variable $sql

echo($sql);

lo que te muestre en el browser, cójelo y llévalo a la consola del motor base de datos, o si utilizas alguna herramienta visual para base de datos que te permita ejecutar querys, lo ejecutas allá y observa el resultado del motor, a ver qué errores te arroja y en qué líneas.

Saludos...
  #3 (permalink)  
Antiguo 26/02/2011, 07:23
Avatar de crissrocca  
Fecha de Ingreso: febrero-2011
Mensajes: 51
Antigüedad: 13 años, 2 meses
Puntos: 1
De acuerdo Respuesta: Problemas con Consulta Multiple

muchas gracias jhonmelguizo, al final visualizando la query $sql he visto que realmente el error estaba en que uno de los campos pasaba siempre el valor "0", lo he cambiado para que lo pase como valor "null" en caso de no seleccionarlo y listo. funciona perfecto

Etiquetas: Ninguno
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 18:18.