Guten Abend.
Ich setze (bzw. werde einsetzen), von mir geschriebene, folgende Blätterfunktion in einer gbook.php ein.
PHP-Code:
function blaettern( $aktuelle_seite, $anzahl_seiten, $bereich )
{
# Setze linken
$links = $bereich;
$rechts = $bereich;
$ausgabe = array();
# Link zur neuesten (aktuellsten) Seite
if( $aktuelle_seite - $links > 1 )
{
$ausgabe[] = ' <a href="gbook.php?page=1">Neueste</a> ';
}
# Eine Seite weiter in Richtung neueste (aktuellste Seite)
$newer = '';
if( $aktuelle_seite != 1 )
{
$newer = $aktuelle_seite - 1;
$ausgabe[] = ' <a href="gbook.php?page='.$newer.'"><<</a> ';
}
# Lege nun max. Anzahl der Links im linken u. rechten Bereich fest kontra der Vorgabe
if( ( $aktuelle_seite - $links ) < 1 )
{
$links = $aktuelle_seite - 1;
}
if( ( $aktuelle_seite + $rechts ) > $anzahl_seiten )
{
$rechts = $rechts - ( ( $aktuelle_seite + $rechts ) - $anzahl_seiten );
}
# Ausgabe der Links (linker Bereich <-> aktuelle Seite <-> rechter Bereich)
$round = $aktuelle_seite - $links;
$zahler_down = $links+$rechts;
$seiten = '';
for( $zaehler_up = 0; $zaehler_up <= $links+$rechts ; $zaehler_up++ )
{
if ( $round < $aktuelle_seite )
{
$seite = $aktuelle_seite - $links + $zaehler_up;
$link = $anzahl_seiten - $seite + 1;
$ausgabe[] = ' <a href="gbook.php?page='.$seite.'">'.$link.'</a> ';
}
if ( $round > $aktuelle_seite )
{
$seite = $aktuelle_seite + $rechts - $zahler_down;
$link = $anzahl_seiten - $seite + 1;
$ausgabe[] = ' <a href="gbook.php?page='.$seite.'">'.$link.'</a> ';
}
if ( $round == $aktuelle_seite )
{
$link = $anzahl_seiten - $aktuelle_seite + 1;
$ausgabe[] = ' <strong>'.$link.'</strong> ';
}
$round += 1;
$zahler_down -= 1;
}
# Eine Seite weiter in Richtung Älteste
$older = '';
if( $aktuelle_seite != $anzahl_seiten )
{
$older = $aktuelle_seite + 1;
$ausgabe[] = ' <a href="gbook.php?page='.$older.'">>></a> ';
}
# Link zur ältesten Seite
$last = '';
if( ( $anzahl_seiten - $aktuelle_seite - $rechts ) > 0 )
{
$ausgabe[] = ' <a href="gbook.php?page='. $anzahl_seiten .'">Älteste</a> ';
}
return $ausgabe;
}
Die Ausgabe erfolgt über eine for-Schleife
PHP-Code:
# $aktuelle Seite über die $_GET['page'] holen
# $anzahl_seiten über ein ->num_rows;
# $bereich: Anzahl der Links, links und rechts der aktuellen Seite
$seiten = blaettern( $aktuelle_seite, $anzahl_seiten, $bereich );
for ( $i = 0; $i < count($seiten); $i++ )
{
echo $seiten[$i];
}
..und sieht dann in etwa (je nach Anzahl der vorhandenen Seiten) so aus:
Code:
Neueste << 9 8 7 6 5 4 3 >> Älteste
9,8,7 -> linker Bereich
6 -> aktuelle Seite
543 -> rechter Bereich
Was haltet ihr von der Funktion? Gibt es etwas was ihr anders (evtl. besser) machen würdet oder sind, eurer Meinung nach, Teile dabei die absolut garnicht da gehen?