Foros del Web » Programando para Internet » PHP »

consulta condicional de acuerdo a lista desplegable

Estas en el tema de consulta condicional de acuerdo a lista desplegable en el foro de PHP en Foros del Web. tengo el paginador de Jpinedo mas unos detallitos q cambie para una busqueda de propiedades, la cosa es que kisiera hacer una consulta basada en ...
  #1 (permalink)  
Antiguo 30/07/2006, 21:12
Avatar de ramon92  
Fecha de Ingreso: enero-2004
Ubicación: Lima
Mensajes: 135
Antigüedad: 20 años, 3 meses
Puntos: 8
consulta condicional de acuerdo a lista desplegable

tengo el paginador de Jpinedo mas unos detallitos q cambie para una busqueda de propiedades, la cosa es que kisiera hacer una consulta basada en lo que el usuario seleccione desde las listas desplegables (7 listas, tipo, precio, dormitorios, etc) que tengo en el formulario de busqueda.

ya coloque yas variables del form:

$tipo = $_POST[tipo];
$estado = $_POST[estado];
$distrito = $_POST[distrito];
$precio = $_POST[precio];
$area = $_POST[area];
$dormitorios = $_POST[dormitorios];

ahora quisiera saber como elaborarlo con la consulta SQL para decirle por ejemplo: si solo selecciono distrito, buscame todos los registros cuyo distrito sea igual a $distrito, pero si selecciono 2 o 3 items de las listas que me busque tambien por esos campos

Código PHP:
<?
// Conectamos a la Base de Datos
$Conn mysql_connect("locallhost""xxxxx""xxxx");
mysql_select_db("xxxxxx");
// Obtenemos la página actual, por el método que más nos guste
// Por defecto, la página se propaga por la variable $pagina
$pagina $HTTP_GET_VARS["pagina"];
// Incluimos la Clase Paginado
include("class.paginado.php");
$rs = new paginado($Conn); // instanciamos un objeto
$rs->pagina($pagina); // Le indicamos en que página estamos - 1 por defecto
$rs->porPagina(6); // Le decimos cuantos registros por página queremos - 20 por defecto
$rs->propagar("forum"); // Le decimos las variables que queremos propagar en los links
// variables del formulario
$tipo $_POST[tipo];
$estado $_POST[estado];
$distrito $_POST[distrito];
$precio $_POST[precio];
$area $_POST[area];
$dormitorios $_POST[dormitorios];
//fin de variables
if(!$rs->query("SELECT * FROM inmuebles")) // Y ejecutamos nuestra consulta.
{    
    die( 
$rs->error() ); // Si Query devolvió falso, hubo un error y lo mostramos.
}
echo 
"Mostrando ".$rs->desde()." - ".$rs->hasta()." de un total de ".$rs->total()."<br>";
// Recorremos todos los resultados y los mostramos.
echo"<table width=520 border=0 bgcolor='#ffffff'>";
while(
$row $rs->obtenerArray())
{    
                 echo 
"<tr width=520>"// borra
              
echo "<td width=80 height=80><img src=\"carpeta/".$row['foto']."\"></td>";
              echo 
"<td width=25 height=80></td>";
              echo 
"<td width=435 height=80>";
              echo 
"<div class=paginador_titulo>".$row["nombre"]."</div>";
              echo 
"<div class=paginador_direccion>".$row["ubicacion"]."</div>";
              echo 
"<div class=paginador_direccion>".$row["distrito"]."</div>";
              echo 
"<div class=paginador_link><a href=$row[enlace]>[ mas informaci&oacute;n ]</a></div>";
              echo 
"</td>";
                echo 
"</tr>";
              echo 
"<tr align=left valign=top>";
              echo 
"<td height=4 colspan=3 align=left valign=top><hr></td>";
              echo 
"</tr>";
}
 
// while                
        
echo "</table>";
// Finalmente mostramos los medios para la navegación entre los resultados.
echo $rs->anterior()." [ ".$rs->nroPaginas()." ] ".$rs->siguiente();
?>
__________________
Hosting Peru.ME | Hosting para Empresas
Agencia de Publicidad Online (Enjoy the difference)
  #2 (permalink)  
Antiguo 31/07/2006, 08:36
 
Fecha de Ingreso: junio-2006
Mensajes: 87
Antigüedad: 17 años, 9 meses
Puntos: 0
Código PHP:
$SQL='SELECT campos FROM tabla WHERE Cond';

if (!empty(
$area)) $SQL.=" AND Area LIKE '%$area%' " 
o si ya tienes el codigo exacto
if (!empty($area)) $SQL.=" AND Area = '%$area%' "
  #3 (permalink)  
