Foros del Web » Programando para Internet » PHP »

Problema con Búsqueda

Estas en el tema de Problema con Búsqueda en el foro de PHP en Foros del Web. Tengo el siguiente código, que me retorna diferentes resultados de la DB, de acuerdo a los campos seleccionados en una form anterior: Código PHP: $select  ...
  #1 (permalink)  
Antiguo 23/04/2008, 20:22
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta Problema con Búsqueda

Tengo el siguiente código, que me retorna diferentes resultados de la DB, de acuerdo a los campos seleccionados en una form anterior:
Código PHP:
$select sprintf("SELECT 
                     establecimientos.id, 
                     establecimientos.de, 
                     establecimientos.numero, 
                     establecimientos.nombre, 
                     establecimientos.direccion, 
                     establecimientos.tel1, 
                     establecimientos.mail, 
                     
                     tipos.tipo, 

                                     barrios.barrio "
);

        
$from sprintf("FROM 
                     establecimientos 

                LEFT JOIN tipos ON establecimientos.tipo = tipos.id 

                LEFT JOIN barrios ON establecimientos.idbarrio = barrios.id "
);

       
$where = ("WHERE establecimientos.id > 0 ");
       
       if (isset(
$_POST['txtBusqueda']))
               {
              
$where .= ("AND establecimientos.nombre LIKE '%" $_POST['txtBusqueda'] . "%' 
                   OR establecimientos.direccion LIKE '%" 
$_POST['txtBusqueda'] . "%' ");
        }
       
       if (
intval($_POST['selTipo']) > 0)
               {
              
$where .= ("AND establecimientos.tipo = '" intval($_POST['selTipo']) . "'");
        }
    
       if (
intval($_POST['selBarrio']) > 0)
               {
              
$where .= ("AND establecimientos.idbarrio = '" intval($_POST['selBarrio']) . "'");
        }
       
       
$order sprintf("ORDER BY
                     establecimientos.id ASC"
,$connect);

        
//lets make a loop and get all news from the database

    
$query $select.$from.$where.$order;
    
    
$result mysql_query($query);
    
        while(
$myrow mysql_fetch_assoc($result)) 
El tema de la relación con el formulario anda perfecto, el tema es que solamente me toma el primer campo (en este caso txtBusqueda), pero los demás no...

Si borro ese primer campo, y queda como primero el selTipo que es una lista desplegable, funciona solamente esa (O sea que de acá deduzco que anda bien el $where ese, el problema es que me toma solamente el primero que figura...

Cómo puedo hacer para filtrar por los 3? (Y en un futuro, más)

Gracias!!!!
  #2 (permalink)  
Antiguo 24/04/2008, 01:38
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Re: Problema con Búsqueda

¿Has hecho un echo de la consulta generada? En txtBusqueda veo un fallo, te falta unos parentesis, la consulta deberia ser algo como :

Código PHP:
$where .= ("AND (establecimientos.nombre LIKE '%" $_POST['txtBusqueda'] . "%' 
                   OR establecimientos.direccion LIKE '%" 
$_POST['txtBusqueda'] . "%') "); 
Es por la prioridad de operadores, tal como tu lo tenias estabas haciendo:

AND cond1 OR (cond2 AND cond3 AND cond4)

que es basta con que cond1 sea true para ser true.

Primero busca la consulta que de los resultados correctos, y luego busca el codigo para generarla.
  #3 (permalink)  
Antiguo 24/04/2008, 05:09
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Problema con Búsqueda

OK, gracias por tu ayuda, pero esa parte justamente es la que anda bien...

El problema es que los otros campos (Los dos selects para elegir Tipo y Barrio) no me los toma si no los pongo primeros.. O sea, me toma solamente el if del término de búsqueda que pongo primero...

Gracias!
  #4 (permalink)  
Antiguo 24/04/2008, 13:22
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Problema con Búsqueda

Ahhhh....
Ahora entendí...

El problema ese del paréntesis me bloqueaba las demás búsquedas... Ahora anda perfecto todo

Gracias!!!
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 16:49.