Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] desesperado con problema de paginación php/mysql

Estas en el tema de desesperado con problema de paginación php/mysql en el foro de PHP en Foros del Web. Hola gente, espero que me puedan ayudar, llevo todo el día dándole vueltas y no se me ocurre donde está el error, por ello os ...
  #1 (permalink)  
Antiguo 13/11/2013, 12:04
 
Fecha de Ingreso: julio-2008
Mensajes: 58
Antigüedad: 16 años, 4 meses
Puntos: 0
desesperado con problema de paginación php/mysql

Hola gente, espero que me puedan ayudar, llevo todo el día dándole vueltas y no se me ocurre donde está el error, por ello os pido ayuda, ya he probado varias cosas y no lo doy arreglado.

Código:
<?php include 'header.php';
 include 'conexion.php'; ?>
<!-- Hoja de Estilos -->
	 <link rel="stylesheet" type="text/css" href="css/aplicacion.css"> 
</head>

<body>
<!--<div id="top">administraci&oacute;n</div>-->
<section id="contenedor">
	<header>
		<div id="header_left">
			<img src="logo.png " width="130">
		</div>
		<div id="header_right">
			<div id="grislog"><a href="/loguin.php">Loguin</a></div>
		</div>
	</header>		
	<section id="cuerpo_propiedades">
					<?php include 'menu.php' ?>			
				<section id="propiedades">
				<div id="titulopropiedades">Búsquedas:</div>

					<form action="input.php" method="post" id="buscadorinmobiliario">
					 <input type="text" name="palabra" placeholder="Inmueble a buscar..." required>
					<input type="submit" id="boton_envio" name="buscador" value="Buscar">
					</form>
			<br>
<?php 
	
	$tam_pag = 15; 
	$pagina = $_GET["pagina"]; 
		if (!$pagina) { 
		   	 $inicio = 0; 
			   	 $pagina=1; 

			} 
			else { 
			   	$inicio = ($pagina - 1) * $tam_pag; 
			}
				
				$buscar=$_POST["palabra"];
				$consulta = "SELECT * FROM propiedades WHERE descripcion
						 like '%$buscar%' ORDER BY id_pro DESC";

		$rs = mysql_query($consulta); 

		$num_total_registros = mysql_num_rows($rs); 

		$total_paginas = ceil($num_total_registros / $tam_pag); 
	echo "N&uacute;mero de inmuebles encontrados: " . $num_total_registros . "<br>";  
	//echo "P&aacute;ginas: " . $total_paginas . "<p> <br>";	
	?>

		
			<br>
					<table width="100%" border="0">
						
	<?php

			
				
	$ssql = "SELECT * FROM propiedades WHERE descripcion
	like '%$buscar%' ORDER BY id_pro DESC " .  " limit " . $inicio . "," . $tam_pag;
	$rs = mysql_query($ssql); 
		while ($row = mysql_fetch_array($rs)){ 
		
							
?>
								<p><br><b><a href="verinput.php?id=<?=$row['id_pro'];?>">
								<?=$row['descripcion'];?></a></b>:&nbsp; <em>
								<?=$row['observaciones']; ?></em><br><br>
								</p>
<?
	

							
									


		} 


	?>
	 
	 </table>
	<?

	if ($total_paginas > 1){ 
	   	for ($i=1;$i<=$total_paginas;$i++){ 
	      	 if ($pagina == $i) 


         	 echo $pagina . " "; 
      	 else 

         	 echo "<a href='input.php?pagina=" . $i .  "'>" . $i . "</a> "; 
	   	} 
	}	


		 	
	 ?>
		

	</section>

	</section>	

</section>
				<div id="espacio_blanco"></div>			
	<?php include 'desconexion.php'; include 'footer.php' ?>

El problema es que no página, por ejemplo me calcula todo perfecto, el número de resultados y de páginas, y me genera los enlaces, pero cuando paso de página me muestra todos los resultados, resultados diferentes a la búsqueda que estaba realizando.

Es decir, pongo por ejemplo 4 resultados por página y en la consulta salen 8 resultados, me hace 2 páginas de 4 resultados, en la primera todo correcto, me salen 4 resultados y 2 páginas, le clickeo a la segunda página y me crea 10 páginas de 4 resultados (todos los de la base de datos sin flitro de búsqueda)y me manda a la página 2, pero cuando vuelvo a la 1 no está la 1 de la búsqueda, esta la 1 del listado de todos los resultados páginados....


espero que me puedan ayudar....
  #2 (permalink)  
Antiguo 13/11/2013, 12:44
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 20 años, 3 meses
Puntos: 56
Respuesta: desesperado con problema de paginación php/mysql

Holas, bbv81.

Como siempre digo, cuando no entiendas qué ocurre con tu programación, debuga: pon prints de todas las variables que tengas, de modo de poder saber qué se está enviando realmente.

Por ahora, de lo que puedo ver, el hecho de que no te repita la consulta en la siguiente página es porque no estás enviando la variable $buscar como haces con la variable de paginación. Vale decir, estaría faltando algo como:

Código PHP:
// acá la recibes
$buscar = (!isset($buscar) ? $_GET["buscar"]: $buscar);

// acá la agregas a los enlaces:
echo "<a href='input.php?pagina=" $i .  "&buscar=".$buscar."'>" $i "</a> "
Lo demás lo veo bien.

A propósito de paginación, te recomiendo que le eches una mirada a la opción Mysql SQL_CALC_FOUND_ROWS en conjunto con la función FOUND_ROWS(), que te quitan mucho trabajo de encima y al pobre servidor también, en cuanto a lo de obtener el total de un conjunto de resultados paginado con LIMIT :P http://dev.mysql.com/doc/refman/5.0/...functions.html

Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #3 (permalink)  
Antiguo 13/11/2013, 12:58
 
Fecha de Ingreso: julio-2008
Mensajes: 58
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: desesperado con problema de paginación php/mysql

muchas gracias por tu tiempo y contestación quinqui, he probado los retoques que me pasastes y me sigue fallando.

sobre lo que me comentas de la paginación, tienes toda la razón, en ambas cosas, tanto en el limit como en no tirar de función, lo que pasa que ahora me puse cabezón en hacerlo así para comprobar y solucionar el error..... para otro proyecto te haré caso y profundizare en lo que me comentas. Gracias por intentar ayudarme.
  #4 (permalink)  
Antiguo 13/11/2013, 14:41
 
Fecha de Ingreso: julio-2008
Mensajes: 58
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: desesperado con problema de paginación php/mysql

buenas quinqui, ahora me funciona, dejo aquí la modificación para si alguién entra que la vea, es prácticamente lo mismo que me pusiste. Gracias.

Código:
<?
$buscar = (!isset($buscar) ? $_REQUEST["palabra"]: $buscar);
print "$buscar";
	if($total_paginas) {

			echo "<center>";
		
			for ($i=1; $i<=$total_paginas; $i++){ 
				if ($pagina == $i) 
					echo "<b>".$pagina."</b> "; 
				else
         	 echo "<a href='input.php?pagina=$i&palabra=$buscar'>" . $i . "</a> "; 
			}
		  
			
			echo "</center>";
		
		}
?>
y en la parte de arriba que tenía obtenia con post la variable de formulario la saque de dentro de bucle y la puse lo primero y además con request porque también recoge variable get de otra página y la post del propio formulario. Salu2

Etiquetas: desesperado, mysql, php-mysql, registro, select, sql
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 23:15.