Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] paginacion en PHP

Estas en el tema de paginacion en PHP en el foro de PHP en Foros del Web. Buen dia para todos . Encontre el siguiente codigo y lo estoy tratando de adaptar a mi aplicacion pero hay algo que no me quiere ...
  #1 (permalink)  
Antiguo 30/03/2013, 10:53
Avatar de cristo995  
Fecha de Ingreso: noviembre-2012
Mensajes: 187
Antigüedad: 12 años
Puntos: 0
paginacion en PHP

Buen dia para todos

. Encontre el siguiente codigo y lo estoy tratando de adaptar a mi aplicacion pero hay algo que no me quiere salir y son los enlaces de "siguiente" y "Anterior" no se si sea algun error de comilla o q sera pero llevo un buen rato y no doy con el problema aqui el codigo y explicado .

me aroja los primeros 5 registros todo muy bien en la tabla pero necesito el enlace de "siguiente " para ver los otros 5



<?php



/* Primero definimos 2 variables: $cant_reg que contiene el número de registros que se mostrarán por página, para este caso lo dejaremos en 10 pero pueden acomodarlo según gusten. Y además definimos la variable $num_pag, la cual tomará vía parámetro enviado por URL (por ende GET), el número de página actual de los resultados */

$cant_reg = 5;
$num_pag = $_GET["pagina"];

/* Luego, hacemos un if y preguntamos si hay algún valor en la variable $num_pag. Si no lo hay, significa que es la primera vez que se accede a la página de resultados, y por ende se dan los valores 1 a $num_pag (o sea primera página) y 0 a la variable $comienzo, que es la que define desde donde se empieza a buscar los resultados. */

if (!$num_pag)
{
$comienzo = 0;
$num_pag = 1;
}

/* Luego, se define un else, que se activará en caso de que la variable $num_pag haya recibido un valor, o sea, no es la primera vez que se accede a los resultados. Si este es el caso a la variable comienzo se le asignará un valor equivalente al número de página menos 1, todo multiplicado por la cantidad de registros, en este caso 10. Entonces si la página a la que llegamos es la 2 de los resultados, $comienzo valdría 2-1 * 10, o sea 10 y desde ahí empezaría a rescatar resultados en la consulta */

else
{
$comienzo = (($num_pag–1) * $cant_reg);
}

/* A continuación, hacemos la conexión a la BD y seleccionamos la BD correspondiente */

$conexion=mysql_connect("localhost", "root", "");
mysql_select_db("paginacion", $conexion);

/* Ahora, en una variable $resultado, almacenamos la respuesta de una consulta donde estamos contabilizando cuantos usuarios hay en la tabla, para esto usamos la sentencia COUNT en la consulta y le decimos que la ejecute sobre la tabla usuario */

$resultado = mysql_query("SELECT COUNT(*) FROM usuario");

/* En la variable $total_registros almacenamos el resultado de la consulta anterior, o sea, cuantos usuarios hay en la BD */

$total_registros = mysql_num_rows($resultado);

/* Luego de almacenar, reutilizamos la variable $resultado, y ahora hacemos una consulta nueva en la BD, esta vez seleccionando los usuarios que existan en la tabla, ordenándolos de manera ascendente según el username con la sentencia ORDER BY y limitando la consulta a que rescate los registros que están entre el valor indicado por $comienzo (rescata desde el valor siguiente), y que desde ahí rescate tantos registros como indicados por la variable $cant_reg, o sea, 10.

Recordemos que la variable $comienzo la vamos moviendo según el número de página donde nos encontremos, por lo tanto la primera vez rescataremos los registros del 1 al 10, luego del 11 al 20, del 21 al 30 y así sucesivamente. */

$resultado = mysql_query("SELECT username, nombre, correo FROM usuario ORDER BY username LIMIT $comienzo, $cant_reg");

