Er zijn diverse Paginering script te vinden, sommige zijn zo eenvoudig dat er geen rekening wordt gehouden met grote hoeveelheid pagina's:
Zelf maak ik gebruik van een Pagination Module voor het Kohana Framework maar ik wil een standalone Pagination Library die voldoet aan de volgende eisen:
1. Niet oneindig veel pagina links:
2. Een link naar de vorige/volgende pagina is instelbaar:
3. Een link naar de eerste/laatste pagina is instelbaar:
4. Bij meer dan x aantal pagina's onstaat er floating:
5. Het aantal links voor en na de huidige pagina in floating is instelbaar (3):
Voorbeeld
require_once 'pagination.class.php';
mysql_connect('localhost', 'root', 'root') or die(mysql_error());
mysql_select_db('davidvandertuijn') or die(mysql_error());
$oPagination = new Pagination;
$sql1 = "SELECT id, omschrijving FROM plaatsen";
$query1 = mysql_query($sql1) or die(mysql_error());
$total_items = mysql_num_rows($query1);
$oPagination->setCurrentPageKey('page');
$oPagination->setItemsPerPage(5);
$oPagination->setTotalItems($total_items);
$oPagination->initialize();
$sql2 = $sql1 . ' LIMIT '.intval($oPagination->getOffset()).', '.intval($oPagination->getItemsPerPage());
$query2 = mysql_query($sql2) or die(mysql_error());
?>
<html>
<head>
<style>
p.pagination a {
color: #3366CC;
text-decoration: none;
}
p.pagination a:hover {
color: #000000;
text-decoration: underline;
}
p.pagination {
font-family: "Lucida Grande", "Lucida Sans Unicode";
font-size: 14px;
}
</style>
</head>
<body>
<table cellpadding=3 cellspacing=1 border=1>
<tr>
<th>id</th>
<th>omschrijving</th>
</tr>
<?php while ($row = mysql_fetch_assoc($query2)) { ?>
<tr>
<td><?php echo $row['id']; ?></td>
<td><?php echo $row['omschrijving']; ?></td>
</tr>
<?php } ?>
<table>
<p class="pagination">
<?php echo $oPagination->render(); ?>
<span style="float: right"><?php echo $oPagination->getTotalItems(); ?> records</span>
</p>
</body>
</html>
Resultaat
Download: pagination.class.php
Zie ook: Paginering of Paginatie