Alex: blaettern

Hallo liebe PHP Pfofies,

ich habe gerade versucht ein "blaetter - script" in meine homepage einzubauen.

Etwas stimmt allerdings nicht !

Es erscheinen wie geplant "next" und "back" Tasten.
Aber die Eintraege werden nicht aufgeteilt, sondern nur mit der Anahl der Seiten multipliziert. Auf allen Seiten wird immer dasselbe angezeigt !

Hier ist die URL, sehen sie selbst.
Probiert "back" und "zurueck" aus
http://mitglied.lycos.de/pandaemonium/gaestebuch/eintragen.php4

und hier der script.
Wenn ihr den Fehler finden koenntet, waere ich euch sehr dankbar !
Ich bin nur ein Anfaenger, darum bitte ich euch einfach auszudrueken,
sonst verstehe ich nur bahnhof !!!

<html>
<head>
<title>Eintragen</title>
</head>

<body bgcolor="#FFFFFF">

<font face="Verdana" size="1">
<b>Mein Gästebuch</b><br>
<br>

<?php
include("gaestebuch.txt");

$gbfile = "gaestebuch.txt"; // die datei, wo die Eintraege gespeichert werden
$filesize = filesize($gbfile);
$file = fopen("$gbfile","r");
$buffer = fread($file,$filesize);
fclose($file);

$data = file("$gbfile");
$max = count($data);

if($max%10 ==0) {$pages = ($max / 10 );}
else{$pages = ($max / 10 );}

$size = (filesize($gbfile) / 1024);
if(filesize($gbfile) == 0) { $max = "1"; }
echo "<center>entries: $max, pages: " . round($pages, 0) . ", size: " . round($size, 2) . "kB<p>";

$msg = 10;
$data = file("$gbfile");
rsort ($data);
$max = count($data);
If(!$pg){$pg=0;}
If($pg==0){print("<center>back");}
else{$tmp = $pg -1; print("<center>< <a href="$PHP_SELF?pg=$tmp">back</a>");}
$tmp = $pg * $msg + $msg;
print(" | ");
if ($max > $tmp){$tmp = $pg +1; print ("<a href="$PHP_SELF?pg=$tmp">next</a> ><p>");}
else {print("next<p>");}
$start = $pg * $msg;
$end = $pg * $msg + $msg;;
if ($end > $max){$end=$max;}
?>

</font>
</body>

</html>
<html>
<head>
<title>Eintragen</title>
</head>

<body bgcolor="#FFFFFF">
<?php
if ($action == "add"){

if ($text == ""){
echo "<b>Du hast kein Text eingegeben !</b><br>";
echo "Klicke auf den Backbutton deines Browsers";
}
else{

$fp = fopen("gaestebuch.txt","r+");

$inhalt= fread($fp,filesize("gaestebuch.txt"));

fclose($fp);
{
$eintrag = nl2br($name)."<br><br>".nl2br($text)."<br>$inhalt";
}

$datei = fopen("gaestebuch.txt","w+");
fputs($datei,$eintrag);
fclose($datei);
echo "Danke für deinen Eintrag";

}

}
else{
?>
<font face="Verdana" size="1">
<b>Eintragen in mein Gästebuch</b><br>
<form action="eintragen.php?action=add" method="post">
Dein Name: <input type="text" name="name" size="24"><br>
<br>
Dein Eintrag:<br>
<textarea name="text" cols="35" rows="5"></textarea><br>
<input type="submit" value="Abschicken">
</form>
</font>
<?php
}
?>
</body>

