Foros del Web » Programando para Internet » PHP »

Consulta con paginado desde listas desplegables

Estas en el tema de Consulta con paginado desde listas desplegables en el foro de PHP en Foros del Web. Hola amigos, tengo peleandome con este codigo hace varios dias. El detalle es el siguiente, tengo un formulario para realizar busquedas en una BD Mysql ...
  #1 (permalink)  
Antiguo 16/08/2006, 20:14
Avatar de ramon92  
Fecha de Ingreso: enero-2004
Ubicación: Lima
Mensajes: 135
Antigüedad: 20 años, 3 meses
Puntos: 8
Consulta con paginado desde listas desplegables

Hola amigos, tengo peleandome con este codigo hace varios dias. El detalle es el siguiente, tengo un formulario para realizar busquedas en una BD Mysql y mostrarlas en el paginado de JPINEDO, el esquema del buscador

La forma del formulario es el siguiente:


El codigo del formulario que esta dentro del home.php es el siguiente:
Código HTML:
<table width="200" border="0" align="left" cellpadding="0" cellspacing="0">
          <tr>
            <td class="borde"><form name="form1" method="post" action="">
                <table width="200" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#f2f4f9">
                  <tr>
				  <?php
		 			session_start();
					if ( isset ( $_SESSION['usNick'] ) ) {
			 		// Si esta logeado
					 	?>
				    		<td height="20" align="left" valign="middle" background="img/fondo_busca.jpg" class="linea"><div class="buscador_saludo_bold"><? echo 'Hola, ' , $_SESSION['usNick'] ?></div></td>
                  		<?php
					} else {
				  	// si no esta logeado
							?>
							<td height="20" align="left" valign="middle" background="img/fondo_busca.jpg" class="linea"><div class="buscador_saludo_bold">Buscador, <span class="buscador_saludo">de propiedades</span> </div></td>
							<?php
							}
				  ?>
				  </tr>
                  <tr>
                    <td height="60" class="linea"><div class="buscador_txt"><img src="img/triangulo.jpg" width="3" height="5"> Estoy en busca de:<br>
                            <br>
                            <select name="tipo" size="1" class="buscador_list" id="tipo">
                              <option selected>---------- Seleccionar ----------</option>
                              <option value="Terreno">Terreno</option>
                              <option value="Casa">Casa</option>
                              <option value="Departamento">Departamento</option>
                              <option value="Oficina">Oficina</option>
                              <option value="Local Comercial">Local Comercial</option>
                            </select>
                            <br>
                    </div></td>
                  </tr>
                  <tr>
                    <td height="60" class="linea"><div class="buscador_txt"><img src="img/triangulo.jpg" width="3" height="5"> Que este en :<br>
                            <br>
                            <select name="estado" size="1" class="buscador_list" id="estado">
                              <option selected>---------- Seleccionar ----------</option>
                              <option value="Venta">Venta</option>
                              <option value="Alquiler">Alquiler</option>
                              <option value="Traspaso">Traspaso</option>
                              <option value="Concesion">Conseci&oacute;n</option>
                            </select>
                            <br>
                    </div></td>
                  </tr>
                  <tr>
                    <td height="60" class="linea"><div class="buscador_txt"><img src="img/triangulo.jpg" width="3" height="5"> Ubicado en la zona de :<br>
                            <br>
                            <select name="distrito" size="1" class="buscador_list" id="distrito">
                              <option selected>---------- Seleccionar ----------</option>
                              <option value="Miraflores">Miraflores</option>
                              <option value="Lima">Lima</option>
                              <option value="Surco">Surco</option>
                              <option value="La Molina">La Molina</option>
                            </select>
                            <br>
                    </div></td>
                  </tr>
                  <tr>
                    <td height="60" class="linea"><div class="buscador_txt"><img src="img/triangulo.jpg" width="3" height="5"> Con un precio de :<br>
                            <br>
                            <select name="precio" size="1" class="buscador_list" id="precio">
                              <option selected>---------- Seleccionar ----------</option>
                              <option>US$ 20,000 - US$ 30,000</option>
                            </select>
                            <br>
                    </div></td>
                  </tr>
                  <tr>
                    <td height="60" class="linea"><div class="buscador_txt"><img src="img/triangulo.jpg" width="3" height="5"> Con un &aacute;rea de :<br>
                            <br>
                            <select name="area" size="1" class="buscador_list" id="area">
                              <option selected>---------- Seleccionar ----------</option>
                              <option value="70 - 80 mt2">70 - 80 mt2</option>
                              <option>80 - 100 mt2</option>
                              <option>100 - 120 mt2</option>
                            </select>
                            <br>
                    </div></td>
                  </tr>
                  <tr>
                    <td height="60" class="linea"><div class="buscador_txt"><img src="img/triangulo.jpg" width="3" height="5"> Dormitorios :<br>
                            <br>
                            <select name="dormitorio" size="1" class="buscador_list" id="dormitorio">
                              <option selected>---------- Seleccionar ----------</option>
                              <option value="2">2 Dormitorios</option>
                              <option value="3">3 Dormitorios</option>
                              <option value="4">4 Dormitorios</option>
                            </select>
                            <br>
                    </div></td>
                  </tr>
                  <tr>
                    <td height="30" class="linea"><table width="200" border="0" cellspacing="0" cellpadding="0">
                        <tr>
                          <td width="126"><div class="buscador_txt_busca">Realizar la busqueda?
                            <input name="envio" type="hidden" id="envio" value="buscar" >
                          </div></td>
                          <td width="74" align="center" valign="middle">
						  <? session_start();
						  	if( isset ( $_SESSION['usNick'] ) ) {;
							   echo "<input type=image src=img/btn_ok.jpg width=62 height=18 action=home.php method=post/>";
							}else{
 							   echo "Inicie Sesión";
							   }
						  ?>
                        </tr>
                    </table></td>
                  </tr>
                  <tr>
                    <td align="center" valign="middle" class="linea"><img src="img/buscar_img.jpg" width="198" height="190"/></td>
                  </tr>
                  <tr>
                    <td class="linea">&nbsp;</td>
                  </tr>
                </table>
            </form></td>
          </tr>
        </table> 
