Problema de paginación en php

Cerrado
programador_independiente Mensajes enviados 2 Fecha de inscripción sábado, 16 de agosto de 2014 Estatus Miembro Última intervención viernes, 19 de septiembre de 2014 - 19 sep 2014 a las 07:35
jempdulintre Mensajes enviados 16 Fecha de inscripción miércoles, 19 de noviembre de 2014 Estatus Miembro Última intervención martes, 17 de febrero de 2015 - 25 nov 2014 a las 23:51
Buen día compañeros mi problema es el siguiente:

Estoy realizando un sitio web de una inmobiliaria. Tengo un buscador que me muestra las casas según la ciudad a la que pertenecen. Le incluí el sistema de paginación y funciona muy bien, excepto por un detalle, en el cual quisiera me echaran una mano:

tengo 8 registros de prueba en mi base de datos, de los cuales 7 pertenecen a la ciudad llamada "abasolo" y 1 pertenece a la ciudad de "monterrey", ahora bien la paginación la tengo por defecto para que muestre 6 viviendas por página;

al realizar la búsqueda de las 7 viviendas de abasolo, en la primer página se muestran las primeras 6 viviendas de abasolo, hasta aquí todo bien, pero al ir a la segunda página, ya no me muestra la vivienda #7 de abasolo, sino que me muestra la vivienda #3 de abasolo y también me muestra la vivienda de monterrey.

Me podrían ayudar a solucionar este problema?

dejo el código del archivo donde hago las búsquedas y de la librería que utilizo para que se realice la paginación, muchas gracias a todos y que Dios les Bendiga y les Conserve la Salud.

nombre del archivo: busca_grand_nl.php
<section id="contenedor_buscador">
<aside id="izquierda">
<h4>Buscar Propiedades de Nuevo León</h4><br>
<form name="form1" method="post" action="busca_grand_nl.php">
<label>Búsqueda por Colonia:</label>
<input type="text" name="txtBusqueda" id="txtBusqueda">
<label>Elija Municipio*:</label>
<select name="selCiudad" id="selCiudad">
<option value="-1" selected>Ver todas las Propiedades</option>
<?php
$tablaciudades = mysql_query("SELECT * FROM municipios_monterrey ORDER BY nombre_mun ASC"); // Seleccionamos las ciudades de la tabla ciudades
while ($registrociudad = mysql_fetch_array($tablaciudades)) { // Vamos a repetir una Option (opcion), de la Lista Desplegable, por cada ciudad en la tabla
?>
<option value="<?php echo $registrociudad['id_mun']; ?>"><?php echo $registrociudad['nombre_mun']; ?></option>
<?php
} // termina la zona de repeticion
mysql_free_result($tablaciudades); // se libera la memoria usada por la tabla
?>
</select>

<input type="submit" name="cmdBuscar" id="cmdBuscar" value=" Buscar ">
</form>

<h5>Los campos marcados con (*) son obligatorios</h5>
</aside>
<article id="derecha">
<h2>Resultados de su búsqueda</h2>
<?php
$_pagi_sql = "SELECT propiedades.*, municipios_monterrey.* FROM propiedades, municipios_monterrey WHERE propiedades.id_mun = municipios_monterrey.id_mun ";
if (isset($_POST['txtBusqueda'])) {
$_pagi_sql .= " AND propiedades.colonia LIKE '%" . $_POST['txtBusqueda'] . "%' ";
if (intval($_POST['selCiudad']) > 0) {
$_pagi_sql .= " AND propiedades.id_mun = '" . intval($_POST['selCiudad']) . "'";
}
}
$_pagi_sql .= " ORDER BY municipios_monterrey.nombre_mun ASC";
//inicio de código para paginacion
$_pagi_conteo_alternativo=true;
$_pagi_cuantos = 6;
include("paginator.inc.php");
//fin de código para paginacion

$tabla = mysql_query($_pagi_sql);

/*de aqui hasta el "else{" es el codigo para poner el mensaje de "no se encontraron resultados y el "}" que cierra esta al final, despues de "mysql_close($conexion);".*/
$num_filas=mysql_num_rows($tabla);
if($num_filas==0){
echo "<center>No se encontraron resultados para su búsqueda</center>";
}
else{ //inicio de código para paginacion aqui se cambio ($tabla)) por ($_pagi_result))
while ($registro = mysql_fetch_array($_pagi_result))
{
?>

<?php $id = $registro['id_dir'];?><!--En esta línea del código va entre corchetes el id de la tabla propiedades-->


<div class="propiedades">
<img id="img_array"src="<?php echo $registro['imagen'];?>"/><br><br>
<label>Direccion:<?php echo $registro['direccion']; ?></label><br>
<label>Colonia:<?php echo $registro['colonia']; ?></label><br>
<label>Municipio:<?php echo $registro['municipio']; ?></label><br>
<label>Estado:<?php echo $registro['estado']; ?></label><br>
<label>Estatus:<?php echo $registro['estatus']; ?></label><br>
<img id="img_precio" src="../img/etiqueta_precio.png"/><label id="precio"><?php echo $registro['precio'];?></label><br>
<a href="detalles.php?id_dir=<?php echo $id?>"><img id="img_llave" class="fade" src="../img/llave_detalle.png"/></a><label id="llave">Ver Detalles</label>
</div>

<?php
}
?>
<!--inicio de código para paginacion-->
<?php echo"<br><div class='barra-navegacion'><p>".$_pagi_navegacion."</p></div>"; ?>
<!--fin de código para paginacion-->
<?php
mysql_free_result($tabla);
mysql_close($conexion);
}
?>

</article>
</section>

nombre del archivo: paginator.inc.php el sistema no me permite poner el código ya que es muy largo, pero aqui dejo el link de descarga del archivo:

https://desarrolloweb.com/

Por cierto ya en otro foro sólo me dijeron que este problema se resuelve de la siguiente manera, pero como soy novato no sé cómo hacerlo, cito textualmente:

"lo unico que tenes que hacer es mantener los filtros cada vez que vaz paginando".

Muchas gracias a todos de antemano por sus respuestas Dios les Bendiga y les Conserve la Salud

1 respuesta

jempdulintre Mensajes enviados 16 Fecha de inscripción miércoles, 19 de noviembre de 2014 Estatus Miembro Última intervención martes, 17 de febrero de 2015 2
Modificado el 13 mar 2018 a las 12:26
Por que no manejas a colonia como una lista desplegable ???, supongo que ya debes de tener una tabla.

Ahora bien desde mi punto de vista invierte tu lista primero seria municipio y después la colonia y ahora en tu consulta quitas el Like que estas manejando.

en esta parte:
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>$_pagi_nav_anterior</a>";

$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>$_pagi_nav_siguiente</a>";

<- En esta parte estas diciendo, ingresa a x pagina, esto es correcto en tu primer paginación, por que no realizas filtros etc.
Pero si tu cambias de pagina dices, ingresa a tal pagina esta +- ya que anteriormente realizaste un filtro pero esos valores del filtro ya no los recuperas para ser exactos los pierdes, por que cuando diste click en siguiente pagina o anterior pagina recargaste la pagina y no capturaste los valores de tus filtros.

Concuerdo con el comentario que te realizaron.

"lo unico que tenes que hacer es mantener los filtros cada vez que vaz paginando".
0