Pagination

Filepath: phork/php/utilities/Pagination.class.php

The Pagination class calculates all the numbers necessary to build out pagination. It doesn't actually build out anything, but the numbers are available for a template to take advantage of.


Basic Example

$intCurrentPage = 10;
$intTotalItems = 100;
$intItemsPerPage = 5;
$intNumLinks = 4;

$objPagination = new Pagination($intCurrentPage, $intTotalItems, $intItemsPerPage, $intNumLinks);

$intStartItem = $objPagination->getStartItem();
$intEndItem = $objPagination->getEndItem();

$intStartPage = $objPagination->getStartPage();
$intEndPage = $objPagination->getEndPage();
$intTotalPages = $objPagination->getTotalPages();

Output Example

<?php if ($intStartPage != $intEndPage) { ?>
<div class="pagination">
    Items <?php echo($intStartItem); ?> to <?php echo($intEndItem); ?>
    <ul>
        <?php if ($intCurrentPage != 1) { ?>
            <li><a href="<?php echo($strUrl); ?>/page=<?php echo($intCurrentPage - 1); ?>/">Prev</a></li>
        <?php } ?>
        
        <?php if ($intStartPage != 1) { ?>
            <li><a href="<?php echo($strUrl); ?>/page=1/">1</a></li>
            
            <?php if ($intStartPage != 2) { ?>
            <li class="divider">...</li>
            <?php } ?>
        <?php } ?>
        
        <?php for ($i = $intStartPage; $i <= $intEndPage; $i++) { ?>
            <li><a href="<?php echo($strUrl); ?>/page=<?php echo($i); ?>/"><?php echo($i); ?></a></li>
        <?php } ?>
        
        <?php if ($intEndPage != $intTotalPages) { ?>
            <?php if ($intEndPage != $intTotalPages - 1) { ?>
            <li class="divider">...</li>
            <?php } ?>
            
            <li><a href="<?php echo($strUrl); ?>/page=<?php echo($intTotalPages); ?>/"><?php echo($intTotalPages); ?></a></li>
        <?php } ?>
        
        <?php if ($intCurrentPage != $intTotalPages) { ?>
            <li><a href="<?php echo($strUrl); ?>/page=<?php echo($intCurrentPage + 1); ?>/">Next</a></li>
        <?php } ?>
    </ul>
</div>
<?php } ?>

Output Result

Items 46 to 50
Prev 1 ... 8 9 10 11 ... 20 Next