Foros del Web » Programando para Internet » PHP »

problemas al buscar datos en bd

Estas en el tema de problemas al buscar datos en bd en el foro de PHP en Foros del Web. Hola: Tengo un select con 4 campos: autor, titulo, materia y descriptores. Cuando los tenia con if funcionaba, pero no buscaba con los operadores lógicos ...
  #1 (permalink)  
Antiguo 21/06/2004, 17:10
 
Fecha de Ingreso: agosto-2003
Mensajes: 33
Antigüedad: 20 años, 6 meses
Puntos: 0
Pregunta problemas al buscar datos en bd

Hola:

Tengo un select con 4 campos: autor, titulo, materia y descriptores.

Cuando los tenia con if funcionaba, pero no buscaba con los operadores
lógicos AND Y OR y agregue los pasos como se dice en varios link
donde han hecho las mismas preguntas pero solo lo quiero que busque
así por el campo titulo, pero resulta que cuando
busco empresa AND educación no me encuentra ningún registro
pero cuando busco por una sola palabra si me lo despliega

Ya revise varios link que hablan del mismo tema , pero no logre resolver
el problema, a lo mejor creo que no he entendido bien,
deseo que me expliquen. Ayuda por favor

Que estoy haciendo mal, cual es el error o me falta algo que no he
agregado alguien que me ayude y que resolvió este problema y como lo hizo

Gracias desde ya por la ayuda

Código PHP:
$buscador=$_GET['buscar'];
$seccion=$_GET['sec'];

//separacion de palabras con espacio
$separar_palabras=explode(" ",$buscador);
//contar el total de palabras de la cadena
$total_palabras=count($separar_palabras)-1;
//recorrer el array generado por el explode
for ($indice=0;$indice<=$total_palabras;$indice++){
$secuencia_buscar="titulo like '%".$separar_palabras[$indice]."%'";
//se mira si es la ultima palabra a poner, en tal caso no se pone el AND
if ($indice<$total_palabras){
$operador=" AND ";
}else{
$operador="";
}
//se concetena la sentencia anterior con el comando del operador
$condicion.=$secuencia_buscar.$operador;
}

if (
$buscador){
if (
$seccion=="autor"){
$condicion.="autor like '%".$buscador."%' order by titulo";
}
else if (
$seccion=="materia"){
$condicion.="materia like '%".$buscador."%' order by titulo";
}
else if (
$seccion=="descriptores"){
$condicion.="descriptores like '%".$buscador."%' order by titulo";
}
}
$sql="select * from resum where ".$condicion." limit $inicial,$cantidad";
$cad=mysql_db_query($base,$sql) or die (mysql_error()); 
Gracias nuevamente
__________________
Patricia
  #2 (permalink)  
Antiguo 23/06/2004, 20:17
 
Fecha de Ingreso: agosto-2003
Mensajes: 33
Antigüedad: 20 años, 6 meses
Puntos: 0
Al cambiar el código de la siguiente manera siempre me funciona
cuando busco por una sola palabra, pero sigue sin buscar por dos
palabras: WEB AND DISEÑO, no hace esta clase de búsqueda.

Que me ayuda alguien que le haya funcionado la búsqueda de esta
Manera. Que me diga como se hace. Yo creo que le hace falta alguna
instrucción.

Muchas gracias por la ayuda

Código PHP:
//separacion de palabras con espacio
$separar_palabras=explode(" ",$buscador);
//contar el total de palabras de la cadena
$total_palabras=count($separar_palabras)-1;
//recorrer el array generado por el explode
for ($indice=0;$indice<=$total_palabras;$indice++){
if (
$seccion=="titulo"){
$secuencia_buscar=" titulo like '%".$separar_palabras[$indice]."%'";
}
if (
$seccion=="autor"){
$secuencia_buscar=" autor like '%".$separar_palabras[$indice]."%'";
}
if (
$seccion=="materia"){
$secuencia_buscar=" materia like '%".$separar_palabras[$indice]."%'";
}
if (
$seccion=="descriptores"){
$secuencia_buscar=" descriptores like '%".$separar_palabras[$indice]."%'";
}
//se mira si es la ultima palabra a poner, en tal caso no se pone el AND
if ($indice<$total_palabras){
$operador=" AND ";
}else{
$operador="";
}
//se concetena la sentencia anterior con el comando del operador
$condicion.=$secuencia_buscar.$operador;
}

$sql="select * from resum where".$condicion." limit $inicial,$cantidad";
$cad=mysql_db_query($base,$sql) or die (mysql_error()); 
__________________
Patricia
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 08:45.