ich habe "zurück" bedingung korrigiert,
in
if ($start != 0)
{
echo "<a href="gaestebuch.php?";
echo "start=".($start-10);
echo "&eintraege_pro_seite=".$eintraege_pro_seite;
bin richtig stolz drauf !! :)
Na, das ist doch was :) Jetzt solltest Du Dir nur überlegen, was passiert, wenn irgendein übler Wicht $start den Wert 5 verpasst..
Du solltest nebenbei bemerkt statt der 10 in "-10" (bzw. "+10" zum Weiterblättern) die Variable $eintraege_pro_seite benutzen, quasi als Konstante.
Du hast mehrere Stellen im Skript (ich zähle sieben für den Idealfall), an denen die Schrittweite für Berechnungen benutzt wird. Bedienst Du Dich überall im Skript $eintraege_pro_seite, brauchst Du bei Änderungen (z.B. falls Dir 15 Einträge pro Seite besser gefallen) nur noch die eine Stelle ändern, an denen $eintraege_pro_seite "gefüllt" wird. Schreibst Du hingegen überall direkt die Zahl 10 statt $eintraege_pro_seite, müsstest Du dann sämtliche "10"-en im Skript von Hand ersetzen - da kann man leicht mal was übersehen.
Dann habe ich mir gedanken ueber die ausgabe des Textes gemacht.
Da du keinen Fehler diesbezueglich in diesem Text finden konntest, habe ich in der Gaestebuch Datei nachgesehen.
Sehr gut.
So sieht es dort aus :
Von: alex1<br><br>zeile1
<br /> zeile2
<br /> zeile3<br><hr><br>Von: alex2<br><br>zeile1
Sehr schlecht, das wollten wir ja eigentlich nicht haben; so sollte es
sein, ein Eintrag pro Zeile:
Von: alex1<br><br>zeile1<br />zeile2<br />zeile3<br><hr><br>
Von: alex2<br><br>zeile1...
nur das <hr> trennt die Eintraege voneinander, und ich finde garkeine "/n" s.
Die "\n"-s (Rückstrich , nicht Schrägstrich / ) sind da, Du siehst sie nur nicht richtig. \n ist die Umschreibung für einen Zeilenvorschub, d.h. überall dort, wo eine neue Zeile beginnt, steht dieses Zeichen. Da es keine Taste gibt, um das Zeilenvorschubzeichen sichtbar einzutippen, schreibt man stattdessen das Kürzel \n in den Code.
Ich gehe mal davon aus, daß Du die Gästebuchdatei gaestebuch.txt nach dem Umschreiben des Skriptes gelöscht hast. Falls nicht, setzt Du dem Skript Daten vor, mit denen es nichts anfangen kann, weil es sie entweder nicht geschrieben hat oder weil die Daten falsch sind. Also: Löschen.
Hast Du das vollbracht, wird er Dir folgendes in die Seite schreiben:
<br /> <br><hr><br>Von: test<br><br>test<br><hr><br>Von: test2<br><br>test2<br><hr><br>Von: test3<br><br>1
<br /> 2
<br /> 3
Das sind drei Einträge und ist in der Tat dummerweise nicht das, was wir haben wollen. Abgesehen davon, daß die Zeilenumbrüche des Textes immernoch drin sind, erscheinen die Einträge auch allesamt in einer Zeile (genau zu sehen bei test und test2).
Die Sache mit den Zeilenumbrüchen/-vorschüben kannst Du wohl nicht wissen. Zum Filtern hatten wir ja
strtr(hier_ist_der_text,"\n"," ")
benutzt (die Funktion von strtr() hast Du Dir sicher in der Anleitung angeschaut), damit alle "\n" durch ein Leerzeichen (" ") ersetzt werden. Dummerweise gibt es neben \n für fast denselben Zweck noch ein zweites Zeichen: \r. Das muß auch raus:
fputs($d,strtr(nl2br(htmlentities($text)."<br><hr><br>"),"\n\r"," "));
Dann wäre da noch das Problem, daß die Einträge nicht in einer neuen Zeile beginnen. Es fehlt also nachdem der Eintrag geschrieben wurde noch an einem abschließenden..na..genau..\n.
fputs($d,strtr(nl2br(htmlentities($text)."<br><hr><br>"),"\n\r"," "));
fputs($d,"\n");
Damit sollten dann a) mehrzeilige Einträge in einer Zeile und b) je ein Eintrag pro Zeile erscheinen - hoffe ich jedenfalls :)
Was du bei dem Tag ( was ist ueberhaupt ein Tag?) <a> vergessen hast, habe ich nicht rausgekriegt.
Tag ist die englische Bezeichnung für die ganzen HTML-Dinger, <a>, <table>, <br>, etc. Und wo beim Zurück- und Weiter-<a> die fehlenden Anführungszeichen hingehören, kriegst Du bestimmt raus :)
Gruß,
soenk.e