PEAR Manual
Prev |  | Next

# Introduction

Introduction -- Usage of Pager_Sliding

## What is Pager_Sliding?

Pager_Sliding is a class to page an array of data. It is taken as input and it is paged according to various parameters. Pager_Sliding also builds links within a specified range, and allows complete customization of the output (it even works with mod_rewrite). It is compatible with PEAR::Pager's API

## Deprecated

This package is deprecated in favour of the new Pager v.2.x.

## Example 1

This simple example will page the array of alphabetical letters, giving back pages with 3 letters per page, and links to the previous two / next two pages:

    require_once 'Pager/Sliding.php';
    $params = array(
                'perPage'    => 3,
                'delta'      => 2,
                'itemData'   => array('a','b','c','d','e',[...omissis...],'z')
                );
    $pager = & new Pager_Sliding($params);
    $data  = $pager->getPageData();
    $links = $pager->getLinks();
    //$links is an ordered+associative array with 'back'/'pages'/'next'/'first'/'last'/'all' links.
    //NB: $links['all'] is the same as $pager->links;

    //echo links to other pages:
    echo $links['all']

    //Show data for current page:
    echo 'PAGED DATA: ' ; print_r($data);

    //Results from methods:
    echo 'getCurrentPageID()...: '; var_dump($pager->getCurrentPageID());
    echo 'getNextPageID()......: '; var_dump($pager->getNextPageID());
    echo 'getPreviousPageID()..: '; var_dump($pager->getPreviousPageID());
    echo 'numItems()...........: '; var_dump($pager->numItems());
    echo 'numPages()...........: '; var_dump($pager->numPages());
    echo 'isFirstPage()........: '; var_dump($pager->isFirstPage());
    echo 'isLastPage().........: '; var_dump($pager->isLastPage());
    echo 'isLastPageComplete().: '; var_dump($pager->isLastPageComplete());
    echo '$pager->range........: '; var_dump($pager->range);

In case you're wondering, $pager->range is a numeric array; its keys are the numbers of the pages in the current range, and the matching values are booleans (`TRUE` if its key represents currentPage, `FALSE` otherwise). This array can be useful to build the links manually, e.g. when using a template engine.

## Example 2

This example shows how you can use this class with mod_rewite. Let's suppose we have a .htaccess like this:

    ---------
    RewriteEngine on
    #Options FollowSymlinks

    RewriteBase /
    RewriteRule ^articles/([a-z]{1,12})/art([0-9]{1,4})\.html$ /article.php?num=$2&amp;month=$1 [L]
    ---------

It should transform an url like "/articles/march/art15.html" into "/article.php?num=15&month=march"

    require_once 'Pager/Sliding.php';

    $month = 'september';
    $params = array(
                'append'    => false,
                'urlVar'    => 'num',
                'path'      => 'http://myserver.com/articles/' . $month,
                'fileName'  => 'art%d.html',  //Pager replaces "%d" with page number...
                'itemData'  => array('a','b','c',[...omissis...],'z'),
                'perPage'   => 3
                );
    $pager = & new Pager_Sliding($params);

    $data  = $pager->getPageData();
    echo $pager->links;
    echo 'Data for current page: '; print_r($data);

## More pagers in a single page

Using more than one pager in a single page is as simple as using a different `urlVar` for each pager:

    require_once 'Pager/Sliding.php';

    //first pager
    $params1 = array(
                'perPage'    => 3,
                'urlVar'     => pageID_articles,  //1st identifier
                'itemData'   => $someArray
                );
    $pager1 = & new Pager_Sliding($params1);
    $data1  = $pager1->getPageData();
    $links1 = $pager1->getLinks();

    //second pager
    $params2 = array(
                'perPage'    => 8,
                'urlVar'     => pageID_news,      //2nd identifier
                'itemData'   => $someOtherArray
                );
    $pager2 = & new Pager_Sliding($params2);
    $data2  = $pager2->getPageData();
    $links2 = $pager2->getLinks();

Prev | Home | Next
Pager_Sliding | Up | Pager (v.1.x) vs. Pager_Sliding