Moin!
Sven du hast Recht ich arbeite mit meinem Bruder an dem Projekt Gästebuch.
Diese Information wäre nett gewesen gleich zu kriegen. Ansonsten sieht das nämlich für die Helfenden etwas doof aus. Außerdem: Koordination ist auch keine verkehrte Sache - wäre gut, wenn ihr von euren Fragen im Forum gegenseitig wißt.
Deshalb 2 mal der selbe Code. Also pass auf wir fangen gerade an php zu lernen und ich glaube wir haben ein zu grosses Projekt begonnen. Doch wir wollen gern ein eigenes Buch.
Nein, das glaube ich nun wiederum gar nicht. Ein Gästebuch ist mit das simpelste Projekt, was man als Anfänger angehen kann, und man kann eine Menge davon lernen.
So nun zu den Probs.
Wir haben das mit dem array_reverse hinbekommen.
Hab ich gesehen.
Es dreht uns die Einträge nun andersrum so das die neusten Einträge oben stehen.
Ja.
foreach (array_reverse (file($file)) as $array)
Du startest eine FOREACH-Schleife, die jedes Element eines Arrays behandelt. Dieses Einzelelement wird in $array abgelegt. Und der Ausgangspunkt ist ein anonymes Array, nämlich array_reverse(file($file)). Die Funktion file() liefert ein Array zurück, welches mit array_reverse() nochmal umgedreht wird - es wird aber nirgendwo in einer Variablen gespeichert, damit man später noch mal drauf zugreifen kann.
Doch laut dem Eintrag von Tobias soll das wohl mit 2 dimensianalen Arrays besser funktionieren ?
Naja, darüber kann man streiten. Es hängt ganz davon ab, wie wichtig ein eleganter Datenzugriff ist. Ich wäre aber dafür.
Wir grübeln die ganze Zeit und testen doch wir bekommen das nicht gebacken...ist es besser wir geben auf ?
"Aufgeben ist keine Option." Zweidimensionale Arrays sind auch nicht schlimmer, als eindimensionale Arrays.
Zunächst solltet ihr versuchen, die extreme Kurzform der Schleife oben mal etwas zu entwirren.
$gbfile = array_reverse(file($file));
Das speichert das umgedrehte Gästebuch in einem Array.
foreach ($gbfile as $array)...
Und so wird es dann zeilenweise abgearbeitet.
Resultat: Keinerlei Änderung am Verhalten. ABER: Ihr könnt jetzt zusätzlich ermitteln, wieviele Elemente das (noch eindimensionale!) Array enthält:
$eintraege = count($gbfile); (siehe http://www.php.net/count)
Dies ergibt beispielsweise 35.
Mit dieser Zahl könnt ihr errechnen, wieviele GB-Seiten es geben soll. Ihr legt am Skriptanfang einfach eine Variable mit der Zahl der Einträge pro Seite fest:
$post_pro_seite = 7;
Und die Zahl der Seiten ergibt sich aus:
$seiten = ceil($eintraege / $post_pro_seite); (siehe http://www.php.net/ceil)
ceil() erhöht die Zahl auf die nächstgrößere ganze Zahl - weil ja nur ganze Seiten ausgegeben werden können. Wenn also die Division 3,4 Seiten ergibt, werden 4 ganze Seiten benötigt (die letzte eben nur teilweise).
Mit der Seitenzahl könnt ihr dann dynamisch eine Reihe von Links zu den einzelnen Seiten ausgeben.
Bleibt noch die spannendste Frage: Wie wird eine einzelne Seite angezeigt?
Dazu müßt ihr dem Skript irgendwie sagen, welche Seite es anzeigen soll. Dazu sind Parameter im Link gut:
<a href="script.php?seite=2"> für Seite 2.
Seite 2 definiert sich als "Die ersten $post_pro_seite Einträge sind auf Seite 1, Seite 2 beginnt mit Eintrag Nummer $post_pro_seite + 1".
Jetzt ist das mit den Arrays aber so, dass die Eintragsnummern dummerweise bei Null beginnen - also wird überall 1 abgezogen, und Seite 2 beginnt bei Eintragsnummer $post_pro_seite.
Seite 3 beginnt dann bei 2 * $post_pro_seite. Und Seite 1 beginn bei 0 * $post_pro_seite (also bei Null). Alle Seiten geben $post_pro_seite Einträge aus.
Ok, jetzt seid ihr wieder dran!
- Sven Rautenberg
ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|