/* Luego en la variable $total_paginas almacenamos el número total de páginas que se generarán a partir de esta paginación. Este número lo obtenemos a partir de la división entre el número total de registros (almacenado en la variable $total_registros) y la cantidad de registros por página (almacenado en la variable $cant_reg, equivalente a 10). Esta división la redondeamos utilizando ceil. PHP, como muchos lenguajes de programación, tienen funciones para redondear las divisiones que pudieran darnos resultados en números "decimales" o float, computacionalmente hablando. Estas funciones son floor y ceil. Floor redondea hacia abajo (Si el resultado fuese 2,4 redondea a 2) y Ceil hacia arriba (Si el resultado fuese 2,4 redondea a 3). */

$total_paginas = ceil($total_registros / $cant_reg);

/* Ya hemos rescatado los resultados que desplegaremos en la página, así que ahora mediante código HTML creamos una tabla. Este paso es opcional, pueden desplegar los datos de la forma que estimen conveniente. Así que solo tómenlo como referencia. Primero creamos la parte fija de la tabla, que es donde van los títulos de cada campo que mostraremos. */

echo "<table width=’829′ border=’1′ align=’center’ bgcolor=’#006600′>
<tr>
<td bgcolor=’#000000′ width=’129′><div align=’center’>Nombre de Usuario</div></td>
<td bgcolor=’#000000′ width=’124′><div align=’center’>Contraseña</div></td>
<td bgcolor=’#000000′ width=’130′><div align=’center’>Correo</div></td>
<td bgcolor=’#000000′ width=’202′><div align=’center’>Nombre Completo</div></td>
</tr>";

/* Ahora, hacemos un ciclo de tipo while, y como condición de duración ponemos que es mientras en la variable $row se vaya almacenando una fila de los resultados */
while($row=mysql_fetch_array($resultado))
{

/* Ahora en las variables $username, $password, $nombre y $correo almacenamos los datos que vamos extrayendo de la BD */

$username=$row["username"];
$password=$row["password"];
$nombre=$row["nombre"];
$correo=$row["correo"];

/* Luego, con código HTML y PHP vamos desplegando celdas y mostrando los resultados de esas variables */

echo "<tr>";
echo "<td width=’129′><div align=’center’>$username</div></td>";
echo "<td width=’124′><div align=’center’>$password</div></td>";
echo "<td width=’130′><div align=’center’>$correo</div></td>";
echo "<td width=’202′><div align=’center’>$nombre</div></td>";
echo "</tr>";
}

/* Cerramos la tabla y centramos el parrafo */

echo "</table><center><br>";

/* El siguiente código es para mostrar, después de desplegar los resultados actuales, vínculos para páginas anteriores, siguientes y mostrar la página actual. Primero, se pregunta si la página actual menos 1 es mayor a cero, esto significa que no es la primera vez que listamos y por ende se despliega el vínculo para volver a páginas anteriores, enviando como parámetro el número de página menos 1 para que se inicialicen las variables más arriba. */

if(($num_pag–1) > 0)
{
echo "<a href='lista-usuarios.php?pagina=".($num_pag-1)."'>< Anterior</a> ";
}

/* Luego, mediante un ciclo de tipo for que dura mientras la variable i sea menor al número total de páginas, se van listando, con números, todas las páginas disponibles con sus respectivos vínculos. También se desplega la página actual, sin vincular. */

for ($i=1; $i<=$total_paginas; $i++)
{
if ($num_pag == $i)
{
echo "<b><p class='style1'>Página ".$num_pag."</b> ";
}
else
{
echo "<a href='lista-usuarios.php?pagina=$i'>$i</a> ";
}
}

/* Y finalmente, se pregunta mediante un if si el número de la página actual más 1 es menor o igual al total de páginas. Si es así se presenta un vínculo para la página siguiente, enviando el parámetro correspondiente que se recoje mediante GET */

if(($num_pag + 1)<=$total_paginas)
{
echo " <a href='lista-usuarios.php?pagina=".($num_pag+1)."'>Siguiente ></a>";
}
echo "</center>";

?>
  #2 (permalink)  
Antiguo 31/03/2013, 22:10
Avatar de cristo995  
Fecha de Ingreso: noviembre-2012
Mensajes: 187
Antigüedad: 12 años
Puntos: 0
Respuesta: paginacion en PHP