</html>

  1. und hier der script.
    Wenn ihr den Fehler finden koenntet, waere ich euch sehr dankbar !
    Ich bin nur ein Anfaenger, darum bitte ich euch einfach auszudrueken,
    sonst verstehe ich nur bahnhof !!!

    Bei dem Code ist es kein Wunder, daß Du nichts verstehst. Ein wirklich gut gemeinter Rat: Gib Dir deutlich mehr Mühe beim Programmieren. Entwickle eine übersichtliche Textstruktur und plane vor allen Dingen im Voraus, wie Dein Programmablauf aussehen soll. Dann wird Dir so ein Chaos, wie das da unten, nicht mehr passieren. Warum Chaos? Bittesehr:

    <?php
    include("gaestebuch.txt");

    Das ist mir schon schleierhaft, warum holst Du die Daten in die Seite? Gehört das zur Fehlersuche? Wenn ja, schreib's dahinter.

    $gbfile = "gaestebuch.txt"; // die datei, wo die Eintraege gespeichert werden
    $filesize = filesize($gbfile);
    $file = fopen("$gbfile","r");
    $buffer = fread($file,$filesize);
    fclose($file);

    $data = file("$gbfile");
    $max = count($data);

    if($max%10 ==0) {$pages = ($max / 10 );}
    else{$pages = ($max / 10 );}

    So sieht das besser aus..

    if($max%10 ==0)
        {
         $pages = ($max / 10 );
        }
       else
        {
         $pages = ($max / 10 );
        }

    ..und dann erkennt man auch gleich, daß diese if-Abfrage sinnlos ist.

    $size = (filesize($gbfile) / 1024);
    if(filesize($gbfile) == 0) { $max = "1"; }
    echo "<center>entries: $max, pages: " . round($pages, 0) . ", size: " . round($size, 2) . "kB<p>";

    $msg = 10;
    $data = file("$gbfile");

    Schon wieder? Du lädst die Datei jetzt zum dritten Mal.. Und den Inhalt von $buffer hast Du immernoch nicht benutzt.

    rsort ($data);

    Warum sortierst Du die Zeilen aus gaestebuch.txt? Das macht bei der Struktur absolut keinen Sinn, sondern stiftet nur Chaos.

    $max = count($data);

    Kommt mir auch sehr bekannt vor.

    If(!$pg){$pg=0;}
    If($pg==0){print("<center>back");}
    else{$tmp = $pg -1; print("<center>< <a href="$PHP_SELF?pg=$tmp">back</a>");}

    Nochmal: Deine Tastatur verfügt über je eine Taste für Leerzeichen und Zeilenvorschub. Nutze sie.

    $tmp = $pg * $msg + $msg;

    print(" | ");
    if ($max > $tmp){$tmp = $pg +1; print ("<a href="$PHP_SELF?pg=$tmp">next</a> ><p>");}
    else {print("next<p>");}
    $start = $pg * $msg;
    $end = $pg * $msg + $msg;;
    if ($end > $max){$end=$max;}

    Werden $start und $end noch irgendwo benutzt? Nein? Warum erzeugst Du sie dann?

    ?>

    </font>
    </body>

    </html>

    Oha. Nun hast Du zwar mit viel Aufwand Vor- und Zurück-Knöpken ausgegeben, aber irgendwas fehlt in dem Gewimmel doch? Richtig, vielleicht solltest Du die Daten aus dem Gästebuch auch noch seitenweise ausgeben..

    Gruß,
      soenk.e

    1. nunja , das Programm ist mein erstes.
      Es war zuerst ganz primitiv.
      Wenn ich was neues lerne baue ich es rein.
      *schaem
      ich habe auch viel bei anderen programmen abgeguckt,
      und diese

      if($max%10 ==0)
          {
           $pages = ($max / 10 );
          }
         else
          {
           $pages = ($max / 10 );
          }
      if Abfrage habe ich vor kurzem eingebaut.
      Ohne gab das programm eine Seite zu viel aus.

      Aehm, jetzt die Frage:

      Wie geht denn das Setenweise ausgeben?
      Das kann ich noch nicht, und habe es nirgendwo gesehn.

      1. if($max%10 ==0)
            {
             $pages = ($max / 10 );
            }
           else
            {
             $pages = ($max / 10 );
            }
        if Abfrage habe ich vor kurzem eingebaut.
        Ohne gab das programm eine Seite zu viel aus.

        Mag sein, aber wenn in den beiden einzig möglichen Wegen einer if-Abfrage die gleiche Anweisung steht, ist die ganze if-Abfrage überflüssig und die enthaltene Anweisung kann einfach im Programmtext stehen. Vielleicht wird's so klarer:

        wenn (farbe ist gruen) dann
             blinke
           andernfalls
             blinke

        Statt der obigen Konstruktion kannst Du also genauso gut

        $pages = ($max / 10 );

        schreiben.

        Aehm, jetzt die Frage:
        Wie geht denn das Setenweise ausgeben?
        Das kann ich noch nicht, und habe es nirgendwo gesehn.

        Angucken, was andere machen, ist zwar gut, stupide abschreiben sollte man aber nicht. Da lernst Du erstens nicht viel und zweitens setzt Du dann Stücke zusammen, die überhaupt nicht zueinander passen.

        Beim seitenweisen Anzeigen hapert es bei Dir schon im Ansatz, denn die Art, wie die Einträge in der Datei gespeichert werden, erlaubt es nicht, die Einträge im Nachhinein voneinander zu separieren und somit auf einer Seite immer vollständige Einträge anzuzeigen. So, wie Du es im Moment versuchst, werden eine Menge Einträge in der Mitte durchtrennt werden - und zwar so, daß "Mitte" überall sein kann, auch mitten im Wort.

        Du wirst Dir also als erstes mal Gedanken darüber machen müssen, wie Du die Einträge in der Datei so speicherst, daß sie später beim Auslesen auch einfach wieder voneinander zu trennen sind, damit Du immer schön je Seite eine Anzahl vollständiger Einträge hast.
        Du wirst in der Datei ein Trennzeichen brauchen, den Zeilenvorschub \n oder einen Tabulator \n zum Beispiel:

        Zum Eintragen, Text kommt in $text, Autor in $autor:

        $d=fopen("gaestebuch.txt","a"); // Datei zum Anhängen öffnen
          if ($d) // Öffnen hat geklappt, $d ist ein Dateizeiger
            {
             fputs($d,"Von: ".htmlentities($autor)."<br>");
             fputs($d,nl2br(htmlentities($text)));
             fputs($d,"\n");
             fclose($d);
            };

        Damit bekommst Du jeweils in einer Zeile der Datei einen Eintrag. nl2br() sorgt dafür, daß Zeilenvorschübe (\n) in $text verschwinden bzw. durch <br> ersetzt werden (denn der Zeilenvorschub markiert ja die Trennstelle zwischen den Einträgen), htmlentities() verhindert, daß Dir jemand HTML-Sachen oder gar Javascript in's Gästebuch knallt.

        Zum Auslesen:

        $g=file("gaestebuch.txt");

        Da wir so klug waren und den Zeilenvorschub als Trennung verwendet haben, bekommen wir mit file() sämtliche Einträge schon fix und fertig  separiert in einem Feld geliefert. Jede Zeile aus der Datei landet mit file() in je einem Feldeintrag, die erste Zeile in $g[0], die zweite in $g[1] usw.

        Alles, was Du jetzt noch machen mußt, ist aus diesem Feld $g ab Position $start $eintraege_pro_seite Zeilen auszugeben:

        // $start kommt über die URL, wenn nicht oder $start keine Zahl
          // ist, dann $start auf 0 setzen
          if ((! isset($start)) || (! is_numeric($start)))
             $start=0;

        // und nochmal für $einträge_pro_seite
          if ((! isset($eintraege_pro_seite)) || (! is_numeric($eintraege_pro_seite)))
             $eintraege_pro_seite=10;

        for ($i=$start;$i<$start+$eintraege_pro_seite;$i++)
           {
            if (isset($g[$i])) // existiert überhaupt etwas an $g[$i]?
              {
               echo $g[$i];    // ja, eintrag ausgeben
               echo "\n";      // kosmetik, ein bißchen luft tut immer gut
              };
           };

        Last but not least die Verweise zum Blättern:

        // vorwärts
          if ($start+$eintraege_pro_seite<sizeof($g))
            {
             echo "<a href="gaestebuch.php?";
             echo "start=".($start+10);
             echo "&eintraege_pro_seite=".$eintraege_pro_seite;
             echo ">Weiter</a>";
            }
           else
            {
             echo "Keine weiteren Einträge.";
            };

        // Analog für die andere Richtung.

        Ein Gästebuch in vier Akten, keine Ahnung ob's so funktioniert, Code ist eben erst entstanden und noch nie gelaufen. Aber bitte nicht nur rauskopieren, sondern auch lesen und verstehen! Lies Dir in der PHP-Anleitung (http://php.net) die Funktion der angewandten Befehle durch.

        Gruß,
          soenk.e

        1. Hallo Soenke, hallo Alex,

          es wird ja so langsam. :-)

          Paar Kleinigkeiten sind mir aber eben aufgefallen, die Alex später ärgern werden:

          Du wirst Dir also als erstes mal Gedanken darüber machen müssen, wie Du die Einträge in der Datei so speicherst, daß sie später beim Auslesen auch einfach wieder voneinander zu trennen sind, damit Du immer schön je Seite eine Anzahl vollständiger Einträge hast.
          Du wirst in der Datei ein Trennzeichen brauchen, den Zeilenvorschub \n oder einen Tabulator \n zum Beispiel:

          Zum Eintragen, Text kommt in $text, Autor in $autor:

          $d=fopen("gaestebuch.txt","a"); // Datei zum Anhängen öffnen
            if ($d) // Öffnen hat geklappt, $d ist ein Dateizeiger
              {
               fputs($d,"Von: ".htmlentities($autor)."<br>");
               fputs($d,nl2br(htmlentities($text)));

          ----------------------------------------
          nl2br
          (PHP 3, PHP 4 )

          nl2br --  Inserts HTML line breaks before all newlines in a string
          Description
          string nl2br ( string string)

          Returns string with '<br />' inserted before all newlines.

          Note: Starting with PHP 4.0.5, nl2br() is now XHTML compliant. All versions before 4.0.5 will return string with '<br>' inserted before newlines instead of '<br />'.

          See also htmlspecialchars(), htmlentities() and wordwrap().

          Das heißt also, dass die "\n" -Zeichen im Text drinbleiben; die "<br>" -Tags werden nur hinzugefügt. Damit ist eine Zeile also _nicht_ mit einem Datensatz identisch. Ich würde auch eine eigene Trennung einbauen. Die kann z.B.

          <!-- neuer Datensatz -->

          so aussehen, und lässt sich später beim Ausgeben gut wiederfinden.

          ----------------------------------------

          fputs($d,"\n");
               fclose($d);
              };

          Damit bekommst Du jeweils in einer Zeile der Datei einen Eintrag. nl2br() sorgt dafür, daß Zeilenvorschübe (\n) in $text verschwinden bzw. durch <br> ersetzt werden (denn der Zeilenvorschub markiert ja die Trennstelle zwischen den Einträgen), htmlentities() verhindert, daß Dir jemand HTML-Sachen oder gar Javascript in's Gästebuch knallt.

          Genau! JavaScript und PHP haben nix darin zu suchen, aber gegen einige HTML-Tags ist nichts einzuweden. Deshalb würde ich den Text auch mit strip_tags($text,$erlaubte_tags) behandeln, bevor ich ihn formatiere und abspeichere.

          Zum Auslesen:

          $g=file("gaestebuch.txt");

          Da wir so klug waren und den Zeilenvorschub als Trennung verwendet haben, bekommen wir mit file() sämtliche Einträge schon fix und fertig  separiert in einem Feld geliefert. Jede Zeile aus der Datei landet mit file() in je einem Feldeintrag, die erste Zeile in $g[0], die zweite in $g[1] usw.

          das geht, wie schon gesagt nur, wenn man "\n" separat extrahiert, _nachdem_ man nl2br() durchgeführt hat.

          Nun hat es noch nicht auf Anhieb geklappt, aber dafür nennen sich die Leute ja auch Software-ENTWICKLER und nicht Software-HINSCHREIBER. Sönke hat hier schon ganz schon ent(ge)wickelt. Nimm Dir den Rat zur sauberen Schreibweise mal zu Herzen, Alex.

          Grüße aus http://www.braunschweig.de

          Tom

          1. es wird ja so langsam. :-)

            Steter Tropfen höhlt den Stein ;)

            fputs($d,nl2br(htmlentities($text)));

            nl2br --  Inserts HTML line breaks before all newlines in a string

            Das heißt also, dass die "\n" -Zeichen im Text drinbleiben; die "<br>" -Tags werden nur hinzugefügt. Damit ist eine Zeile also _nicht_ mit einem Datensatz identisch.

            Aua :/ Das kommt davon, wenn man Funktionen das erste Mal verwendet :)
            Um meinen Ansatz zu retten, der ja immerhin den Vorteil des extrem einfachen Einlesens hatte, sollte die Zeile also so aussehen:

            fputs($d,strtr(nl2br(htmlentities($text)),"\n"," "));

            htmlentities() verhindert, daß Dir jemand HTML-Sachen oder gar Javascript in's Gästebuch knallt.

            Genau! JavaScript und PHP haben nix darin zu suchen, aber gegen einige HTML-Tags ist nichts einzuweden. Deshalb würde ich den Text auch mit strip_tags($text,$erlaubte_tags) behandeln, bevor ich ihn formatiere und abspeichere.

            Hätte den Nachteil, daß man kein HTML mehr schreiben kann (wie hier im Forum), aber das ist natürlich Geschmackssache. Die Warnung bei strip_tags() sollte hingegen nicht ungelesen bleiben: Die Attribute der erlaubten Tags werden nicht verändert. Gerade mit Dingen wie onmouseover kann man immernoch schönes Chaos anstiften.

            Nun hat es noch nicht auf Anhieb geklappt, aber dafür nennen sich die Leute ja auch Software-ENTWICKLER und nicht Software-HINSCHREIBER. Sönke hat hier schon ganz schon ent(ge)wickelt. Nimm Dir den Rat zur sauberen Schreibweise mal zu Herzen, Alex.

            Jegliche Code-Fehler meinerseits wurden absichtlich eingefügt, um den Lerneffekt zu erhöhen ;)

            Gruß,
              soenk.e

            1. Hallo Soenke, Hallo Thomas.

              Erstmal vielen Dank fuer die ganze Hilfe.
              Ich bin heute weiter gekommen, als nach wochenlangem Rumstoebern in Forums, Chats usw.

              hier ist die umgeschriebene Datei, ich habe sie ein bisschen geordnet, und alles eingebaut, so wie es in der Antwort stand.

              Ich habe aber irgendwo noch einen Fehler gemacht.
              Das Buch sieht schon gut aus, aber das "blaettern" geht immer noch nicht.
              hier ist der link, zu dem Gaestebuch :

              http://mitglied.lycos.de/pandaemonium/gaestebuch/eintragen.php4

              Script :

              <html>

              <body bgcolor="#FFFFFF">

              <font face="Verdana" size="1">
              <b>Mein Gästebuch</b><br>
              <br>

              <?
              if ($action == "add")
              {

              if ($text == "")
                {
                 echo "<b>Du hast kein Text eingegeben !</b><br>";
                 echo "Klicke auf den Backbutton deines Browsers";
                }

              else
               {
                $d=fopen("gaestebuch.txt","a"); // Datei zum Anhängen öffnen
                  if ($d) // Öffnen hat geklappt, $d ist ein Dateizeiger
                    {
                 fputs($d,"Von: ".htmlentities($name)."<br><br>");
                     fputs($d,strtr(nl2br(htmlentities($text)."<br><hr><br>"),"\n"," "));
                     fclose($d);
                    }
               }
              }

              $g=file("gaestebuch.txt"); //Auslesen

              if ((! isset($start)) || (! is_numeric($start)))    // $start kommt über die URL, wenn nicht oder $start keine Zahl
                   $start=0;      // ist, dann $start auf 0 setzen

              // und nochmal für $einträge_pro_seite
                if ((! isset($eintraege_pro_seite)) || (! is_numeric($eintraege_pro_seite)))
                   $eintraege_pro_seite=10;

              for ($i=$start;$i<$start+$eintraege_pro_seite;$i++)
                 {
                  if (isset($g[$i])) // existiert überhaupt etwas an $g[$i]?
                    {
                     echo $g[$i];    // ja, eintrag ausgeben
                     echo "\n";      // kosmetik, ein bißchen luft tut immer gut
                    }
                 }

              if ($start+$eintraege_pro_seite<sizeof($g))
                  {
                   echo "<a href="gaestebuch.php?";
                   echo "start=".($start+10);
                   echo "&eintraege_pro_seite=".$eintraege_pro_seite;
                   echo ">Weiter</a>";
                  }
                 else
                  {
                   echo "Keine weiteren Einträge.";
                  }

              if ($start+$eintraege_pro_seite>sizeof($g))
                  {
                   echo "<a href="gaestebuch.php?";
                   echo "start=".($start-10);
                   echo "&eintraege_pro_seite=".$eintraege_pro_seite;
                   echo ">zurük</a>";
                  }
                 else
                  {
                   echo "Keine weiteren Einträge.";
                  }

              ?>

              <font face="Verdana" size="1">
              <b><br><br>Eintragen in mein Gästebuch</b><br>

              <form action="eintragen.php?action=add" method="post">

              Dein Name: <input type="text" name="name" size="24"><br>
              <br>

              Dein Eintrag:<br>

              <textarea name="text" cols="35" rows="5"></textarea><br>
              <input type="submit" value="Abschicken">

              </form>
              </font>
              </body>

              </html>

              1. hier ist die umgeschriebene Datei, ich habe sie ein bisschen geordnet, und alles eingebaut, so wie es in der Antwort stand.

                Ich habe aber irgendwo noch einen Fehler gemacht.
                Das Buch sieht schon gut aus, aber das "blaettern" geht immer noch nicht.

                Was mir als erstes auffällt: Da, wo die Blätterei sein sollte, steht

                Keine weiteren Einträge. _

                Man beachte den Unterstrich am Ende. Wenn Du einen Blick in den Quelltext wirfst, den der Browser bekommt, wirst Du dort folgendes finden:

                Keine weiteren Einträge. <a href="gaestebuch.php?start=-10&eintraege_pro_seite=10>zurük</a>

                Da befindet sich also durchaus ein "zurück" (was ja schonmal was wert ist:), aber der Browser gibt es nicht aus. Die Fehlersuche überlasse ich mal Dir. Tipp: In dem <a>-Tag habe ich ein Zeichen vergessen.
                Im "Weiter"-Abschnitt darüber muß dieser Fehler auch korrigiert werden.

                if ($start+$eintraege_pro_seite>sizeof($g))

                Das funktioniert so nicht zum Zurückblättern. Überlege Dir nochmal genau: Wann bzw. an welcher Position kann man noch zurückblättern? Mal es Dir eventuell auf Papier auf:

                0 1 2 3 4 5 6 7 8 9
                        ^
                        aktuelle Position ($start)

                Wann darf man von $start noch etwas abziehen? Und wieviel darf man jeweils abziehen, wenn je Seite fünf Einträge angezeigt werden sollen und die aktuelle Position 0, 3 oder 8 ist? Berechne für jede der genannten drei aktuellen Positionen die neue Position, überlege Dir, ob sie Sinn macht und schließe daraus, wie Deine if-Bedingung aussehen muß.

                Last but not least: Warum er alle Einträge ausgibt, ist mir momentan etwas schleierhaft, ich hätte -wenn überhaupt- eher erwartet, daß er garnichts anzeigt. Prüfe, ob $start und $eintraege_pro_seite direkt vor der for-Schleife gesetzt sind:

                echo "start=$start schrittweite=$eintraege_pro_seite<br>";

                $start sollte 0 sein, $eintraege_pro_seite 10. Falls dem nicht so ist, verschiebe die obige Zeile weiter nach oben, um zu prüfen, wo die beiden wie aussehen und ob's mit den "if ((! isset.."-Sachen passt.

                Eventuell tauchen $start und $eintraege_pro_seite auch nicht direkt auf, sondern als $HTTP_GET_VARS["start"] oder $_GET["start"] (analog für eintrage_pro_seite).

                Gruß,
                  soenk.e

                1. 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;
                       echo ">zurük</a> ";
                      }
                     else
                      {
                       echo "<center>zurük ";
                      }

                  bin richtig stolz drauf !! :)

                  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.

                  So sieht es dort aus :

                  Von: alex1<br><br>zeile1
                  <br /> zeile2
                  <br /> zeile3<br><hr><br>Von: alex2<br><br>zeile1
                  <br /> zeile2
                  <br /> zeile3
                  <br /> <br><hr><br>Von: alex3<br><br>zeile1
                  <br /> zeile2
                  <br /> zeile3
                  <br /> <br><hr><br>Von: alex4<br><br>zeile1
                  <br /> zeile2
                  <br /> zeile3
                  <br /> <br><hr><br>Von: alex5<br><br>zeile1
                  <br /> zeile2
                  <br /> zeile3
                  <br /> <br><hr><br>Von: alex6<br><br>zeile1
                  <br /> zeile2
                  <br /> zeile3
                  <br /> <br><hr><br>Von: alex7<br><br>zeile1
                  <br /> zeile2
                  <br /> zeile3
                  <br /> <br><hr><br>Von: alex8<br><br>zeile1
                  <br /> zeile2
                  <br /> zeile3
                  <br /> <br><hr><br>Von: alex7<br><br>zeile1
                  <br /> zeile2
                  <br /> zeile3
                  <br /> <br><hr><br>Von: alex10<br><br>zeile1
                  <br /> zeile2
                  <br /> zeile3
                  <br /> <br><hr><br>Von: alex7<br><br>zeile1
                  <br /> zeile2
                  <br /> zeile3
                  <br /> <br><hr><br>Von: alex11<br><br>zeile1
                  <br /> zeile2
                  <br /> zeile3
                  <br /> <br><hr><br>Von: alex11<br><br>zeile1
                  <br /> zeile2
                  <br /> zeile3
                  <br /> <br><hr><br>

                  nur das <hr> trennt die Eintraege voneinander, und ich finde garkeine "/n" s.
                  Vielleicht haelt das Programm alle einraege fuer g(1) ?
                  Was du bei dem Tag ( was ist ueberhaupt ein Tag?) <a> vergessen hast, habe ich nicht rausgekriegt.

                  Hier der ueberarbeitete Script:

                  <html>

                  <body bgcolor="#FFFFFF">

                  <font face="Verdana" size="1">
                  <b>Mein Gästebuch</b><br>
                  <br>

                  <?
                  if ($action == "add")
                  {

                  if ($text == "")
                    {
                     echo "<b>Du hast kein Text eingegeben !</b><br>";
                     echo "Klicke auf den Backbutton deines Browsers";
                    }

                  else
                   {
                    $d=fopen("gaestebuch.txt","a"); // Datei zum Anhängen öffnen
                      if ($d) // Öffnen hat geklappt, $d ist ein Dateizeiger
                        {
                     fputs($d,"Von: ".htmlentities($name)."<br><br>");
                         fputs($d,strtr(nl2br(htmlentities($text)."<br><hr><br>),"\n"," "));
                         fclose($d);
                        }
                   }
                  }

                  $g=file("gaestebuch.txt"); //Auslesen

                  if ((! isset($start)) || (! is_numeric($start)))    // $start kommt über die URL, wenn nicht oder $start keine Zahl
                       $start=0;      // ist, dann $start auf 0 setzen

                  // und nochmal für $einträge_pro_seite
                    if ((! isset($eintraege_pro_seite)) || (! is_numeric($eintraege_pro_seite)))
                       $eintraege_pro_seite=10;

                  for ($i=$start;$i<$start+$eintraege_pro_seite;$i++)
                     {
                      if (isset($g[$i])) // existiert überhaupt etwas an $g[$i]?
                        {
                         echo $g[$i];    // ja, eintrag ausgeben
                         echo "\n";      // kosmetik, ein bißchen luft tut immer gut
                        }
                     }

                  if ($start != 0)
                      {
                       echo "<a href="gaestebuch.php?";
                       echo "start=".($start-10);
                       echo "&eintraege_pro_seite=".$eintraege_pro_seite;
                       echo ">zurük</a> ";
                      }
                     else
                      {
                       echo "<center>zurük ";
                      }

                  if ($start+$eintraege_pro_seite<sizeof($g))
                      {
                       echo "<a href="gaestebuch.php?";
                       echo "start=".($start+10);
                       echo "&eintraege_pro_seite=".$eintraege_pro_seite;
                       echo ">Weiter</a>";
                      }
                     else
                      {
                       echo "<center>weiter";
                      }

                  Danke , Alex

                  ?>

                  <font face="Verdana" size="1">
                  <b><br><br><center>Eintragen in mein Gästebuch</b><br>

                  <form action="eintragen.php?action=add" method="post">

                  Dein Name: <center><input type="text" name="name" size="24"><br>
                  <br>

                  Dein Eintrag:<br>

                  <center><textarea name="text" cols="35" rows="5"></textarea><br>
                  <input type="submit" value="Abschicken">

                  </form>
                  </font>
                  </body>

                  </html>

                  1. 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

                    1. Die Gaestebuch datei ist jetzt OK, glaube ich.
                      Auf jedem fall erscheint ein Link in dem Gaestebuch.
                      Aber leider nicht dort wo es sollte !

                      http://mitglied.lycos.de/pandaemonium/gaestebuch/eintragen.php4

                      Ich schaetze dass das an den Anfuehrungszeichen bei <a> liegt, die stelle finde ich aber nicht !!
                      Ich habe die "" bestimmt an jede Stelle hingesetzt, ich habs aber nicht rausgekriegt...

                      zuerst habe ich gedacht, dass es die Zeile war:

                      echo "<a href="gaestebuch.php?"; // muss hier vor dem ; noch ein " sein? so?
                      "<a href="gaestebuch.php?"";

                      Der browser zeigte aber einen Fehler an, dann habe ich es rueckgaengig gemacht.

                      Dann , obwohl der Link fuer "weiter" existiert, funktioniert er nicht.

                      Versuche mal auf ihn zu klicken, da kommt ein

                      Fatal error: Unable to open gaestebuch.php in Unknown on line 0
                       raus.

                      Woran liegt das?
                      Es gibt doch keine Anweisung, die besagt, dass Gaestebuch on line 0 geoeffnet werden soll?

                      Vielleicht brauchst du den script noch :

                      <html>

                      <body bgcolor="#FFFFFF">

                      <font face="Verdana" size="1">
                      <b>Mein Gästebuch</b><br>
                      <br>

                      <?
                      if ($action == "add")
                      {

                      if ($text == "")
                        {
                         echo "<b>Du hast kein Text eingegeben !</b><br>";
                         echo "Klicke auf den Backbutton deines Browsers";
                        }

                      else
                       {
                        $d=fopen("gaestebuch.txt","a"); // Datei zum Anhängen öffnen
                          if ($d) // Öffnen hat geklappt, $d ist ein Dateizeiger
                            {
                         fputs($d,"Von: ".htmlentities($name)."<br><br>");
                             fputs($d,strtr(nl2br(htmlentities($text)."<br><hr><br>"),"\n\r"," "));
                             fputs($d,"\n");
                         fclose($d);
                            }
                       }
                      }

                      $g=file("gaestebuch.txt"); //Auslesen

                      if ((! isset($start)) || (! is_numeric($start)))    // $start kommt über die URL, wenn nicht oder $start keine Zahl
                           $start=0;      // ist, dann $start auf 0 setzen

                      // und nochmal für $einträge_pro_seite
                        if ((! isset($eintraege_pro_seite)) || (! is_numeric($eintraege_pro_seite)))
                           $eintraege_pro_seite=10;

                      for ($i=$start;$i<$start+$eintraege_pro_seite;$i++)
                         {
                          if (isset($g[$i])) // existiert überhaupt etwas an $g[$i]?
                            {
                             echo $g[$i];    // ja, eintrag ausgeben
                             echo "\n";      // kosmetik, ein bißchen luft tut immer gut
                            }
                         }

                      if ($start != 0)

                      {
                           echo "<a href="gaestebuch.php?";
                           echo "start=".($start-$eintraege_pro_seite);
                           echo "&eintraege_pro_seite=".$eintraege_pro_seite;
                           echo ">zurück</a>";
                          }

                      else
                          {
                           echo "<center>zurück ";
                          }

                      if ($start+$eintraege_pro_seite<sizeof($g))
                          {
                           echo "<a href="gaestebuch.php?";
                           echo "start=".($start+$eintraege_pro_seite);
                           echo "&eintraege_pro_seite=".$eintraege_pro_seite;
                           echo ">Weiter</a>";
                          }
                      else
                          {
                           echo "<center>weiter";
                          }

                      ?>

                      <font face="Verdana" size="1">
                      <b><br><br><center>Eintragen in mein Gästebuch</b><br>

                      <form action="eintragen.php?action=add" method="post">

                      Dein Name: <center><input type="text" name="name" size="24"><br>
                      <br>

                      Dein Eintrag:<br>

                      <center><textarea name="text" cols="35" rows="5"></textarea><br>
                      <input type="submit" value="Abschicken">

                      </form>
                      </font>
                      </body>

                      </html>

                      Danke, Alex

                      1. hi

                        Ich schaetze dass das an den Anfuehrungszeichen bei <a> liegt, die stelle finde ich aber nicht !!

                        liegt es auch s.u.

                        zuerst habe ich gedacht, dass es die Zeile war:
                        echo "<a href="gaestebuch.php?"; // muss hier vor dem ; noch ein " sein? so?
                        "<a href="gaestebuch.php?"";
                        Der browser zeigte aber einen Fehler an, dann habe ich es rueckgaengig gemacht.

                        die zeile ist es auch nicht, da du sonst das was bei href="" in den Anführungszeichen steht nach dem Fragezeichen beendest.

                        {
                             echo "<a href="gaestebuch.php?";
                             echo "start=".($start-$eintraege_pro_seite);
                             echo "&eintraege_pro_seite=".$eintraege_pro_seite;
                             echo ">zurück</a>";

                        ^^hier ist der fehler da muss noch ein Anführungszeichen hin, also muss die zeile so lauten:
                        echo "">zurück</a>";
                        (das Anführungszeichen muss maskiert werden)

                        if ($start+$eintraege_pro_seite<sizeof($g))
                            {
                             echo "<a href="gaestebuch.php?";
                             echo "start=".($start+$eintraege_pro_seite);
                             echo "&eintraege_pro_seite=".$eintraege_pro_seite;
                             echo ">Weiter</a>";

                        hier genauso:
                        echo "">Weiter</a>";

                        <font face="Verdana" size="1">

                        das solltest du dir ganz schnell wieder abgewöhnen :)
                        besser mit css

                        <b><br><br><center>Eintragen in mein Gästebuch</b><br>

                        <center> ist auch kein "richtiges" html

                        hth und gruß
                        Tobias

                        1. Nunja, das mit dem schraegstrich habe ich nicht gewusst.
                          Jetzt funktioniert der Link endlich, und es werden 10 Eintraege ausgegeben pro Seite ausgegeben,
                          Die naechste Seite klappt aber nicht.
                          Wenn man "weiter" drueckt, kommt da ein fehler raus :

                          Fatal error: Unable to open gaestebuch.php in Unknown on line 0

                          Noch ein ganz kleines bischen, und mein Gaestebuch ist vollkommen !!!

                          :)

                          <html>

                          <body bgcolor="#FFFFFF">

                          <font face="Verdana" size="1">
                          <b>Mein Gästebuch</b><br>
                          <br>

                          <?
                          if ($action == "add")
                          {

                          if ($text == "")
                            {
                             echo "<b>Du hast kein Text eingegeben !</b><br>";
                             echo "Klicke auf den Backbutton deines Browsers";
                            }

                          else
                           {
                            $d=fopen("gaestebuch.txt","a"); // Datei zum Anhängen öffnen
                              if ($d) // Öffnen hat geklappt, $d ist ein Dateizeiger
                                {
                             fputs($d,"Von: ".htmlentities($name)."<br><br>");
                                 fputs($d,strtr(nl2br(htmlentities($text)."<br><hr><br>"),"\n\r"," "));
                                 fputs($d,"\n");
                             fclose($d);
                                }
                           }
                          }

                          $g=file("gaestebuch.txt"); //Auslesen

                          if ((! isset($start)) || (! is_numeric($start)))    // $start kommt über die URL, wenn nicht oder $start keine Zahl
                               $start=0;      // ist, dann $start auf 0 setzen

                          // und nochmal für $einträge_pro_seite
                            if ((! isset($eintraege_pro_seite)) || (! is_numeric($eintraege_pro_seite)))
                               $eintraege_pro_seite=10;

                          for ($i=$start;$i<$start+$eintraege_pro_seite;$i++)
                             {
                              if (isset($g[$i])) // existiert überhaupt etwas an $g[$i]?
                                {
                                 echo $g[$i];    // ja, eintrag ausgeben
                                 echo "\n";      // kosmetik, ein bißchen luft tut immer gut
                                }
                             }

                          if ($start != 0)

                          {
                               echo "<a href="gaestebuch.php?";
                               echo "start=".($start-$eintraege_pro_seite);
                               echo "&eintraege_pro_seite=".$eintraege_pro_seite;
                               echo "">zurück</a>";
                              }

                          else
                              {
                               echo "<center>zurück ";
                              }

                          if ($start+$eintraege_pro_seite<sizeof($g))
                              {
                               echo "<a href="gaestebuch.php?";
                               echo "start=".($start+$eintraege_pro_seite);
                               echo "&eintraege_pro_seite=".$eintraege_pro_seite;
                               echo "">Weiter</a>";
                              }
                          else
                              {
                               echo "<center>weiter";
                              }

                          ?>

                          <font face="Verdana" size="1">
                          <b><br><br><center>Eintragen in mein Gästebuch</b><br>

                          <form action="eintragen.php?action=add" method="post">

                          Dein Name: <center><input type="text" name="name" size="24"><br>
                          <br>

                          Dein Eintrag:<br>

                          <center><textarea name="text" cols="35" rows="5"></textarea><br>
                          <input type="submit" value="Abschicken">

                          </form>
                          </font>
                          </body>

                          </html>

                          1. Hallo,

                            Fatal error: Unable to open gaestebuch.php in Unknown on line 0

                            Noch ein ganz kleines bischen, und mein Gaestebuch ist vollkommen !!!

                            Tja - wenn Deine Datei eintragen.php4 heißt, und Du auf gaestebuch.php verlinkst, dann _kann_ doch was nicht stimmen, oder?

                            Kleiner Tipp:

                            Wenn Du die Datei später mal nach Lust und Laune umbenennen können willst, dann nimm lieber $PHP_SELF (oder auch gleich $_SERVER["PHP_SELF"], wenn Du zukunftsicher arbeiten willst)

                            Also anstelle von

                            echo "<a href="gaestebuch.php?";

                            gleich

                            echo "<a href="".$PHP_SELF.""";

                            oder auch

                            echo "<a href="".$_SERVER["PHP_SELF"].""";

                            und das halt überalle, wo gaestebuch.php vorkommt. Dann kannst Du die Datei nennen wie Du willst, der Link passt sich automatisch daran an.

                            Grüße,

                            Christian

                            1. JAAA, Endlich funktioniert das hin- und herblaettern!!!!!!!

                              Aber ich habe schon wieder mist gebaut :)

                              Ich wollte den script so umschreiben, dass die neusten Eintraege zuerst ausgegeben werden.

                              $a = fopen("gaestebuch.txt","r+");
                                $inhalt= fread($a,("gaestebuch.txt"));
                                fclose($a);

                              $d=fopen("gaestebuch.txt","w+"); // Datei zum Anhängen öffnen
                                if ($d) // Öffnen hat geklappt, $d ist ein Dateizeiger

                              fputs($d,"Von: ".htmlentities($name)."<br><br>");
                                     fputs($d,strtr(nl2br(htmlentities($text)."<br><hr><br>"),"\n\r"," "));
                                        fputs($d,"\n");
                                 fputs($a,"$inhalt");
                                        fclose($d);

                              Jetzt wird NUR der letzte Eintrag ausgegeben, alles andere wird geloescht.....

                              http://mitglied.lycos.de/pandaemonium/gaestebuch/eintragen.php?action=add

                              Wo habe ich schon wieder einen Fehler gemacht?

                              1. Hallo,

                                $d=fopen("gaestebuch.txt","w+"); // Datei zum Anhängen öffnen

                                Argh! Nimm NIE "w+", es sei denn, Du weißt _GENAU_, was Du tust. "r+" ist die Lösung. (w+ löscht die ganze File vorher, r+ dagegen nicht)

                                Ach ja, hier ist noch ein Fehler:

                                fputs($a,"$inhalt");
                                       ^
                                       das soll doch wohl ein $d sein, oder? Du hast ja $a schon geschlossen.

                                Grüße,

                                Christian

                                1. $d=fopen("gaestebuch.txt","w+"); // Datei zum Anhängen öffnen

                                  Argh! Nimm NIE "w+", es sei denn, Du weißt _GENAU_, was Du tust. "r+" ist die Lösung. (w+ löscht die ganze File vorher, r+ dagegen nicht)

                                  Das ist hier aber ziemlich Wurst, ich würde sogar behaupten, daß w hier besser geeignet ist - wir wollen schließlich die ganze Datei neu schreiben, da kann's nicht schaden, wenn man vorher reinen Tisch macht und den ganzen alten Kram rausschmeißt.
                                  Letztenendes ist es allerdings wie gesagt Wurst, denn der neue Inhalt ist garantiert länger als der alte, die alten Daten werden also immer komplett überschrieben.

                                  Ach ja, hier ist noch ein Fehler:

                                  Nicht noch ein Fehler, das _ist_ der Fehler.

                                  fputs($a,"$inhalt");
                                         ^
                                         das soll doch wohl ein $d sein, oder? Du hast ja $a schon geschlossen.

                                  Eben, der alte Inhalt wird nicht in die Datei $d zurückgeschrieben. Da liegt das Problem, mit r oder w hat das nichts zu tun.

                                  Ich hätte davon abgesehen noch einen netten, weil extrem kurzen, anderen Ansatz für "umgekehrt ausgeben":

                                  Wir lesen ja mit

                                  $g=file("gaestebuch.txt");

                                  die Gästebuchdaten in ein Feld (Array) ein. Felder kann man in PHP freundlicherweise gut sortieren, und eine Funktion namens array_reverse() dreht den kompletten Feldinhalt um.
                                  Statt also den Aufwand zu betreiben, jedesmal die Gästebuch-Datei komplett neu zu schreiben, könnte man das Ziel "umgekehrt ausgeben" auch mit nur einer Zeile erreichen:

                                  $g=file("gaestebuch.txt"); // Daten in ein Feld einlesen
                                    $g=array_reverse($g);      // Feld umdrehen

                                  Gruß,
                                    soenk.e

                                  1. MMMMMMM,

                                    ch habe das
                                    fputs($a,"$inhalt");
                                           ^
                                    in $d umgeschrieben.
                                    Das geht aber trotzdem irgendwie nicht .....

                                    So siehts jetzt aus:

                                    $a = fopen("gaestebuch.txt","r+");
                                      $inhalt= fread($a,("gaestebuch.txt"));
                                      fclose($a);

                                    $d=fopen("gaestebuch.txt","w+"); // Datei zum Anhängen öffnen
                                      if ($d) // Öffnen hat geklappt, $d ist ein Dateizeiger

                                    fputs($d,"Von: ".htmlentities($name)."<br><br>");
                                           fputs($d,strtr(nl2br(htmlentities($text)."$inhalt"."<br><hr><br>"),"\n\r"," "));
                                       fputs($d,"\n");
                                       fclose($d);

                                    $b = fopen("gaestebuch.txt","a");
                                       fputs($b,"$inhalt");
                                       fclose($b);

                                    Das muesste doch gehen?

                                    Und, ich habe auch zuerst an "array_reverse" gedacht,
                                    aber ich muss zugeben, das mit dem Link habe ich noch nicht 100%ig verstanden.
                                    Und soweit ich das verstanden habe,geht das so, dassdie datei abschnittweise ausgegeben wird, 10 zeilen pro Abschnitt.

                                    und wenn man sie alle einzeln umdrehen wuerde, gaebe es ein "Tohuwabohu".

                                    dann wuerde es so aussehen:

                                    10 9 8 7 6 5 4 3 2 1 20 19 18 17 16 15 14 13 12 11 30 29 28 27 26 25 24 23 22 21

                                    Und ich habe keinen blassen Schimmer, warum die laengere Version nicht funktioniert....

                                    1. ch habe das
                                      fputs($a,"$inhalt");
                                             ^
                                      in $d umgeschrieben.

                                      Das halte ich für ein Gerücht..

                                      $a = fopen("gaestebuch.txt","r+");
                                        $inhalt= fread($a,("gaestebuch.txt"));
                                        fclose($a);

                                      $d=fopen("gaestebuch.txt","w+"); // Datei zum Anhängen öffnen
                                        if ($d) // Öffnen hat geklappt, $d ist ein Dateizeiger

                                      {

                                      fputs($d,"Von: ".htmlentities($name)."<br><br>");
                                             fputs($d,strtr(nl2br(htmlentities($text)."$inhalt"."<br><hr><br>"),"\n\r"," "));
                                         fputs($d,"\n");
                                         fclose($d);

                                      };

                                      $b = fopen("gaestebuch.txt","a");
                                         fputs($b,"$inhalt");

                                      -------------^
                                      ..oder was ist das?

                                      fclose($b);

                                      Das muesste doch gehen?

                                      Nein, nicht, wenn Du keinen Überblick mehr hast, was Du da eigentlich veranstaltest. Wo kommen denn die letzten drei Zeilen plötzlich her, es war doch vorher schon vollkommen richtig!? Außerdem fehlen in dem Code oben mehrere geschweifte Klammern um die if-Anweisungsblöcke.

                                      Ich schicke Dich hiermit auf Start zurück und erkläre, daß Du beim Würfeln mindestens zweimal aussetzen mußt, denn:

                                      a) Sauberen Code schreiben.
                                      b) Nicht stupide abtippen, sondern Schritt für Schritt überlegen und _verstehen_, was dort gemacht wird. Gehe nicht über Los, ziehe keine Überraschungskarte mit "Extrawurf" ein, sondern befrage die PHP-Anleitung, bis Du die Vorgehensweise 110%-ig verstanden hast.

                                      Und, ich habe auch zuerst an "array_reverse" gedacht,

                                      Und soweit ich das verstanden habe,geht das so, dassdie datei abschnittweise ausgegeben wird, 10 zeilen pro Abschnitt.

                                      und wenn man sie alle einzeln umdrehen wuerde, gaebe es ein "Tohuwabohu".

                                      10 9 8 7 6 5 4 3 2 1 20 19 18 17 16 15 14 13 12 11 30 29 28 27 26 25 24 23 22 21

                                      Für Logikfragen bin ich nicht zuständig :) Meines Erachtens müsste es aber so laufen:

                                      Wir lesen in der '$g=file("gaestebuch.txt")'-Zeile die _komplette_ Gästebuchdatei in ein Feld ein:

                                      Eintrag: a b c d e f g h i j k l m
                                      Index:   0 1 2 3 4 5 6 7 8 9 0 1 2
                                                                   10

                                      Dann wird sie umgedreht (die Inhalte/Einträge, _nicht_ die Indizes):

                                      Eintrag: m l k j i h g f e d c b a
                                      Index:   0 1 2 3 4 5 6 7 8 9 0 1 2
                                                                   10

                                      Eigentlich müsste das funktionieren, wenn man jetzt beispielsweise mit $start=2 beginnt, fünf Einträge ausgibt (k j i h g) und auf der nächsten Seite dann entsprechend mit $start=7 (also 2+5) beginnt: f e d c b.

                                      Gruß,
                                        soenk.e

                                      1. Ich habe die dritte Zeile hingeschrieben weil es so nicht klappte:

                                        if ($action == "add")
                                        {

                                        if ($text == "")
                                          {
                                           echo "<b>Du hast kein Text eingegeben !</b><br>";
                                           echo "Klicke auf den Backbutton deines Browsers";
                                          }

                                        else
                                         {
                                          $a = fopen("gaestebuch.txt","r+");
                                          $inhalt= fread($a,("gaestebuch.txt"));
                                          fclose($a);

                                        $d=fopen("gaestebuch.txt","w+");       // Datei zum Anhängen öffnen
                                          if ($d)                                // Öffnen hat geklappt, $d ist ein Dateizeiger
                                           {
                                          fputs($d,"Von: ".htmlentities($name)."<br><br>");
                                               fputs($d,strtr(nl2br(htmlentities($text)."$inhalt"."<br><hr><br>"),"\n\r"," "));
                                           fputs($d,"$inhalt");
                                           fputs($d,"\n");
                                           fclose($d);
                                               }

                                        }
                                        }

                                        Ich habe den Ueberblik nicht verloren, das war alles absicht, mit den vielen Variablen.

                                        $a = fopen("gaestebuch.txt","r+");
                                        $inhalt= fread($a,("gaestebuch.txt"));
                                          fclose($a);

                                        //hier wurde der inhalt vom Gaestebuch, also alle frueheren Eintraege der Variablen $Inhalt uebergeben. Danach wurde $a geschlossen und nicht mehr benutzt.

                                        $d=fopen("gaestebuch.txt","w+");
                                          if ($d)
                                                {
                                                 fputs($d,"Von: ".htmlentities($name)."<br><br>");
                                                 fputs($d,strtr(nl2br(htmlentities $text)."$inhalt"."<br><hr><br>"),"\n\r"," "));
                                                 fputs($d,"\n");
                                                 fclose($d);
                                        }
                                        // jetzt habe ich w+ benutzt, und damit die ganze Datei gaestebuch.txt geloescht, weil ich den inhalt der Datei in der Variablen $inhalt habe.$d wurde geschlossen

                                        //jetzt habe ich gaestebuch schoonwieder aufgemacht, diesmal mit "a", damit ich die frueheren Eintraege addieren kann, und der neue Eintrag nicht geloescht wird.

                                        $b = fopen("gaestebuch.txt","a");
                                           fputs($b,("$inhalt"));
                                           fclose($b);

                                        Aber wie es scheint, hat sich in meine ueberlegungen ein Fehler eingeschlichen.

                                        So wie es oben steht funktioniert es nicht, und so auch nicht :

                                        if ($action == "add")
                                        {

                                        if ($text == "")
                                          {
                                           echo "<b>Du hast kein Text eingegeben !</b><br>";
                                           echo "Klicke auf den Backbutton deines Browsers";
                                          }

                                        else
                                         {
                                          $a = fopen("gaestebuch.txt","r+");
                                          $inhalt= fread($a,("gaestebuch.txt"));
                                          fclose($a);

                                        $d=fopen("gaestebuch.txt","w+");       // Datei zum Anhängen öffnen
                                          if ($d)                                // Öffnen hat geklappt, $d ist ein Dateizeiger
                                           {
                                          fputs($d,"Von: ".htmlentities($name)."<br><br>");
                                               fputs($d,strtr(nl2br(htmlentities($text)."$inhalt"."<br><hr><br>"),"\n\r"," "));
                                           fputs($d,"$inhalt");
                                           fputs($d,"\n");
                                           fclose($d);
                                               }

                                        }
                                        }

                                        Vielleicht ist der Fehler ja woanders?

                                        Hier der ganze Script :

                                        <html>

                                        <body bgcolor="#FFFFFF">

                                        <font face="Verdana" size="1">
                                        <b>Mein Gästebuch</b><br>
                                        <br>

                                        <?
                                        if ($action == "add")
                                        {

                                        if ($text == "")
                                          {
                                           echo "<b>Du hast kein Text eingegeben !</b><br>";
                                           echo "Klicke auf den Backbutton deines Browsers";
                                          }

                                        else
                                         {
                                          $a = fopen("gaestebuch.txt","r+");
                                          $inhalt= fread($a,("gaestebuch.txt"));
                                          fclose($a);

                                        $d=fopen("gaestebuch.txt","w+");       // Datei zum Anhängen öffnen
                                          if ($d)                                // Öffnen hat geklappt, $d ist ein Dateizeiger
                                           {
                                          fputs($d,"Von: ".htmlentities($name)."<br><br>");
                                               fputs($d,strtr(nl2br(htmlentities($text)."$inhalt"."<br><hr><br>"),"\n\r"," "));
                                           fputs($d,"$inhalt");
                                           fputs($d,"\n");
                                           fclose($d);
                                               }

                                        }
                                        }

                                        $g=file("gaestebuch.txt"); //Auslesen

                                        if ((! isset($start)) || (! is_numeric($start)))    // $start kommt über die URL, wenn nicht oder $start keine Zahl
                                             $start=0;      // ist, dann $start auf 0 setzen

                                        // und nochmal für $einträge_pro_seite
                                          if ((! isset($eintraege_pro_seite)) || (! is_numeric($eintraege_pro_seite)))
                                             $eintraege_pro_seite=10;

                                        for ($i=$start;$i<$start+$eintraege_pro_seite;$i++)
                                           {
                                            if (isset($g[$i])) // existiert überhaupt etwas an $g[$i]?
                                              {
                                               echo $g[$i];    // ja, eintrag ausgeben
                                               echo "\n";      // kosmetik, ein bißchen luft tut immer gut
                                              }
                                           }

                                        if ($start !=0)

                                        {
                                             echo "<a href="eintragen.php?";
                                             echo "start=".($start-$eintraege_pro_seite);
                                             echo "&eintraege_pro_seite=".$eintraege_pro_seite;
                                             echo ""><center>zurück</a>";
                                            }

                                        else
                                            {
                                             echo "<center>zurück ";
                                            }

                                        if ($start+$eintraege_pro_seite<sizeof($g))
                                            {
                                             echo "<a href="eintragen.php?";
                                             echo "start=".($start+$eintraege_pro_seite);
                                             echo "&eintraege_pro_seite=".$eintraege_pro_seite;
                                             echo ""><center>Weiter</a>";
                                            }
                                        else
                                            {
                                             echo "<center>weiter";
                                            }

                                        ?>

                                        <font face="Verdana" size="1">
                                        <b><br><br><center>Eintragen in mein Gästebuch</b><br>

                                        <form action="eintragen.php?action=add" method="post">

                                        Dein Name: <center><input type="text" name="name" size="24"><br>
                                        <br>

                                        Dein Eintrag:<br>

                                        <center><textarea name="text" cols="35" rows="5"></textarea><br>
                                        <input type="submit" value="Abschicken">

                                        </form>
                                        </font>
                                        </body>

                                        </html>

                                        1. Hier der ganze Script :

                                          Ich mache hier gleich mal ein paar weitere Änderungen, die den Gebrauch diverser Variablen betreffen, die über die URL bzw. das Formular kommen.
                                          Du sprichst diese Variablen derzeit noch direkt an, wie zum Beispiel $action, $start und $eintraege_pro_seite, welche allesamt aus der URL kommen ("eintragen.php?action=add", "?start=0&eintraege_pro_seite=10"), sowie die Formulardaten in $text und $name.

                                          In neueren PHP-Versionen ist diese Möglichkeit aus Sicherheitsgründen nicht mehr automatisch gegeben. Stattdessen kommen diese Werte jetzt in den Feldern $_GET[] und $_POST[]. Die Namen beziehen sich dabei auf den Weg, über den sie übermittelt werden, bzw. genauer gesagt auf den gleichnamigen Befehl aus dem HTTP-Protokoll. Daten in $_GET kommen in der Regel über die URL, angehängt mit dem Fragezeichen ("eintragen.php?action=add"). Daten in $_POST stammen aus Formularen ("<form>").

                                          POST und -wenn auch selten bis garnicht- GET tauchen übrigens auch in der Formulardefinition auf, und zwar als Attribut method. Momentan hast Du dort (korrekterweise) '<form ... method="post">' stehen. Würdest Du das in '<form ... method="get">' ändern und das Formular abschicken, könntest Du sehen, daß der Browser die Formulardaten mit einem Fragezeichen an die URL angehängt hat.
                                          Probier's einfach mal aus - ist aber nur eine nebensächliche Spielerei mit dem Innenleben Deines Browsers und hat nichts mit dem eigentlichen Problem zu tun.

                                          Beachte aber bitte in jedem Fall, daß je nach Version des PHP-Interpreters die besagten Felder $_GET und $_POST (neue Versionen) auch $HTTP_GET_VARS und $HTTP_POST_VARS (ältere Versionen) heißen können. Du müsstest also eventuell entsprechend die Namen ändern. Was bei Dir aktuell ist kannst Du herausfinden, indem Du an den Anfang des Skriptes den Befehl

                                          phpinfo();

                                          oder etwas kürzer

                                          phpinfo(INFO_VARIABLES);

                                          setzt.
                                          PHP wird Dir dann eine ganze Menge Informationen ausspucken. Ganz am Ende der Liste tauchen die Variablen auf, die PHP Dir "von außen" zur Verfügung stellt. In diesem Bereich wirst Du auch irgendwo auf ein Paar der beiden genannten stoßen.

                                          Los geht's:

                                          <?
                                          if ($action == "add")

                                          if (isset($_POST["text"]))

                                          Auf das Angängsel ?action=add in der Formular-URL können wir verzichten, weil's doch eigentlich viel schöner ist, wenn man gleich nach den Formulardaten schaut. $_POST["text"] ist der Inhalt der gleichnamigen <textarea> im Formular, isset() prüft (wie gehabt), ob diese Variable existiert.

                                          {
                                          if ($text == "")

                                          if (trim($_POST["text"])=="")

                                          Wiederum ersetzen von $text durch $_POST["text"], zusätzlich trennen wird mit trim() überflüssige Leerzeichen und/oder Zeilenvorschübe an Anfang und Ende des Textes ab.

                                          {
                                             echo "<b>Du hast kein Text eingegeben !</b><br>";
                                             echo "Klicke auf den Backbutton deines Browsers";
                                            }

                                          else
                                          {
                                            $a = fopen("gaestebuch.txt","r+");
                                            $inhalt= fread($a,("gaestebuch.txt"));

                                          Hier ist der Fehler:

                                          "string fread (int fp, int length)
                                             fread() reads up to length bytes from the file pointer referenced
                                             by fp."

                                          Vergleiche das mal mit der Zeile oben, insbesondere was den Wert der zu lesenden Länge angeht.

                                          fclose($a);

                                          $d=fopen("gaestebuch.txt","w+");       // Datei zum Anhängen öffnen
                                            if ($d)                                // Öffnen hat geklappt, $d ist ein Dateizeiger
                                             {
                                            fputs($d,"Von: ".htmlentities($name)."<br><br>");
                                                 fputs($d,strtr(nl2br(htmlentities($text)."$inhalt"."<br><hr><br>"),"\n\r"," "));
                                             fputs($d,"$inhalt");  // alten Dateiinhalt anhängen
                                             fputs($d,"\n");       // neuen Eintrag mit Zeilenvorschub abschließen

                                          Hier wirst Du über zwei weitere Fehler stolpern. Beachte die in den Kommentaren beschriebene Funktion der beiden letzten obigen Zeilen. Außerdem solltest Du mal schauen, wie oft Du eigentlich den alten Inhalt zurückschreibst.
                                          Falls Dir das nichts hilft, analysiere den Inhalt der gaestebuch.txt-Datei und denke daran: immer nur einen Eintrag pro Zeile.

                                          Analog zur Prüfung oben wäre es davon abgesehen sinnvoll, wenn Du direkt um $text auch hier den Befehl trim() schreibst, um überflüssige Leerstellen zu kappen.

                                          Weiterhin sind hier $text durch $_POST["text"] und $name durch $_POST["name"] zu ersetzen.

                                          fclose($d);
                                                 }

                                          }
                                          }

                                          $g=file("gaestebuch.txt"); //Auslesen

                                          if ((! isset($start)) || (! is_numeric($start)))
                                               $start=0;

                                          Ersetze dies durch:

                                          if ((! isset($_GET["start"])) || (! is_numeric($_GET["start"])))
                                             $start=0; // URL-Variable start ist nicht angegeben oder keine Zahl, Standardwert einsetzen
                                           else
                                             $start=$_GET["start"]; // URL-Variable start ist brauchbar, Wert übernehmen

                                          // und nochmal für $einträge_pro_seite
                                            if ((! isset($eintraege_pro_seite)) || (! is_numeric($eintraege_pro_seite)))
                                               $eintraege_pro_seite=10;

                                          Analog zu $_GET["start"] oben ändern.

                                          [..]

                                          <b><br><br><center>Eintragen in mein Gästebuch</b><br>

                                          <form action="eintragen.php?action=add" method="post">

                                          Der Teil ?action=add kann ersatzlos gestrichen werden, da wir oben ja gleich auf Existenz der Formulardaten prüfen.

                                          Nochmal zum "Code verstehen": Vielleicht täusche ich mich, aber allgemein habe ich den Eindruck, daß Du bei Problemem eher im Code rumstocherst, hier mal fummelst, da mal drehst, anstatt systematisch dem Fehler auf den Grund zu gehen, und Dir auf diese Art die Sicht verbaust.
                                          Tipp: Falls Du der Meinung bist, ein Skript müsste funktionieren, dann solltest Du als erstes den Ablauf des Skriptes genau verfolgen, und zwar indem Du möglichst breit Anweisungen einstreust, mit denen Du den aktuellen Inhalt der Variablen prüfst (echo, print_r, vardump).

                                          Den vorliegenden Fehler bei fread(), der dazu führte, daß immer nur der neue Eintrag in gaestebuch.txt stand, habe ich zum Beispiel mit zwei Zeilen 'echo $inhalt;' entdeckt, gleich die erste nach 'fclose($a);' hat gezeigt, daß in $inhalt nix drin war. Da gaestebuch.txt gut gefüllt war, konnte der Fehler nur beim Auslesen liegen.

                                          Vielleicht hilft Dir dieser Rat ja in Zukunft, Fehlerquellen schneller zu entdecken.

                                          Last but not least zwei Schönheitstipps: Statt "<br><br><br>" sollte "<p>" benutzt werden, Überschriften nicht mit "<b>Mein Gästebuch</b>" sondern "<h1>Mein Gästebuch</h1>" schreiben. Aussehen von <p> und <h1> kannst Du per CSS verändern, näheres dazu steht im CSS-Kapitel von SelfHTML.

                                          Gruß,
                                            soenk.e

                                          1. JA JA JAAAAA !

                                            JETZT GEHTS !

                                            :)

                                            Aber...
                                            Ich habe mir nochmehr Unsinn ausgedacht, und....
                                            Wie ueblich funktionierts nicht !!!!!

                                            Bist du noch nicht muede, staendig meine Fragen zu beantworten?
                                            Ich glaube ich habe die laengste kette von Fragen hier im Forum !!!

                                            Hier meine Ueberlegungen :
                                            Ich wollte die Datei Automatisch begrenzen, maximal 27 Eintraege.
                                            Ist das ok so?

                                            $max=27;
                                            $gbfile = "gaestebuch.txt";
                                            $data = file("$gbfile");
                                            $eintraege = count($data);

                                            if($eintraege>$max)
                                            {
                                             for($q=$max;$q<$eintraege;$q++)
                                             {
                                             unset($data[q]);
                                             }
                                            }

                                            1. Ich habe mir nochmehr Unsinn ausgedacht, und....
                                              Wie ueblich funktionierts nicht !!!!!

                                              Ich wollte die Datei Automatisch begrenzen, maximal 27 Eintraege.

                                              $max=27;
                                              $gbfile = "gaestebuch.txt";
                                              $data = file("$gbfile");
                                              $eintraege = count($data);

                                              if($eintraege>$max)
                                              {
                                              for($q=$max;$q<$eintraege;$q++)
                                              {
                                              unset($data[q]);

                                              ---------------^^ unset($data[$q]);

                                              }
                                              }

                                              Das funktioniert. Allerdings kommt es darauf an, was Du begrenzen willst, nur die Ausgabe oder auch den Inhalt von gaestebuch.txt. Momentan machst Du nur ersteres. Ich weiß auch nicht, wie Du den obigen Code wo eingesetzt hast. Jedenfalls benutzt Du jetzt andere Variablen als im Ausgabeteil des bisherigen Codeschnippsels und der Code auf Deinen Seiten hat das Problem, daß die neue Größe der Daten bei der Ausgabe der Blätterverweise nicht korrekt beachtet wird, da man nach dem 27. Eintrag bis zum tatsächlichen Ende nur noch leere Seiten erhält.
                                              Das Prinzip scheint jedenfalls richtig. Prüfe einfach mal, wie die Variablen aussehen, die für Zurück und Weiter benutzt werden (siehe vorige Antwort).

                                              Willst Du auch die Anzahl in gaestebuch.txt begrenzen, mußt Du den Code für's Schreiben umbauen. Dabei ist es vielleicht am sinnvollsten, wenn Du nur noch einmal ganz am Anfang $g=file("gaestebuch.txt") aufrufst, anschließend mit obiger Schleife die Daten begrenzt und erst dann mit dem bisherigen Rest beginnst, also eventuelles Abspeichern eines neuen Eintrags und Ausgabe der gewünschten Seite. Im ganzen Code kannst Du dann die gelesenen Daten aus $g benutzen, ohne weitere Dateizugriffe, etwa so:

                                              <html><body>
                                                <?php

                                              $g=file("gaestebuch.txt"); // Daten einlesen

                                              // hier Begrenzungsschleife

                                              $d=fopen("gaestebuch.txt","w+");       // Datei zum Anhängen öffnen
                                                if ($d)                                // Öffnen hat geklappt, $d ist ein Dateizeiger
                                                  {
                                                   $neu="Von: ".htmlentities($name)."<br><br>"; // Autor,..
                                                   $neu.=strtr(nl2br(htmlentities(trim($text))."<br><hr><br>"),"\n\r"," "); // ..Text..
                                                   $neu.="\n"; // ..und abschließen.
                                                   fputs($d,$neu); // neuen Eintrag speichern

                                              for ($i=0;$i<sizeof($g);$i++) // alte Einträge speichern
                                                    {
                                                     fputs($d,$g[$i]);
                                                    };
                                                   fclose($d);

                                              array_unshift($g,$neu); // neuen Eintrag für den noch folgenden
                                                                           // Code in $g einfügen
                                                  };

                                              // Auch im Weiteren gaestebuch.txt _nicht_ laden, die aktuellen
                                                // Daten stehen allesamt korrekt in $g.

                                              Die Begrenznungsschleife könnte man auch direkt bei "alte Einträge speichern" mit einbauen.

                                              Gruß,
                                                soenk.e

                                              1. Und.....

                                                fertig ist mein Gaestebuch.

                                                Als erstes mochte ich dir HERZLICH DANKEN, fuer die ganze Hilfe.
                                                Ohne dich, haette ich den Script nie und niemals fertig gekriegt.

                                                ich habe die neue Ausgabe methode eingesetzt, es geht jetzt alles prima.

                                                ich habe sogar einen Fehler korrigiert !!!!
                                                *stolzguck
                                                :)

                                                for ($i=0;$i<sizeof($g);$i++) // alte Einträge speichern
                                                      {
                                                       fputs($d,$g[$i]);
                                                      };
                                                     fclose($d);

                                                Die abbruch - Bedingung war sizeof($g)
                                                also alle frueheren Eintraege zusammengezaehlt.
                                                Ich wollte das ganze auf eine Bestimmte Anzahl begrenzen - $max
                                                also habe ich die schleife so umgeschrieben :

                                                for ($i=0;$i<$max;$i++)

                                                Ich glaube ich versuche jetzt ein wenig Durchblick bei CSS
                                                Die hast du in der vorletzten Antwort mal erwaehnt.
                                                So wie ich es verstanden, ist CSS fuer die Gestaltung verantwortlich.
                                                Dan kann ich auch die 3 meter ueberschrift verkleinern : "Mein Gaestebuch" :)
                                                Noch mal vielen, Vielen, VIELEN, V I E L E N   D A N K

                                                ich fuege nochmal den fertigen Script hinzu, wenn du das Ding irgendwo einsetzen moechtest, dann nur zu. Du hast mehr davon geschrieben als ich !!!!

                                                Gruß, Alex

                                                <html>

                                                <body bgcolor="#FFFFFF">

                                                <font face="Verdana" size="1,5">
                                                <h1>Mein Gästebuch</h1><p>

                                                <?php

                                                $g=file("gaestebuch.txt");

                                                $max=799;  // 1 weniger setzen, weil beim Einlesen, nach loeschen 1 Eintrag zugefuegt wird

                                                $eintraege = count($g);
                                                if($eintraege>$max)
                                                {
                                                 for($q=$max;$q<$eintraege;$q++)
                                                 {
                                                 unset($data[$q]);
                                                 }
                                                }

                                                if (isset($_POST["text"]))
                                                {

                                                if (trim($_POST["text"])=="")
                                                  {
                                                   echo "<b>Du hast kein Text eingegeben !</b><br>";
                                                   echo "Klicke auf den Backbutton deines Browsers";
                                                  }

                                                else
                                                    {

                                                $d=fopen("gaestebuch.txt","w+");       // Datei zum Anhängen öffnen
                                                     if ($d)                                // Öffnen hat geklappt, $d ist ein Dateizeiger
                                                   {
                                                        $neu="Von: ".htmlentities($name)."<br><br>";
                                                         $neu.=strtr(nl2br(htmlentities(trim($text))."<br><hr><br>"),"\n\r"," ");
                                                         $neu.="\n"; //Ablschluss
                                                        fputs($d,$neu); // neuen Eintrag speichern

                                                for ($i=0;$i<$max;$i++) // alte Einträge speichern
                                                        {
                                                         fputs($d,$g[$i]);
                                                        }
                                                       fclose($d);

                                                array_unshift($g,$neu); // neuen Eintrag für den noch folgenden
                                                                               // Code in $g einfügen
                                                  }

                                                }
                                                }

                                                // Auch im Weiteren gaestebuch.txt _nicht_ laden, die aktuellen
                                                  // Daten stehen allesamt korrekt in $g.

                                                $g=file("gaestebuch.txt"); //Auslesen

                                                if ((! isset($_GET["start"])) || (! is_numeric($_GET["start"])))
                                                   $start=0; // URL-Variable start ist nicht angegeben oder keine Zahl, Standardwert einsetzen
                                                 else
                                                   $start=$_GET["start"]; // URL-Variable start ist brauchbar, Wert übernehmen

                                                if ((! isset($_GET["$eintraege_pro_seite"])) || (! is_numeric($_GET["$eintraege_pro_seite"])))
                                                   $eintraege_pro_seite=10; // URL-Variable start ist nicht angegeben oder keine Zahl, Standardwert einsetzen
                                                 else
                                                   $eintraege_pro_seite=$_GET["$eintraege_pro_seite"]; // URL-Variable start ist brauchbar, Wert übernehmen

                                                for ($i=$start;$i<$start+$eintraege_pro_seite;$i++)
                                                   {
                                                    if (isset($g[$i])) // existiert überhaupt etwas an $g[$i]?
                                                      {
                                                       echo $g[$i];    // ja, eintrag ausgeben
                                                       echo "\n";      // kosmetik, ein bißchen luft tut immer gut
                                                      }
                                                   }

                                                if ($start !=0)

                                                {
                                                     echo "<a href="eintragen.php?";
                                                     echo "start=".($start-$eintraege_pro_seite);
                                                     echo "&eintraege_pro_seite=".$eintraege_pro_seite;
                                                     echo ""><center>zurück</a>";
                                                    }

                                                else
                                                    {
                                                     echo "<center>zurück ";
                                                    }

                                                if ($start+$eintraege_pro_seite<sizeof($g))
                                                    {
                                                     echo "<a href="eintragen.php?";
                                                     echo "start=".($start+$eintraege_pro_seite);
                                                     echo "&eintraege_pro_seite=".$eintraege_pro_seite;
                                                     echo ""><center>Weiter</a>";
                                                    }
                                                else
                                                    {
                                                     echo "<center>weiter";
                                                    }

                                                echo "<br><br><center>$eintraege Einträge";
                                                ?>

                                                <font face="Verdana" size="2">
                                                <h1><p><center>Eintragen in mein Gästebuch</h1><br>

                                                <form action="eintragen.php" method="post">

                                                Dein Name: <center><input type="text" name="name" size="24"><br>
                                                <br>

                                                Dein Eintrag:<br>

                                                <center><textarea name="text" cols="35" rows="5"></textarea><br>
                                                <input type="submit" value="Abschicken">

                                                </form>
                                                </font>
                                                </body>

                                                </html>

                                                1. Und.....

                                                  fertig ist mein Gaestebuch.

                                                  Na, war auch eine schwere Geburt :)

                                                  Ich glaube ich versuche jetzt ein wenig Durchblick bei CSS
                                                  Die hast du in der vorletzten Antwort mal erwaehnt.
                                                  So wie ich es verstanden, ist CSS fuer die Gestaltung verantwortlich.

                                                  So ist es, HTML für die logische Auszeichung ("Überschrift", "Absatz", "wichtiger Text"), CSS für das Aussehen ("Überschriften groß und grün mit blauen Punkten drumrum").

                                                  ich fuege nochmal den fertigen Script hinzu, wenn du das Ding

                                                  [..]

                                                  // Auch im Weiteren gaestebuch.txt _nicht_ laden, die aktuellen
                                                  // Daten stehen allesamt korrekt in $g.

                                                  »»

                                                  $g=file("gaestebuch.txt"); //Auslesen

                                                  *grummel* ;)

                                                  Gruß,
                                                    soenk.e