PHP - Problema con paginación en PHP

   
Vista:

Problema con paginación en PHP

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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<section id="contenedor_buscador">
    	<aside id="izquierda">
			<h4>Buscar Propiedades de Nuevo Le&oacute;n</h4><br>
			<form name="form1" method="post" action="busca_grand_nl.php">
			<label>B&uacute;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="&nbsp;Buscar&nbsp;">
			</form>
 
			<h5>Los campos marcados con (*) son obligatorios</h5>
		</aside>
		<article id="derecha">
		 <h2>Resultados de su b&uacute;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&uacute;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, es la librería que realiza el trabajo de la paginación, el sistema no me permite poner el código ya que es muy largo, pero aqui dejo el link de descarga del archivo:

http://www.desarrolloweb.com/articulos/ejemplos/paginator.inc.php.zip

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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Problema con paginación en PHP

Publicado por xve (5520 intervenciones) el 21/09/2014 09:44:16
Hola, la verdad no entiendo muy bien tu código, pero lo que no veo, es donde ejecutas el limit para limitar el numero de registros!!

Si por ejemplo, estas en la pagina 2 y muestras seis registros por pagina, tu consulta tendría que ser algo así:
SELECT * FROM Tabla WHERE ... LIMIT 6,6
Si fuera la tercera página seria:
SELECT * FROM Tabla WHERE ... LIMIT 12,6

De esta manera, te devuelve únicamente los registros que necesitas mostrar.

Espero que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con paginación en PHP

Publicado por programador_independiente (3 intervenciones) el 22/09/2014 22:14:33
saludos compañero xve.

Gracias por responder.

el límite lo aplico en la línea:

$_pagi_cuantos = 6;

Lo que sucede que el trabajo lo hace la librería paginator.inc.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con paginación en PHP

Publicado por programador_independiente (3 intervenciones) el 25/09/2014 22:03:02
Doy por concluido el tema ya que yo mismo he encontrado la solución.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Problema con paginación en PHP

Publicado por xve (5520 intervenciones) el 26/09/2014 09:58:44
Puedes compartir como lo has conseguido?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar