Paginering

Er zijn diverse Paginering script te vinden, sommige zijn zo eenvoudig dat er geen rekening wordt gehouden met grote hoeveelheid pagina's:

Paginering

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:

Paginering

2. Een link naar de vorige/volgende pagina is instelbaar:

Paginering

3. Een link naar de eerste/laatste pagina is instelbaar:

Paginering

4. Bij meer dan x aantal pagina's onstaat er floating:

Paginering

5. Het aantal links voor en na de huidige pagina in floating is instelbaar (3):

Paginering


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

Resultaat


Download: pagination.class.php


Zie ook: Paginering of Paginatie