ESPAÑOL: ¡Bienvenido! Es la página inicial de OSIRIS LMS. Regístrese hoy mismo y obtenga acceso a todos nuestros CURSOS GRATUITOS. Clic aquí para registrarse ya. Hemos desarrollado una amplia gamma de cursos “online” (Programación, Multimedia, 3D, Habilidades suaves, etc.), disponibles 24X7. Para más detalle consulte la lista de Cursos Disponibles. Si tiene problemas con el acceso a la plataforma, vea el Tour Virtual de Osiris LMS. También puede consultar la sección de FAQ’s o enviar Solicitud de Soporte Técnico.

ForoForo de discusión
Paginación de registros en PHP
Buscador:
Foro > PHP > Paginación de registros en PHP

Enviado por: Texto del mensaje
Antonio Gonzalez
Nivel : Profesor
Mensajes : 23
> Perfil
Escrito el : Sábado 16-12-2006 A las : 05:51 ( > un mes )
Asunto : Paginación de registros en PHP
Para implementar paginación, independientemente de la tecnología que usemos, realmente se resume en dos formas: la primera es extraer todos los registros de la tabla, almacenar en un array e ir desplegando por bloques y la segunda es extraer de la base de datos solo los registros que vamos a desplegar. La primera forma no es tan práctica, ya que si nuestra tabla tiene muchos registros, imaginemos miles o millones, la consulta a la base de datos sería muy pensada, por otro lado tendremos que almacenar estos registros en un array que es también tiempo y memoria del servidor y hasta después iremos extrayendo los registros por bloques. Considerando estas desventajas, optaremos por la segunda forma extrayendo directamente de la tabla solo los registros que vamos a desplegar. Veamos un ejemplo de paginación consultando a una base de datos MySQL desde PHP.

// Abre conexión con la base de datos
$connection = mysql_connect("[localhost]", "[nombre_usuario]", "[contrasena]");
// Selecciona la base de datos
mysql_select_db("[nombre_db]", $connection);
if (!isset($_GET['pag'])) {
$pag = 1; // Por defecto, pagina 1
} else {
$pag = $_GET['pag']; // Página actual
}
// Obtiene todos los registros de la tabla
$result = mysql_query("SELECT COUNT(*) FROM [nombre_tabla]", $connection);
list($total) = mysql_fetch_row($result);
// Número de registros por página
$tampag = 10;
// Calcula el rango de los registros
$reg1 = ($pag-1) * $tampag;
// Obtiene los registros en el rango correspondiente
$result = mysql_query("SELECT [columna1], [columna2] FROM [nombre_tabla] LIMIT $reg1, $tampag", $connection);
// Imprime todos los registros de la página
if (mysql_num_rows($result)){
echo "<table border = '1'>";
echo "<tr><td>[columna1]</td><td>[columna2]</td></tr>";
while ($row = @mysql_fetch_array($result)) {
echo "<tr><td>".$row["[columna1]"].
"</td><td>".$row["[columna2]"]."</td></tr>";
}
echo "</table>";
}
else
echo "¡No se encontró ningún registro!";

/* Función para paginación
* $actual - página actual
* $total - total de registros
* $reg_pagina - registros por página
* $link - enlace para la siguiente página
* Devuelve la cadena HTML de paginación
*/

function paginar($actual, $total, $reg_pagina, $link) {
$total_paginas = ceil($total/$reg_pagina);
$anterior = $actual - 1;
$posterior = $actual + 1;
if ($actual>1)
$texto = "<a href='$link$anterior'>«</a> ";
else
$texto = "<b>«</b> ";
for ($i=1; $i<$actual; $i++)
$texto .= "<a href='$link$i'>$i</a> ";
$texto .= "<b>$actual</b> ";
for ($i=$actual+1; $i<=$total_paginas; $i++)
$texto .= "<a href='$link$i'>$i</a> ";
if ($actual<$total_paginas)
$texto .= "<a href='$link$posterior'>»</a>";
else
$texto .= "<b>»</b>";
return $texto;
}

// Pinta la cadena HTML de paginación
echo paginar($pag, $total, $tampag, "paginador.php?pag=");


Solo tenemos que reemplazar los datos que están entre corchetes [] y listo, ya tenemos un componente de paginación que podemos incluir en nuestras páginas.
Profesor de PHP
Osiris LMS
Amplía tus conocimientos en línea