Foros del Web » Programando para Internet » PHP »

Problema de paginacion

Estas en el tema de Problema de paginacion en el foro de PHP en Foros del Web. Saludos! Esta es la primera ves que visito este foro, me alegra que sea en español y no en ingles como la gran mayoria . ...
  #1 (permalink)  
Antiguo 09/03/2006, 16:08
 
Fecha de Ingreso: marzo-2006
Mensajes: 66
Antigüedad: 11 años, 9 meses
Puntos: 0
Problema de paginacion

Saludos!
Esta es la primera ves que visito este foro, me alegra que sea en español y no en ingles como la gran mayoria . Bueno, los ultimos días he estado intentando hacer un sistema de paginacion (uno bastante sencillo) para poder mostrar mucha informacion de mi base de datos MySQL de forma ordenada (asi como google o yahoo despliegan su informacion en paginas y abajo aparecen los links). He aqui el codigo que tengo:

Código PHP:
<?php
#El nombre del archivo es 'pag.php'.


#Tomo el valor de $page de la URL
$page $_GET['page'];


#Si el usuario entra a 'pag.php' sera 'redireccionado' (por decirlo asi) a 
#pag.php?pagina=1 
if(!$page) {
     
$page 1;
     }

#Conexion con MySQL
$conexion mysqli_connect("$servidor","$usuario","password") or die(mysqli_error());

#Selecciono mi Base de Datos
$db mysqli_select_db($conexion,"usuarios") or die(mysqli_error());

#Consulta Inicial
$query mysqli_query($conexion,"select nick from usuarios order by nick") or die(mysqli_error());

#Las variables basicas
$total mysqli_num_rows($query); /*Total de elementos que tiene mi base */
$itemsPerPage 5;  /*Cantidad de elementos que quiero mostrar por pagina*/
$numPages ceil($total/$itemsPerPage);  /*El total de paginas que se van a crear*/
$offset =($page 1) * itemsPerPage/*Esto le dice a MySQL a partir de donde empezar a mostrar los datos*/

#Consultando la informacion inicial que se va a mostrar.
$consulta "select nick from usuarios order by nick limit $offset, $total";
$query2 mysqli_query($conexion,$consulta) or die(mysqli_error());

#Mostrando la informacion
while ($row mysqli_fetch_array($query2)) {
            
extract($row);
    echo 
"$nick<br>"//$nick es el nombre de la columa de mi tabla
    
}
    
#Creando los links Page1|Page2|Page3....etc
for ($i=1;$i<=$numPages;$i++) {
            echo 
"|";
        if(
$i == $page) {
         echo 
"<b>Page $i </b>";
            }
            else {
            echo 
"<a href='pag.php?page=$i'>Page $i </a>";
            }
    }


?>
Bueno es bastante sencillo, tiene todo lo basico y deberia de funcionar bien, pero no es asi. Si despliega los primeros 5 elementos de la base de datos, mustra los links en la parte inferior de la pagina, estos links al darle click pasan por la url la variable correcta (pag.php?page=1, pag.php?page=2, pag.php?page=3....etc) el problema es que la informacion no hace ningun cambio, se queda la informacion que mostro la base de datos la primera ves... He intentado crear funciones para "refrescar" la consulta mysqli_query() pero no funciona

Ojala alguien de este foro me pueda ayudar con este problema, de verdad se lo agradeceria mucho.
  #2 (permalink)  
Antiguo 09/03/2006, 17:00
 
Fecha de Ingreso: diciembre-2005
Mensajes: 165
Antigüedad: 12 años
Puntos: 4
Mira, lo mas probable es que se deba a esta linea:
$offset =($page - 1) * itemsPerPage; /*Esto le dice a MySQL a partir de donde empezar a mostrar los datos*/
Estas multiplicando por itemsPerPage cuando en realidad deberias multiplicar por $itemsPerPage (te dejaste la $) y por eso $offset siempre te vale cero.

Hasta luego
  #3 (permalink)  
Antiguo 10/03/2006, 10:17
 
Fecha de Ingreso: marzo-2006
Mensajes: 66
Antigüedad: 11 años, 9 meses
Puntos: 0
Tienes toda la razon! Lo que un minimo error tipografico puede causar. Muchas gracias. Un saludo!
  #4 (permalink)  
Antiguo 10/03/2006, 12:13
 
Fecha de Ingreso: diciembre-2005
Mensajes: 165
Antigüedad: 12 años
Puntos: 4
Asi es, un simple $ puede fastidiar el script.
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 02:29.