<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>Visualizar un archivo csv con paginación en PHP</title>
<style>
table {
width:400px;
}
table,th,td {
border:1px solid black;
border-collapse:collapse;
padding:2px 5px;
}
.nav {
width:400px;
text-align:center;
margin-top:20px;
}
.nav span, .nav a {
margin-left:10px;
}
.nav span:first-child, .nav a:first-child {
margin-left:0px;
}
.nav span {
font-weight:bold;
}
.nav a {
color:#00f;
}
</style>
</head>
<body>
<h1>Visualizar un archivo csv con paginación en PHP</h1>
<?php
if (($handle = fopen("archivo.csv", "r")) !== FALSE)
{
# contara el numero de filas totales para poder crear la paginacion
$filas=0;
# contara el numero de filas a mostrar
$fila=0;
# determina la pagina en la que nos encontramos. 0 es la primera pagina
$pagina=0;
# Determinamos el numero de filas a mostrar
$filasPorPagina=10;
# si hemos recibido por get el numero de pagina...
if(isset($_GET["pag"]) && is_numeric($_GET["pag"]))
$pagina=$_GET["pag"];
echo "<table>";
echo "<tr>";
echo "<th>Nombre</th>";
echo "<th>Apellido</th>";
echo "<th>Telefono</th>";
echo "</tr>";
# Hacemos un bucle para recorrer todas las lineas del archivo csv
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
{
$filas++;
if($filas>$pagina*$filasPorPagina)
{
if($fila++<$filasPorPagina)
{
$num = count($data);
echo "<tr>";
for($i=0;$i<$num;$i++)
{
echo "<td>".$data[$i]."</td>\n";
}
echo "</tr>";
}
}
}
fclose($handle);
echo "</table>";
}
# realizamos la paginación
if($filas>$filasPorPagina)
{
echo "<div class='nav'>";
# inicio
if($pagina==0)
echo "<span>Anterior</span>";
else
echo "<a href='".$_SERVER["PHP_SELF"]."?pag=".($pagina-1)."'>Anterior</a>";
for($i=0;$i<ceil($filas/$filasPorPagina);$i++)
{
if($i==$pagina)
{
# esta es la pagina en la que nos encontramos actualmente
echo "<span>".($i+1)."</span>";
}else{
echo "<a href='".$_SERVER["PHP_SELF"]."?pag=".$i."'>".($i+1)."</a>";
}
}
# final
if($pagina==ceil($filas/$filasPorPagina)-1)
echo "<span>Siguiente</span>";
else
echo "<a href='".$_SERVER["PHP_SELF"]."?pag=".($pagina+1)."'>Siguiente</a>";
echo "</div>";
}
?>
<p>Para este ejemplo, el <u>archivo.csv</u> contiene algo como:
<i><br>nombre1,apellido1,telefono1
<br>nombre2,apellido2,telefono2
<br>nombre3,apellido3,telefono3
...</i>
</p>
</html>