Antiguo 31/07/2006, 13:14
Avatar de ramon92  
Fecha de Ingreso: enero-2004
Ubicación: Lima
Mensajes: 135
Antigüedad: 20 años, 3 meses
Puntos: 8
Hola seanchan, me podrias explicar un poco mas detallado, lo que pasa en que recien estoy empezando con esto del SQL.

En el codigo del paginador esta la siguientes lineas

Código PHP:
if(!$rs->query("SELECT * FROM inmuebles")) // Y ejecutamos nuestra consulta. 
{     
    die( 
$rs->error() ); // Si Query devolvió falso, hubo un error y lo mostramos. 

Tu mencionas que realize esto? (corrigeme porfa los errores)

Código PHP:
if(!$rs->query("SELECT * FROM inmuebles WHERE if (!empty($area)) $SQL.=" AND Area LIKE '%$area%' " if (!empty($tipo)) $SQL.=" AND tipo LIKE '%$tipo%' "  if (!empty($estado)) $SQL.=" AND estado LIKE '%$estado%' "   if (!empty($distrito)) $SQL.=" AND distrito LIKE '%$distrito%' "  if (!empty($precio)) $SQL.=" AND precio LIKE '%$precio%' " if (!empty($area)) $SQL.=" AND area LIKE '%$area%' "  if (!empty($dormitorios)) $SQL.=" AND dormitorios LIKE '%$dormitorios%' "  ")) // Y ejecutamos nuestra consulta. 
{     
    die( 
$rs->error() ); // Si Query devolvió falso, hubo un error y lo mostramos. 

Pero me vota error
__________________
Hosting Peru.ME | Hosting para Empresas
Agencia de Publicidad Online (Enjoy the difference)
  #4 (permalink)  
Antiguo 02/08/2006, 09:55
 
Fecha de Ingreso: junio-2006
Mensajes: 87
Antigüedad: 17 años, 9 meses
Puntos: 0
Tiene que ser algo asi:
Código PHP:
$SQL="SELECT * FROM inmuebles WHERE (1=1)";
if (!empty(
$area)) $SQL.=" AND Area LIKE '%$area%' ";
if (!empty(
$tipo)) $SQL.=" AND tipo LIKE '%$tipo%' ";
if (!empty(
$estado)) $SQL.=" AND estado LIKE '%$estado%' ";
if (!empty(
$distrito)) $SQL.=" AND distrito LIKE '%$distrito%' ";
/*Poner los que falta*/

if (!$rs->query($SQL)) // Y ejecutamos nuestra consulta. 
{     
    die( 
$rs->error() ); // Si Query devolvió falso, hubo un error y lo mostramos. 

Primero montas la SQL en una variable $SQL y ahi mediante ifs compruebas si tienen valor las variables, si tienen valor lo añadimos al filtro de la SQL
  #5 (permalink)  
Antiguo 02/08/2006, 10:25
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Movido de BD a PHP, por favor lee el siguiente mensaje:
Función de la sección de Base de Datos
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #6 (permalink)  
Antiguo 03/08/2006, 20:25
Avatar de ramon92  
Fecha de Ingreso: enero-2004
Ubicación: Lima
Mensajes: 135
Antigüedad: 20 años, 3 meses
Puntos: 8
El codigo esta excelente, pero no me condiciona lo que deseo, me explico:

-Si solo selecciono un item de la primera lista ($tipo) me busca esa coincidencia, hasta ahi todo perfecto

- pero si selecciono un item la primera lista($tipo) y un item de la 2da lista($estado) no me arroja resultados, esto porque falta condicionarle, algo como si selecciono "solo" lista1, busque esa lista, pero si selecciono lista 1 y 2 buscar en lista 1 y lista 2, asi sucesivamente, como tambien si solo selecciono lista 6 solo busca el 6

- y si lo dejo como esta me arroja (cero), por eso el codigo lo tengo habilitado hasta la 2da linea

Código PHP:
$SQL="SELECT * FROM inmuebles WHERE (1=1)";
if (!empty(
$tipo)) $SQL.=" AND tipo LIKE '%$tipo%' ";
if (!empty(
$estado)) $SQL.=" AND estado LIKE '%$estado%' ";
//if (!empty($distrito)) $SQL.=" AND distrito LIKE '%$distrito%' ";
//if (!empty($precio)) $SQL.=" AND precio LIKE '%$precio%' ";
//if (!empty($area)) $SQL.=" AND area LIKE '%$area%' ";
//if (!empty($dormitorios)) $SQL.=" AND dormitorios LIKE '%$dormitorios%' ";

if (!$rs->query($SQL)) // Y ejecutamos nuestra consulta. 
{     
    die( 
$rs->error() ); // Si Query devolvió falso, hubo un error y lo mostramos. 

__________________
Hosting Peru.ME | Hosting para Empresas
Agencia de Publicidad Online (Enjoy the difference)
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:32.