Foros del Web » Programando para Internet » PHP »

error en consulta

Estas en el tema de error en consulta en el foro de PHP en Foros del Web. Hola! tengo dos formularios de busqueda en dos páginas distintas, uno con un campo simple y otro de busqueda avanzada que hacen una consulta a ...
  #1 (permalink)  
Antiguo 18/10/2008, 11:31
 
Fecha de Ingreso: junio-2008
Mensajes: 291
Antigüedad: 15 años, 9 meses
Puntos: 9
Exclamación error en consulta

Hola! tengo dos formularios de busqueda en dos páginas distintas, uno con un campo simple y otro de busqueda avanzada que hacen una consulta a la misma pagina php. El problema que tengo es en la consulta de busqueda avanzada. Cuando busco por coleccion me aparecen todos los resultados de toda la bd. Este es mi código. Os gradecería la ayuda porque es muy pero que muy urgente. Gracias a todos.

Código PHP:
if ($clave<>''){  


 
   
$trozos=explode(" ",$clave); 
   
$numero=count($trozos); 
  if (
$numero==1)
   { 
 
   
$buscar="SELECT * FROM $db WHERE NOMB LIKE '%$clave%' OR AUTOR LIKE '%$clave%' OR TEMA LIKE '%$clave%' OR COLECCION LIKE '%$clave%' OR EDITORIAL LIKE '%$clave%' OR LIBRE LIKE '%$clave%' OR OBSERVA LIKE '%$clave%' order by $ordenarpor $orden"
  }
  elseif (
$numero>1)
   { 
 
   
$buscar"SELECT * , MATCH (NOMB, AUTOR, TEMA, COLECCION, EDITORIAL, LIBRE, OBSERVA) AGAINST ('$clave') AS Score FROM vells WHERE MATCH (NOMB, AUTOR, TEMA, COLECCION, EDITORIAL, LIBRE, OBSERVA) AGAINST ('$clave') ORDER BY Score DESC ";
}

}elseif (!
$clave<>''){ 
 
$buscar "SELECT * FROM $db WHERE  AUTOR LIKE '%$AUTOR%' AND TEMA LIKE '%$TEMA%' AND LIBRE LIKE '%$LIBRE%' AND NOMB LIKE '%$NOMB%' OR TEMA LIKE '%$TEMA%' AND (AUTOR LIKE '%$AUTOR%' AND LIBRE LIKE '%$LIBRE%' AND NOMB LIKE '%$NOMB%') OR NOMB LIKE '%$NOMB%' AND (AUTOR LIKE '%$AUTOR%' AND LIBRE LIKE '%$LIBRE%' AND TEMA LIKE '%$TEMA%') order by $ordenarpor $orden";
 } 
  #2 (permalink)  
Antiguo 18/10/2008, 11:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: error en consulta

adivinemos.....

¿cual es la consulta que te falla?
(no hay modo de que expliques que parte hace que)

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 18/10/2008, 11:44
 
Fecha de Ingreso: junio-2008
Mensajes: 291
Antigüedad: 15 años, 9 meses
Puntos: 9
Respuesta: error en consulta

Hola! Perdón..me explico un poco más. Gracias

Código PHP:
if ($clave<>''){  


 
   
$trozos=explode(" ",$clave); 
   
$numero=count($trozos); 
si es del formulario con un solo campo y con una palabra
  
if ($numero==1)    
   { 
 
   
$buscar="SELECT * FROM $db WHERE NOMB LIKE '%$clave%' OR AUTOR LIKE '%$clave%' OR TEMA LIKE '%$clave%' OR COLECCION LIKE '%$clave%' OR EDITORIAL LIKE '%$clave%' OR LIBRE LIKE '%$clave%' OR OBSERVA LIKE '%$clave%' order by $ordenarpor $orden"
  }
 
si es del formulario con un solo campo y con más de una palabra
  
elseif ($numero>1)
   { 
 
   
$buscar"SELECT * , MATCH (NOMB, AUTOR, TEMA, COLECCION, EDITORIAL, LIBRE, OBSERVA) AGAINST ('$clave') AS Score FROM vells WHERE MATCH (NOMB, AUTOR, TEMA, COLECCION, EDITORIAL, LIBRE, OBSERVA) AGAINST ('$clave') ORDER BY Score DESC ";
}

}
si es del formulario de busqueda avanzada
elseif (!$clave<>''){ 
 
$buscar "SELECT * FROM $db WHERE  AUTOR LIKE '%$AUTOR%' AND TEMA LIKE '%$TEMA%' AND LIBRE LIKE '%$LIBRE%' AND NOMB LIKE '%$NOMB%' OR TEMA LIKE '%$TEMA%' AND (AUTOR LIKE '%$AUTOR%' AND LIBRE LIKE '%$LIBRE%' AND NOMB LIKE '%$NOMB%') OR NOMB LIKE '%$NOMB%' AND (AUTOR LIKE '%$AUTOR%' AND LIBRE LIKE '%$LIBRE%' AND TEMA LIKE '%$TEMA%') order by $ordenarpor $orden";
 } 

Última edición por charlyta; 18/10/2008 a las 11:46 Razón: error
  #4 (permalink)  
Antiguo 18/10/2008, 12:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: error en consulta

imprime $buscar para ver que consulta se genera...

si un LIKE va vacío... por eso arroja todos los valores, ojo!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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 06:20.