Hier mal ein kleiner Denkanstoss für Leute, die eine "Blätterfunktion" in ihr Gästebuch, News-System oder was auch immer, integrieren wollen.
PHP-Code:
<?php
//
// "Initialisierung"
// Variablen am besten vorher noch prüfen!
//
// Von $start...
$start = strip_tags($_GET['start']);
// maximal $limit objekte anzeigen
$limit = strip_tags($_GET['limit']);
// Das Standardlimit, darf bearbeitet werden.
$default_limit = 30;
//
// Anzahl der Beiträge aus der Datenbank auslesen
//
// Beispielsquery:
$max = mysql_result(mysql_query("SELECT COUNT(`id`) FROM `guestbook`"), 0);
//
// Variablencheck
//
// Limit ungülitg? Standard setzen.
if ($limit <= 0 || !is_numeric($limit)) $limit = $default_limit;
// Start zu gross? Setze ihn auf grösstmöglichstes Resultat.
if ($start >= $max) $start = $max - $limit;
// Start = 1 falls falsch.
if ($start <= 0 || !is_numeric($start)) $start = 1;
// Limit zu gross? Setze ihn auf grösstmöglichstes Resultat.
if ($start + $limit > $max) $start = $max - $limit;
// Der Counter. Später wichtig um Einträge nummerieren zu können.
$counter = $start;
//
// Hier ein Beispiel:
//
// Beispielsoutput: Zeige 80 Einträge ab 320 von maximal 800
printf("Zeige %d Einträge ab %d von maximal %d", $limit, $start, $max);
// Beispielsoutput: Vorherige Seite (guestbook.php?start=240) Nächste Seite (guestbook.php?start=400)
printf("<a href='%s?start=%d'>Vorherige Seite</a> <a href='%s?start=%d'>Nächste Seite</a>", $_SERVER['PHP_SELF'], $start - $limit, $_SERVER['PHP_SELF'], $start + $limit);
// SQL-Query; Beiträge aus der Datenbank lesen
// Anstatt "SELECT *" aber am besten alle Zellen einzeln auswählen, das schont den Server ;)
$query = mysql_query("SELECT * FROM `guestbook` WHERE `disabled` <> '1' LIMIT ".mysql_real_escape_string($start).", ".mysql_real_escape_string($limit).";");
while ($row = mysql_fetch_array($row)) {
// Hier irgendwelchen Templateschnösel.
// $counter kann verwendet werden, um die ID des Beitrages zu erkennen (bzw. die Position in der Datenbank)
echo $row['username'] . ' hat folgendes geschrieben:<br />' . $row['text'] . '<br /><br />';
}
?>
Das ganze kann man natürlich noch erweitern. z. B. Seite 1, 2, 3, usw. Das sollte aber kein Problem sein, denke ich.
