In einer Endlostabelle konnte ich das Problem lösen. Wenn ich aber pro Seite nur eine bestimmte Anzahl von Datensätzen anzeigen möchte (Limit $start, MAX_EINTRAEGE) passt mein "logisches" Konzept nicht.
Naja, du beschneidest die Einträge bei der Abfrage
$det = "SELECT * FROM Beispiel ORDER BY datum DESC LIMIT $start, ".MAX_EINTRAEGE;
und dann nimmst du eine Untermenge
if ($Jahr == $nJahr) {
Logischerweise sollte das andersherum sein: die Beschneidung durch seiteAktuell und MAX_EINTRAEGE _nach_ der Zusammenstellung der Datensätze kommen.
Dies kannst Du erreichen, wenn Du zum Beispiel nach der Abfrage mit $Jahr==$nJahr die Ergebnisse erst in einen Vektor schreibst und denn dann beschneidest. Anschliessend wird dieser Inhalt in Deine Tabelle geschrieben. Überhaupt rate ich Dir davon ab, in Deinen Code die echo's einzubauen. Lieber trenne Datenbeschaffung und Datenausgabe (vielleicht sogar über ein Template) über den beschriebenen Zwischenschritt. Das erleichtert die Wartung ungemein, besonders bei Tabellen.
PS: Bitte rücke den Code innerhalb Schleifen (etc.) ein, wenn Du ihn postest.
PPS:
$d= explode("-", $datum);
$datum = $d[2].".".$d[1].".".$d[0];
$nJahr = $d[0];
dafür gibt es php-Funktionen wie [date()](http://de.php.net/manual/de/function.date.php).
LG,
LSpreee