# Einfaches Beispiel

In diesem ersten Beispiel wollen wir nichts spektakuläres, aber hoffentlich gibt es eine gute Idee darüber wozu Zend_Paginator designt wurde. Angenommen wir haben ein Array das $data heißt mit den Zahlen 1 bis 100 in Ihm, welches wir in eine Anzahl von Seiten aufteilen wollen. Man kann die statische factory() Methode in der Klasse Zend_Paginator verwenden um ein Zend_Paginator Objekt mit unseren Array in Ihm zu erhalten.

    // Erstellt ein Array mit den Zahlen 1 bis 100
    $data = range(1, 100);

    // Holt ein Paginator Objekt und verwendet Zend_Paginator's eingebaute Factory
    $paginator = Zend_Paginator::factory($data);

Wir sind fast fertig! Die Variable $paginator enthält jetzt eine Referenz auf das Paginator Objekt. Standardmäßig ist es eingestellt 10 Elemente pro Seite anzuzeigen. Um die Elemente für die aktuell aktive Seite anzuzeigen, ist alles was getan werden muss durch das Paginator Objekt mit einer foreach Schleife zu iterieren. Die aktuell aktive Seite ist standardmäßig die erste Seite wenn Sie nicht explizit spezifiziert wurde. Wir werden später sehen wie eine spezifische Seite ausgewählt werden kann. Der folgende Abschnitt zeigt eine unsortierte Liste welche die Zahlen 1 bis 10 enthält ,welche die Zahlen der ersten Seite sind.

    // Erstellt ein Array mit den Zahlen 1 bis 100
    $data = range(1, 100);

    // Holt ein Paginator Objekt und verwendet Zend_Paginator's eingebaute Factory
    $paginator = Zend_Paginator::factory($data);

    ?><ul><?php

    // Jedes Element der aktuellen Seite in einem Listen Element darstellen
    foreach ($paginator as $item) {
        echo '<li>' . $item . '</li>';
    }

    ?></ul>

Jetzt versuchen wir die Elemente der zweiten Seite darzustellen. Die setCurrentPageNumber() Methode kann verwendet werden um auszuwählen welche Seite man sehen will.

    // Erstellt ein Array mit den Zahlen 1 bis 100
    $data = range(1, 100);

    // Holt ein Paginator Objekt und verwendet Zend_Paginator's eingebaute Factory
    $paginator = Zend_Paginator::factory($data);

    // Wählt die zweite Seite
    $paginator->setCurrentPageNumber(2);

    ?><ul><?php

    // Jedes Element der aktuellen Seite in einem Listen Element darstellen
    foreach ($paginator as $item) {
        echo '<li>' . $item . '</li>';
    }

    ?></ul>

Wie erwartet stellt dieser kleine Abschnitt eine unsortierte Liste mit den Zahlen 11 bis 20 in Ihm dar.

Dieses einfache Beispiel demonstriert einen kleinen Teil davon was mit Zend_Paginator getan werden kann. Aber eine echte Anwendung liest selten in seinen Daten von einem reinen Array, deshalb ist der nächste Abschnitt dazu gedacht zu zeigen wir man Paginator verwenden kann um Ergebnisse einer Datenbank Abfrage seitenweise darzustellen. Bevor weitergelesen wird, sollte man sicherstellen das man sich damit auskennt wie Zend_Db_Select arbeitet!

Im Datenbank Beispiel sehen wir nach einer Tabelle mit Blog Posts welche 'posts' genannt wird. Gehen wir direkt hinein und schauen uns ein einfaches Beispiel an.

    // Eine Select Abfrage erstellen. $db ist ein Zend_Db_Adapter Objekt, von dem
    // wir annehmen das es bereits im Skript existiert
    $select = $db->select()->from('posts')->order('date_created DESC');

    // Holt ein Paginator Objekt und verwendet Zend_Paginator's eingebaute Factory
    $paginator = Zend_Paginator::factory($select);

    // Wählt die zweite Seite
    $paginator->setCurrentPageNumber(2);

    ?><ul><?php

    // Jedes Element der aktuellen Seite in einem Listen Element darstellen
    foreach ($paginator as $item) {
        echo '<li>' . $item->title . '</li>';
    }

    ?></ul>

Wie man sehen kann ist dieses Beispiel nicht sehr unterschiedlich vom vorhergehenden. Der einzige Unterschied besteht darin dass man ein Zend_Db_Select Objekt statt einem Array an die factory() Methode des Paginator's übergibt. Für weitere Details darüber wie der Datenbank Adapter sicherstellt das eigene Anfragen effizient ausgeführt werden, sollte in das Zend_Paginator Kapitel im Referenz Handbuch bei den Adaptern DbSelect und DbTableSelect nachgesehen werden.