Preguntas:

1.- La consulta a la base de datos solo es posible cuando selecciono 2 listas (por ejem tipo y estado), cuando selecciono otras conbinaciones falla por eso lo he deshabilitado, el codigo que me pasaron me ayuda bastante pero soy amateur en esto, me funciona casi casi, pero acudo a ustedes para mas ayuda.

Código PHP:
// 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
//
$tipo $_POST[tipo];
$estado $_POST[estado];
$distrito $_POST[distrito];
$precio $_POST[precio];
$area $_POST[area];
$dormitorios $_POST[dormitorios];
//
$SQL="SELECT * FROM opp_inmuebles WHERE (1=1)";
// si selecciono esta lista desplegable, buscar registros coicidentes
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. 

2.- Este formulario lo deseo presente en toda la web, pero sin usar frames. Como tendria q hacer para que no aparesca la busqueda por default que sale cuando se accede a la pagina buscar.php (imaginemos que ponga la pagina de contacto y lo primero q aparece es la busqueda por defaul del paginador y abajo recien lo de la seccion contacto, esto porque en todas las paginas se copio el codigo no?) seria me imagino algo como "si presiono buscar, ejecuta recien el buscador"
__________________
Hosting Peru.ME | Hosting para Empresas
Agencia de Publicidad Online (Enjoy the difference)

Última edición por ramon92; 14/01/2009 a las 14:32
  #2 (permalink)  
Antiguo 17/08/2006, 05:21
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
si no me equivoco veo que te valtan también algunos values en algunas opciones, quizas por eso no te funcionan, dependiendo de si utilizas algun menu con value o no, ¿por cierto tienes metidos datos en la bbdd?
  #3 (permalink)  
Antiguo 17/08/2006, 11:06
Avatar de ramon92  
Fecha de Ingreso: enero-2004
Ubicación: Lima
Mensajes: 135
Antigüedad: 20 años, 3 meses
Puntos: 8
Si oscar, tengo datos, datos que puse al azar, los mas importantes son lo de tipo, estado y distrito, por eso me parece raro que solo funcione cuando elijo estado y tipo a la vez:



Con respecto a los values, estos estan en el formulario, o te refieres a otro
__________________
Hosting Peru.ME | Hosting para Empresas
Agencia de Publicidad Online (Enjoy the difference)
  #4 (permalink)  
Antiguo 17/08/2006, 11:40
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
te faltan values en:


<select name="precio" size="1" class="buscador_list" id="precio">
<option selected>---------- Seleccionar ----------</option>
<option>US$ 20,000 - US$ 30,000</option>
</select>

