Tach!
leider verstehe ich überhaupt nicht, was du mir sagen willst.
Du fragtest, wie man die Sache angehen kann. Ich habe einen eigenen Plan aufgezeigt, wie ich die Sache lösen würde. Das war ein komplettes (neues) Konzept und keine Ergänzung zu deinem Lösungsansatz. Du versucht, aus der Schleife heraus zu steuern. Du müsstest dann jeweils die alte Seite beenden und eine neue anfangen. Aber Anfang und Ende hast du auch noch außen drumherum. Diese Dopplung muss nicht sein. Mein Plan hingegen hat die Steuerung, welche Datensätze auszugeben sind, außerhalb der Schleife. Auch das Ausgeben von Kopf und Fuß ist ohne Code-Wiederholung gelöst. Ich habe zwei Schleifen geschachtelt. Die eine läuft solange noch Datensätze übrig sind und erzeugt jeweils eine Seite. Die innere Schleife (die Datensatzschleife) gibt die Datensätze der Seite aus.
Am Anfang ist das Array vollständig. Im ersten Durchlauf werden daraus 5 Datensätze ausgeschnitten und mit diesen die Datensatzschleife durchlaufen. Zum Manipulieren von Arrays gibt es eine umfangreiche Funktionssammlung. array_splice() ist für diesen Fall geeignet. Der nächste Durchlauf findet statt, wenn im ersten Array noch Datensätze übrig sind, ansonsten ist Schluss. Von diesem Rest werden 15 Stück ausgeschnitten und die Datensatzschleife aufgerufen. Und so weiter und so fort.
dedlfix.