alguna ayudita ?? please..
  #3 (permalink)  
Antiguo 01/04/2013, 11:10
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: paginacion en PHP

Proba este codigo...

Código PHP:
Ver original
  1. <?php
  2.     $numeroRegistros=15;
  3.     if(isset($_GET['pagina'])){
  4.         $pageNum = $_GET['pagina'];
  5.     }else{$pageNum = 1;}
  6.    
  7.     //contando el desplazamiento
  8.     $offset = ($pageNum - 1) * $numeroRegistros;
  9.     $total_paginas = ceil($numSolicitudes/$numeroRegistros);
  10.    
  11.    
  12.     ////***Armas el despliegue de tu informacion
  13.    
  14.    
  15.     //Armo paginacion
  16.     if ($total_paginas > 1){
  17.  
  18.         if ($pageNum != 1){
  19.             echo '<a href="lista-usuarios.php?pagina='.($pageNum-1).'">< Anterior</a>';
  20.            
  21.         }
  22.         for ($i=1;$i<=$total_paginas;$i++){
  23.             if ($pageNum == $i){
  24.                 //si muestro el índice de la página actual, no coloco enlace
  25.                 echo '<a href="lista-usuarios.php?pagina='.$i.'">'.$i.'</a>';
  26.             }else{
  27.                 //si el índice no corresponde con la página mostrada actualmente,
  28.                 //coloco el enlace para ir a esa página
  29.                 echo $i;
  30.              }
  31.         }
  32.         if ($pageNum != $total_paginas){
  33.             echo " <a href='lista-usuarios.php?pagina=".($pageNum+1)."'>Siguiente ></a>";
  34.         }
  35.     }
  36. ?>
  #4 (permalink)  
Antiguo 02/04/2013, 10:59
Avatar de cristo995  
Fecha de Ingreso: noviembre-2012
Mensajes: 187
Antigüedad: 12 años
Puntos: 0
Respuesta: paginacion en PHP

muchas gracias. con tu ayuda y con la ayuda de un tutorial que vi . ya pude hacer mi paginacion. aqui el codigo.



<?php
//Base de datos: paginacion
//tabla : usuario
//campos: codigo , username , password , nombre, correo

$host = 'localhost';
$user = 'root';
$pass = '';


$conexion = mysql_connect($host,$user,$pass)or die("no se pudo conectar con el srvidor");
$db = mysql_select_db('paginacion') or die ("No se pudo conectar a la base de datos");

$consulta = mysql_query("SELECT * FROM usuario",$conexion) or die ("No se pudo realizar la consulta".mysql_error());

$num_registros = mysql_num_rows($consulta);

$registros = 5;
$pagina = $_GET['num'];

if(is_numeric($pagina))
$inicio = (($pagina-1)*$registros);
else
$inicio = 0;

$consulta2 = mysql_query("SELECT * FROM usuario LIMIT $inicio,$registros",$conexion);

$paginas=ceil($num_registros/$registros);


echo'
<table border="1px" width="400px">
<tr>
<td>codigo</td>
<td border="1px solid black">User Name</td>
<td>Password</td>
<td>Nombre</td>
<td>Correo</td>
</tr>';

while($resultado = mysql_fetch_array($consulta2)){
echo '
<tr><td>'.$resultado['codigo'].'</td><td>'.$resultado['username'].'</td><td>'.$resultado['password'].'</td><td>'.$resultado['nombre'].'</td><td>'.$resultado['correo'].'</td></tr>';
}
echo '</table>';


if($pagina > 1)
echo "<a href='index.php?num=".($pagina-1)."'>Anterior</a> ";


for($contador=1;$contador <= $paginas;$contador++)
{
if($contador == $pagina)
echo $contador." ";
else
echo "<a href='index.php?num=".$contador."'>$contador</a> ";
}

if($pagina < $paginas)
echo "<a href='index.php?num=".($pagina+1)."'>Siguiente</a> ";

?>

Etiquetas: html, mysql, paginacion, registro, resultados, select, sql, tabla, usuarios, variables
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 22:37.