Foros del Web » Programando para Internet » PHP »

búsqueda desordenada con explode?

Estas en el tema de búsqueda desordenada con explode? en el foro de PHP en Foros del Web. Hola! Aquí mi problema: tengo un buscador senzillo que aparentemente funciona bien. El problema es que en el campo "temas" de la BD, los temas ...
  #1 (permalink)  
Antiguo 28/08/2007, 15:21
 
Fecha de Ingreso: julio-2007
Mensajes: 63
Antigüedad: 16 años, 9 meses
Puntos: 0
búsqueda desordenada con explode?

Hola!

Aquí mi problema: tengo un buscador senzillo que aparentemente funciona bien. El problema es que en el campo "temas" de la BD, los temas estan separados por comas.
Si en el campo tengo: politica, gobierno, reunion
y en el buscador pongo:
politica, gobierno --> me manda la noticia correcta
pero si pongo:
gobierno, politica --> no me aparece ninguna noticia.
Supongo que tengo que usar explode pero no se donde ponerlo dentro de mi codigo.

Código PHP:
<?php
$campo
=$_POST["camp"];
$ssql mysql_query("SELECT * FROM noticias WHERE titulo LIKE '%$campo%' OR temas LIKE '%$campo%'"$link); 
if(
mysql_num_rows$ssql ) == 0) {
 echo 
"No existen resultados"
} else  {
while(
$tabla=mysql_fetch_array($ssql)){
 echo 
"<table width='655' border='1' cellspacing='0' cellpadding='0'>";
 echo 
"<tr><td><strong>Noticia: </strong>".$tabla['titulo']."</td></tr>";
 echo 
"</table>";
 echo
"<br>";
 } 
 }
?>
Alguien me puede echar una mano?
Gracias!
  #2 (permalink)  
Antiguo 28/08/2007, 17:22
Avatar de iandrade  
Fecha de Ingreso: septiembre-2006
Ubicación: Xalapa, Veracruz, MÉXICO.
Mensajes: 171
Antigüedad: 17 años, 7 meses
Puntos: 6
Re: búsqueda desordenada con explode?

Bueno creo que esto te puede ayudar un poco

Código PHP:
<?php
$campo
=$_POST["camp"];
$arrcampo explode(","$campo);
$campo implode("%"$arrcampo);
$ssql mysql_query("SELECT * FROM noticias WHERE titulo LIKE '%$campo%' OR temas LIKE '%$campo%'"$link); 
if(
mysql_num_rows$ssql ) == 0) {
 echo 
"No existen resultados"
} else  {
while(
$tabla=mysql_fetch_array($ssql)){
 echo 
"<table width='655' border='1' cellspacing='0' cellpadding='0'>";
 echo 
"<tr><td><strong>Noticia: </strong>".$tabla['titulo']."</td></tr>";
 echo 
"</table>";
 echo
"<br>";
 } 
 }
?>
Lo que pasa es que en la consulta debes buscar por criterios generales, y si le pasas algo con comas pues buscara el texto que empalme completamente, si reeemplazas las , por % le das posibilidad de buscar los 2 textos d forma independiente.
  #3 (permalink)  
Antiguo 29/08/2007, 06:14
 
Fecha de Ingreso: julio-2007
Mensajes: 63
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: búsqueda desordenada con explode?

Gracias!! pero..sigue sin funcionarme como yo quisiera, aunque tube que añadirle comas a:

Código PHP:
$arrcampo explode(",",$campo);
$campo implode("%",$arrcampo); 
Si tengo: politica, gobierno, reunion
y busco politica, reunion --> me manda la noticia (eso es bueno!)
pero si le pido reunion, politica --> no

Alguien sabe como hacerlo??
  #4 (permalink)  
Antiguo 29/08/2007, 09:08
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: búsqueda desordenada con explode?

Código PHP:
$titulo "(titulo LIKE '%" str_replace(",","%' AND titulo LIKE '%",$campo) . "%')";
$temas "(temas LIKE '%" str_replace(",","%' AND temas LIKE '%",$campo) . "%')";
$ssql = ("SELECT * FROM noticias WHERE $titulo OR $temas",$link); 
  #5 (permalink)  
Antiguo 30/08/2007, 02:48
 
Fecha de Ingreso: julio-2007
Mensajes: 63
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: búsqueda desordenada con explode?

Gracias Seppo!!! Me funciona

Pero curiosamente cuando pongo en segundo, o tercer lugar la primera palabra del campo no encuentra nada.
es decir:
campo temas: casa, calor, coete, pantalón
y busco: coete, casa --> me dice que no existe.

Es esto pq está en primer lugar y no lleva delante ninguna coma?

Gracias de nuevo
  #6 (permalink)  
Antiguo 30/08/2007, 02:54
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
Re: búsqueda desordenada con explode?

Haz una sentencia que si usa coma use replace de otra forma salte pero usa metiendo los resultados en un array.
__________________
Hospedaje Web al mejor costo!
  #7 (permalink)  
Antiguo 30/08/2007, 03:04
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Re: búsqueda desordenada con explode?

Uno de los principios del diseño de BD es que los datos sean "atómicos" (indivisibles). Tu diseño está complicando las consultas simples. Lo mejor sería que saques esos datos en una nueva tabla que relacione las dos tablas "noticias" y "temas". Eso te facilitará el mantenimiento y las consultas.

Un abrazo,
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 11:50.