Foros del Web » Programando para Internet » PHP »

Problemas al paginar resultados de una consulta.

Estas en el tema de Problemas al paginar resultados de una consulta. en el foro de PHP en Foros del Web. Hola. Estoy aprendiendo a paginar resultados y me surgio un problema. Puse para q muestre 3 resultados o registros por pagina. Al principio los muestra ...
  #1 (permalink)  
Antiguo 05/08/2010, 23:32
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Problemas al paginar resultados de una consulta.

Hola.
Estoy aprendiendo a paginar resultados y me surgio un problema.
Puse para q muestre 3 resultados o registros por pagina. Al principio los muestra correctamente, muestra 3 registros y abajo la cantidad de paginas, pero cuando voy a la pagina siguiente, me muestra todos los resultados.
Por ejemplo, tengo 17 registros y los divide en 6 paginas de 3 registros cada una. Entonces la primera la muestra bien pero al ir a la pagina 2 o cualquier otra, me muestra los 17 registros. No se donde tengo el error.

Código PHP:
<?php
include('../scripts/db-cnx.php');
$pag_sql mysql_query("sELecT * FROM comentarios ORDER BY idcom ASC",$db_link);
$cant_reg=mysql_num_rows($pag_sql);
if(
$cant_reg==0){
echo 
"No hay comentarios";
mysql_close($db_link);
exit();
}else{
$registros=3;
$pagina=$_GET['id_pag'];
if(
is_numeric($pagina)){
$inicio=(($pagina-1)*$registros);
}else{
$inicio=0;
$pag_sql mysql_query("sELecT * FROM comentarios ORDER BY idcom ASC LIMIT $inicio,$registros;",$db_link);
$paginas=ceil($cant_reg/$registros);
}
?>
<?php
while($rowCom=mysql_fetch_array($pag_sql)){
los comentarios a mostrar
}
}
?>
...y asi muestro los enlaces:
<?php
for($cont=1;$cont<=$paginas;$cont++){
echo 
"<a href='../tema/vercomentario.php?id_pag=".$cont."'>$cont</a> ";
}
?>
...la verdad no se donde esta el error.
Saludos
  #2 (permalink)  
Antiguo 08/08/2010, 17:51
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 11 meses
Puntos: 66
Respuesta: Problemas al paginar resultados de una consulta.

no me he parado mucho a mirar pero te propongo un algoritmo a ver si te resulta

recuperar $numeroPagina

$postinicio =$postperpag*$numeroPagina-$postperpag

$postfin=$postperpag*$numeroPagina

obtener todos los resultados

for(i=1;i<=$postfin;i++){
$resultado fetcharray
if(i>=$postinicio){
imprimir $resultado
}
}

evidentemente tendras que refinar esto pero el funcionamiento que se me ocurre es mas o menos ese, el problema que le encuentro es que para paginas muy altas perderiamos mucho tiempo con los fetch array anteriores a ella, desconozco si hay alguna forma de hacer saltar el cabezal a una fila deseada sin necesidad de extraer cada resultado, si lo hay cambiaria un poco el metodo, pero para ir tirando hasta que encuentres algo mejor...

espero serte de ayuda
  #3 (permalink)  
Antiguo 08/08/2010, 20:26
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Problemas al paginar resultados de una consulta.

hola reborn
y el script de la bd para las pruebas? es que es más fácil correr
todo de una vez que hacer pruebas manualmente.
(sin embargo, tengo tiempo así que me tomare la molestia)

y que tienes en db-cnx.php, solo la conexión?

bueno, a modo de comentario te aconsejo que uses las palabras de mysql
todas en mayúsculas (SELECT) aunque veo que lo usas, seguro fue un desliz

y en cuanto a tu duda, es porque no haces la consulta en el if, es decir, estas dejando la consulta en el else solamente

tan solo cierra el else luego que haces a $inicio = 0;
y con eso debería funcionarte

prueba y comentas
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: paginar, resultados
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 01:03.