y en
<option>80 - 100 mt2</option>
<option>100 - 120 mt2</option>


comprueba que las variables sean las mismas que los name y que no haya problemas con el formulario.
en principio yo no he encontrado ningún error más.

oskar
  #5 (permalink)  
Antiguo 17/08/2006, 19:50
Avatar de ramon92  
Fecha de Ingreso: enero-2004
Ubicación: Lima
Mensajes: 135
Antigüedad: 20 años, 3 meses
Puntos: 8
oscar aregle esos desperfectos, pero no funciona fijate aqui

aqui te pongo lo del formulario, ya corregi los values, pero creo q es lo del codigo php a la hora de hacer la consulta,

Código HTML:
<table width="200" border="0" align="left" cellpadding="0" cellspacing="0">
          <tr>
            <td class="borde"><form name="form1" method="post" action="">
                <table width="200" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#f2f4f9">
                  <tr>
				  <?php
		 			session_start();
					if ( isset ( $_SESSION['usNick'] ) ) {
			 		// Si esta logeado
					 	?>
				    		<td height="20" align="left" valign="middle" background="img/fondo_busca.jpg" class="linea"><div class="buscador_saludo_bold"><? echo 'Hola, ' , $_SESSION['usNick'] ?></div></td>
                  		<?php
					} else {
				  	// si no esta logeado
							?>
							<td height="20" align="left" valign="middle" background="img/fondo_busca.jpg" class="linea"><div class="buscador_saludo_bold">Buscador, <span class="buscador_saludo">de propiedades</span> </div></td>
							<?php
							}
				  ?>
				  </tr>
                  <tr>
                    <td height="60" class="linea"><div class="buscador_txt"><img src="img/triangulo.jpg" width="3" height="5"> Estoy en busca de:<br>
                            <br>
                            <select name="tipo" size="1" class="buscador_list" id="tipo">
                              <option selected>---------- Seleccionar ----------</option>
                              <option value="Terreno">Terreno</option>
                              <option value="Casa">Casa</option>
                              <option value="Departamento">Departamento</option>
                              <option value="Oficina">Oficina</option>
                              <option value="Local Comercial">Local Comercial</option>
                            </select>
                            <br>
                    </div></td>
                  </tr>
                  <tr>
                    <td height="60" class="linea"><div class="buscador_txt"><img src="img/triangulo.jpg" width="3" height="5"> Que este en :<br>
                            <br>
                            <select name="estado" size="1" class="buscador_list" id="estado">
                              <option selected>---------- Seleccionar ----------</option>
                              <option value="Venta">Venta</option>
                              <option value="Alquiler">Alquiler</option>
                              <option value="Traspaso">Traspaso</option>
                              <option value="Concesion">Conseci&oacute;n</option>
                            </select>
                            <br>
                    </div></td>
                  </tr>
                  <tr>
                    <td height="60" class="linea"><div class="buscador_txt"><img src="img/triangulo.jpg" width="3" height="5"> Ubicado en la zona de :<br>
                            <br>
                            <select name="distrito" size="1" class="buscador_list" id="distrito">
                              <option selected>---------- Seleccionar ----------</option>
                              <option value="Miraflores">Miraflores</option>
                              <option value="Lima">Lima</option>
                              <option value="Surco">Surco</option>
                              <option value="La Molina">La Molina</option>
                            </select>
                            <br>
                    </div></td>
                  </tr>
                  <tr>
                    <td height="60" class="linea"><div class="buscador_txt"><img src="img/triangulo.jpg" width="3" height="5"> Con un precio de :<br>
                            <br>
                            <select name="precio" size="1" class="buscador_list" id="precio">
                              <option selected>---------- Seleccionar ----------</option>
                              <option value="20000">US$ 20,000</option>
                              <option value="30000">US$ 30,000</option>
                              <option value="40000">US$ 40,000</option>
                            </select>
                            <br>
                    </div></td>
                  </tr>
                  <tr>
                    <td height="60" class="linea"><div class="buscador_txt"><img src="img/triangulo.jpg" width="3" height="5"> Con un &aacute;rea de :<br>
                            <br>
                            <select name="area" size="1" class="buscador_list" id="area">
                              <option selected>---------- Seleccionar ----------</option>
                              <option value="70">70 mt2</option>
                              <option value="80">80 mt2</option>
                              <option value="90">90 mt2</option>
                            </select>
                            <br>
                    </div></td>
                  </tr>
                  <tr>
                    <td height="60" class="linea"><div class="buscador_txt"><img src="img/triangulo.jpg" width="3" height="5"> Dormitorios :<br>
                            <br>
                            <select name="dormitorios" size="1" class="buscador_list" id="dormitorios">
                              <option selected>---------- Seleccionar ----------</option>
                              <option value="2">2 Dormitorios</option>
                              <option value="3">3 Dormitorios</option>
                              <option value="4">4 Dormitorios</option>
                            </select>
                            <br>
                    </div></td>
                  </tr>
                  <tr>
                    <td height="30" class="linea"><table width="200" border="0" cellspacing="0" cellpadding="0">
                        <tr>
                          <td width="126"><div class="buscador_txt_busca">Realizar la busqueda?
                            <input name="envio" type="hidden" id="envio" value="buscar" >
                          </div></td>
                          <td width="74" align="center" valign="middle">
						  <? session_start();
						  	//if( isset ( $_SESSION['usNick'] ) ) {;
							   echo "<input type=image src=img/btn_ok.jpg width=62 height=18 action=home.php method=post/>";
							//}else{
 							   //echo "Inicie Sesión";
							   //}
						  ?>
                        </tr>
                    </table></td>
                  </tr>
                  <tr>
                    <td align="center" valign="middle" class="linea"><img src="img/buscar_img.jpg" width="198" height="190"/></td>
                  </tr>
                  <tr>
                    <td class="linea">&nbsp;</td>
                  </tr>
                </table>
            </form></td>
          </tr>
        </table> 
