Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] buscador

Estas en el tema de buscador en el foro de PHP en Foros del Web. ayuda, tengo 2 tablas en mysql una se llama usuario y otra se llama productos. Tienen un campo en comun que es el ID. Programe ...
  #1 (permalink)  
Antiguo 21/02/2014, 09:57
 
Fecha de Ingreso: enero-2014
Ubicación: Chile
Mensajes: 11
Antigüedad: 10 años, 3 meses
Puntos: 1
buscador

ayuda, tengo 2 tablas en mysql una se llama usuario y otra se llama productos.
Tienen un campo en comun que es el ID.
Programe un buscador que busca dentro de la tabla productos en 3 campos de esta tabla, y además en los resultados de la búsqueda también se muestran datos de la tabla usuario.

El problema es que cuando el buscador encuentra más de 1 resultado en la muestra omite los datos de la tabla usuario, es decir no los arroja, y cuando encuentra 1 solo resultado ahí si funciona bien y muestra los datos de ambas tablas.

Acá dejo el código a ver si alguien me ayuda, gracias.

tabla usuario: ID, nombre, usuario, region, pass, mail
tabla productos: ID, id_usuario, categoria, subcategoria, titulo, subtitulo, descripcion

Código PHP:
<?
    
include("includes/conexion.php"); 
  
        if (
$_GET["s"]<>'')
    {
        
$trozos=explode(" ",$_GET["s"]);
        
$numero=count($trozos);
        if (
$numero==1
        {
            
$cadbusca="SELECT * FROM productos INNER JOIN usuario ON (productos.id_usuario=usuario.ID) WHERE 
            titulo LIKE '%"
.$_GET["s"]."%' 
            OR subtitulo LIKE '%"
.$_GET["s"]."%' 
            OR descripcion LIKE '%"
.$_GET["s"]."%'";
        }
        elseif (
$numero>1
        {
         
            
$cadbusca="SELECT * , 
            MATCH ( titulo, subtitulo, descripcion ) 
            AGAINST ('%"
.$_GET["s"]."%' IN BOOLEAN MODE) 
            AS Score FROM productos 
            WHERE MATCH ( titulo, subtitulo, descripcion ) 
            AGAINST ('%"
.$_GET["s"]."%' IN BOOLEAN MODE) ORDER BY Score DESC LIMIT 0,30;";
        }
        
$res=mysql_query($cadbusca) or die( mysql_error() );
        
$i=1;
        while (
$reg mysql_fetch_array($res))
        {
?>

<!--aca los datos de la tabla productos--->
 

<?php echo "".$_GET["s"]."","<b>".$_GET["s"]."</b>",$reg["titulo"];?> 
<?php echo "".$_GET["s"]."","<b>".$_GET["s"]."</b>",$reg["subtitulo"];?> 
<?php echo "".$_GET["s"]."","<b>".$_GET["s"]."</b>",$reg["categoria"];?> 
<?php echo "".$_GET["s"]."","<b>".$_GET["s"]."</b>",$reg["subcategoria"];?> 
<?php echo "".$_GET["s"]."","<b>".$_GET["s"]."</b>",$reg["descripcion"];?>

<!--aca los datos de la tabla usuario--->
 
<?php echo "".$_GET["s"]."","<b>".$_GET["s"]."</b>",$reg["nombre"];?> 
<?php echo "".$_GET["s"]."","<b>".$_GET["s"]."</b>",$reg["usuario"];?> 
<?php echo "".$_GET["s"]."","<b>".$_GET["s"]."</b>",$reg["region"];?> 
<?php echo "".$_GET["s"]."","<b>".$_GET["s"]."</b>",$reg["mail"];?>
  #2 (permalink)  
Antiguo 21/02/2014, 10:21
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: buscador

Buenas, en tu segunda consulta:

Código PHP:
$cadbusca="SELECT * ,  
            MATCH ( titulo, subtitulo, descripcion )  
            AGAINST ('%"
.$_GET["s"]."%' IN BOOLEAN MODE)  
            AS Score FROM productos  
            WHERE MATCH ( titulo, subtitulo, descripcion )  
            AGAINST ('%"
.$_GET["s"]."%' IN BOOLEAN MODE) ORDER BY Score DESC LIMIT 0,30;"
No haces el INNER JOIN, que SI haces en la primera:
Código PHP:
$cadbusca="SELECT * FROM productos INNER JOIN usuario ON (productos.id_usuario=usuario.ID) WHERE  
            titulo LIKE '%"
.$_GET["s"]."%'  
            OR subtitulo LIKE '%"
.$_GET["s"]."%'  
            OR descripcion LIKE '%"
.$_GET["s"]."%'"
Ahí tienes el fallo ;)
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 21/02/2014, 15:04
 
Fecha de Ingreso: enero-2014
Ubicación: Chile
Mensajes: 11
Antigüedad: 10 años, 3 meses
Puntos: 1
Respuesta: buscador

Deberas! No me había fijado..
En que parte debería integrarlo?

Gracias!
  #4 (permalink)  
Antiguo 21/02/2014, 15:20
 
Fecha de Ingreso: enero-2014
Ubicación: Chile
Mensajes: 11
Antigüedad: 10 años, 3 meses
Puntos: 1
Respuesta: buscador

solucionado, el codigo quedaría así en la segunda parte para alguien más que lo necesite.

Código PHP:
          $cadbusca="SELECT * , 
            MATCH ( titulo, subtitulo, descripcion ) 
            AGAINST ('%"
.$_GET["s"]."%' IN BOOLEAN MODE) 
            AS Score FROM productos INNER JOIN usuario ON (productos.id_usuario=usuario.ID) 
            WHERE MATCH ( titulo, subtitulo, descripcion ) 
            AGAINST ('%"
.$_GET["s"]."%' IN BOOLEAN MODE) ORDER BY Score DESC LIMIT 0,30;";
        }
        
$res=mysql_query($cadbusca) or die( mysql_error() );
        
$i=1;
        while (
$reg mysql_fetch_array($res))
        { 

Etiquetas: buscador, mysql, select, sql, tabla
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 23:28.