Foros del Web » Programando para Internet » PHP »

Busqueda

Estas en el tema de Busqueda en el foro de PHP en Foros del Web. Buenas, tengo 2 listas desplegables que los valores q tienen los recojo d la base de datos con: $sql="select tipo from tabla order by tipo ...
  #1 (permalink)  
Antiguo 16/03/2005, 15:23
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 14 años
Puntos: 0
Busqueda

Buenas, tengo 2 listas desplegables que los valores q tienen los recojo d la base de datos con:

$sql="select tipo from tabla order by tipo asc";

y me lo hace bien, hasta ahi perfecto. LA consulta se peude hacer por 1 de las listas o por las 2, los 2 campos son $se1=tema y $se2=autor, el problema es cuando realizo la busqueda por autor, por los 2 campos me hace bien y por tema tb pero autor no. Os pongo el código:

if (!empty($se1) AND !empty($se2))
{
$sql="select * from print where (campo13 like '%$se1%' or campo14 like '%$se1%' or campo15 like '%$se1%') and campo16='$se2'";
}
else
{
if(!empty($se1))
{
$sql="select * from print where campo13 like '%$se1%' or campo14 like '%$se1%' or campo15 like '%$se1%'";
}
else
{
$sql="select * from print where campo16='$se2'";
}
}
GRaCiaS
  #2 (permalink)  
Antiguo 16/03/2005, 18:32
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
... ... en principio hablas de temas, autores y demás.. pero tu código no ayuda a nada en enterder qué es tema, autor ó lo que sea... ... ... mira, por lo pronto quizá esto te sirva:
http://www.forosdelweb.com/f18/hacer-consulta-multiple-267358/
ahí ayude a crear una busqueda en un solo campo donde el criterio a buscar puede venir de varios checkbox... sé que no es exactamente lo que buscas pero espero te sirva de idea de cómo puedes construir tu query sin necesidad de tantos if's... (y sé que se puede optimizar más).

Alguna vez hice algo parecido en donde de dos select's podria crearse una busqueda en dos columnas diferentes (y combinaciones)... por desgracia no lo encuentro... si lo encuentras te lo agradeceré ... como sea, la idea ahí está.... y tu problema casi seguro esta en tu query... pero ayudanos a entender un poco más.

Por lo demás, le mejor de las suertes!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 16/03/2005 a las 18:37
  #3 (permalink)  
Antiguo 16/03/2005, 18:36
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 8 meses
Puntos: 17
probá con lo siguiente. creo q te comiste los % para las variables del campo16 y q pusiste = en vez de like, q buscando un nombre te puede ignorar resultados que querrías mostrar

if (!empty($se1) AND !empty($se2))
{
$sql="select * from print where (campo13 like '%$se1%' or campo14 like '%$se1%' or campo15 like '%$se1%') and campo16 LIKE '%$se2%'";
}
else
{
if(!empty($se1))
{
$sql="select * from print where campo13 like '%$se1%' or campo14 like '%$se1%' or campo15 like '%$se1%'";
}
else
{
$sql="select * from print where campo16 LIKE '%$se2%'";
}
}
  #4 (permalink)  
Antiguo 16/03/2005, 23:15
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 13 años, 6 meses
Puntos: 0
Hola:

Creo que lo que te pasa es lo siguiente:

En realidad nunca está vacía la variable $se2. (Pruébalo con un echo) y por eso no se cumple la condición !empty

Prueb a hacer que te busque por autor con if($se2=="")

Saludos.

Última edición por javifo; 16/03/2005 a las 23:16
  #5 (permalink)  
Antiguo 17/03/2005, 01:47
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 14 años
Puntos: 0
Cuando le hago un echo a $se2 me sale lo recogido en la lista desplegable, pero lo k no me hace bien es la consulta.
  #6 (permalink)  
Antiguo 17/03/2005, 16:23
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 14 años
Puntos: 0
una cosa q no he dicho y q a lo mejor puede afectar es q en la base de datos los autores estan puestos de la siguente forma:

WITZ, KONRAD.

Es decir llevan una coma x medio, no se si afecta. Le puesto como dijo javifo el
if($se2==""), pero sigue sin hacerme bien la busqueda. Por lo menos quiero q me funcione la busqueda de autor, q es la k me fastidia mas, gracias
  #7 (permalink)  
Antiguo 17/03/2005, 16:27
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Iniciado por jam1138
... y tu problema casi seguro esta en tu query... pero ayudanos a entender un poco más....
..... no importan las comas si tu busqueda esta de la forma %algo%; De esa forma encontrará a "algo" de entre cualquier texto.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #8 (permalink)  
Antiguo 17/03/2005, 16:39
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 14 años
Puntos: 0
ahora lo unico q quiero hacer es buscar por autor:

$sql="select * from print where campo16 LIKE '%$se2%'";

le tengo puesto esto pero no me busca los autores, y le tengo antes de eso un echo para $se2 y si tiene datos. algo mu raro :S
  #9 (permalink)  
Antiguo 17/03/2005, 16:42
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
... y esta lo que quieres buscar en el campo???. Prueba con:
Código PHP:
$sql="SELECT * FROM print WHERE campo16 LIKE '%".$se2."%'"
... espero sirva.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #10 (permalink)  
Antiguo 18/03/2005, 01:07
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 14 años
Puntos: 0
si, cuando hago un echo a la variable q tiene el autor me lo muestra, pero no me hace la consulta
  #11 (permalink)  
Antiguo 18/03/2005, 14:38
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
... pero ni con la query que te mencioné???... No te hace la consulta ó no hay resultados???... cosas muuuy diferentes.

Prueba con mysql_num_rows() para ver si lo que pasa es que no hubo resultados.. de ser así el error esta en tu query... igual prueba con el "or die"... algo como: mysql_query($sql) or die ("Error");

Suerte! ....
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #12 (permalink)  
Antiguo 19/03/2005, 07:00
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 14 años
Puntos: 0
lo curioso es que para algunos si me devuelve, pero para otros no, tengo unos 3000 registros, he estado probando y a partir de los autores q empiezan por M en la base de datos no me los busca.
  #13 (permalink)  
Antiguo 19/03/2005, 07:01
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 14 años
Puntos: 0
tb puse lo k me comentastes de

"Prueba con mysql_num_rows() para ver si lo que pasa es que no hubo resultados.. de ser así el error esta en tu query... igual prueba con el "or die"... algo como: mysql_query($sql) or die ("Error");" y no me salen resultados para esos registros, cuando yo en la base de datos los estoy viendo
  #14 (permalink)  
Antiguo 19/03/2005, 18:22
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
!!!!!!

... ya no sé que creer... eso que dices que está y no lo encuentra es practicamente imposible... pero lo dices con tanta seguridad que... no sé que pensar...

... te propongo esto: Puedes haces algo en línea??? una página donde nos muestres solo el contenido del campo que estás trabajando y, obviamente el proceso de busqueda.. eso qu haz echo de imorimir la variable y mostrar el número de resultados... algo sencillo para poder corraborarlo con mis propios ojos... ó, mejor dicho... encontrar tu error (es que no puede ser!!!).

.... Saludos.. y suerte.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #15 (permalink)  
Antiguo 20/03/2005, 06:07
 
Fecha de Ingreso: diciembre-2003
Ubicación: Málaga
Mensajes: 495
Antigüedad: 14 años
Puntos: 0
al final ya lo he solucionado, tuve q cambiar los datos de la base de datos y sustituir los espacios q habia por _, y asi si me realizaba bien las consultas. Muchas gracias por todo
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 13:04.