Quitando los 4 ultimos condicionales (IF..) del select del php ahora no funciona nada, por eso te digo que creo q es lo del select (si dejo los 2 primeros IF si funciona, pero solo cuando se escoje tipo y estado. Lo de distrito hasta dormitorios no funciona.

Código PHP:
//
$tipo $_POST[tipo];
$estado $_POST[estado];
$distrito $_POST[distrito];
$precio $_POST[precio];
$area $_POST[area];
$dormitorios $_POST[dormitorios];
//
$SQL="SELECT * FROM opp_inmuebles WHERE (1=1)";
// si selecciono esta lista desplegable, buscar registros coicidentes
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. 

Agradesco tu paciencia hermano
__________________
Hosting Peru.ME | Hosting para Empresas
Agencia de Publicidad Online (Enjoy the difference)
  #6 (permalink)  
Antiguo 18/08/2006, 01:03
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
vamos a probar con este select a ver que te parece, no es tan compleja como la tuya, pero algo podremos hacer.


select * from opp_inmuebles where tipo like %$tipo% and estado like %$estado% and distrito like %$distrito% and precio like %$precio% and area like %$area% and dormitorios like %$dormitorios%


de todas formas realizara consultas con el operador and supone que o estodo coincidente o no conseguiraras nada yo prefiero utilizar un or, porque te permite un resultado u otro.

prueba con esta select a ver que te da.

oskar
  #7 (permalink)  
Antiguo 18/08/2006, 17:45
Avatar de ramon92  
Fecha de Ingreso: enero-2004
Ubicación: Lima
Mensajes: 135
Antigüedad: 20 años, 3 meses
Puntos: 8
nada oskar, sigue igual
Código PHP:
$tipo $_POST[tipo];
$estado $_POST[estado];
$distrito $_POST[distrito];
$precio $_POST[precio];
$area $_POST[area];
$dormitorios $_POST[dormitorios];
//
$SQL="SELECT * FROM opp_inmuebles WHERE tipo like '%$tipo%' and estado like '%$estado%' and distrito like '%$distrito%' and precio like '%$precio%' and area like '%$area%' and dormitorios like '%$dormitorios%'";

//$SQL="SELECT * FROM opp_inmuebles WHERE (1=1)";
// si selecciono esta lista desplegable, buscar registros coicidentes
//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)
  #8 (permalink)  
Antiguo 21/08/2006, 04:35
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
ramon primero prueba en el script que recibe las variables a imprimirlas, para ver si recibes las mismas correctamente, porque a veces no nos damos cuenta, y los fallos vienen por ahí.

una vez hecho esto, seguiremos, primero comprobamos eso.

vale.

oskar
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 18:17.