<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="learning.paginator.simple">
    <title>Einfaches Beispiel</title>

    <para>
        In diesem ersten Beispiel wollen wir nichts spektakuläres, aber hoffentlich gibt es eine
        gute Idee darüber wozu <classname>Zend_Paginator</classname> 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 <methodname>factory()</methodname>
        Methode in der Klasse <classname>Zend_Paginator</classname> verwenden um ein
        <classname>Zend_Paginator</classname> Objekt mit unseren Array in Ihm zu erhalten.
    </para>

    <programlisting language="php"><![CDATA[
// 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);
]]></programlisting>

    <para>
        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.
    </para>

    <programlisting language="php"><![CDATA[
// 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>
]]></programlisting>

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

    <programlisting language="php"><![CDATA[
// 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>
]]></programlisting>

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

    <para>
        Dieses einfache Beispiel demonstriert einen kleinen Teil davon was mit
        <classname>Zend_Paginator</classname> 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 <classname>Zend_Db_Select</classname> arbeitet!
    </para>

    <para>
        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.
    </para>

    <programlisting language="php"><![CDATA[
// 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>
]]></programlisting>

    <para>
        Wie man sehen kann ist dieses Beispiel nicht sehr unterschiedlich vom vorhergehenden.
        Der einzige Unterschied besteht darin dass man ein <classname>Zend_Db_Select</classname>
        Objekt statt einem Array an die <methodname>factory()</methodname> 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 <classname>Zend_Paginator</classname>
        Kapitel im Referenz Handbuch bei den Adaptern DbSelect und DbTableSelect nachgesehen werden.
    </para>
</sect1>
