Ben: Gästebucheinträge ordnen..

Schönen guten Abend,

bin noch PHP-Anfänger und habe gerade mein erstes PHP-Gästebuch programmiert. Es basiert aber nur auf einer Textdatei. Mein Problem ist, dass beim Aufrufen der Einträge die neuesten nicht oben, sondern ganz unten angehängt werden. Kann ich irgendwie beeinflussen, dass die neuen Einträge über die alten geschrieben werden?

Hoffe, das war verständlich formuliert.. *g*

Schöne Grüße,
Ben

  1. Hallo!

    bin noch PHP-Anfänger und habe gerade mein erstes PHP-Gästebuch programmiert. Es basiert aber nur auf einer Textdatei. Mein Problem ist, dass beim Aufrufen der Einträge die neuesten nicht oben, sondern ganz unten angehängt werden. Kann ich irgendwie beeinflussen, dass die neuen Einträge über die alten geschrieben werden?

    Du sortierst alle Eintrage in ein mehrdim. Array ein.

    $liste_eintrag = file($textdatei);

    for($i=0;$i<count($liste_eintrag);$i++)
      {
         // "Spalten" auf Variablen aufteilen
         $eintrag[] = array($name, $email, $text, $datum);
      }

    // Dann sortierst Du nach Datum($datum) aufwärts.

    foreach($eintrag as $v) $s[] = $v[3];
    array_multisort($s, SORT_ASC, $eintrag);

    siehe: http://www.dclp-faq.de/q-arrays-sortieren.html

    MfG, André Laugks

    1. Hallo André,

      danke für die schnelle Antwort. Leider steig ich da noch nich so ganz durch.. *g*

      Gehört dieser Script-Teil dorthin, wo die Einträge ausgegeben werden oder schon in das script, dass sie in die Textdatei schreibt?

      Vielleicht soll ich mal das Script für das Gästebuch hier hineinkopieren?

      Gruß, Ben

      1. Hallo!

        danke für die schnelle Antwort. Leider steig ich da noch nich so ganz durch.. *g*

        Ist doch nicht so schwer.

        Wie sieht den die Textdatei aus? Aber bitte nicht die gesamte Datei hier posten, nur ein Beispiel.

        Gehört dieser Script-Teil dorthin, wo die Einträge ausgegeben werden

        Hier gehört es hin.

        oder schon in das script, dass sie in die Textdatei schreibt?

        Nein, hier gehört es NICHT hin.

        Vielleicht soll ich mal das Script für das Gästebuch hier hineinkopieren?

        Neee, bloß nicht! Das ließt sich eh kaum jemand durch bzw. schaut es sich an.

        MfG, André Laugks

        1. Hi André,

          also ich speichere jeweils kleine Tabellen, die die einzelnen Variablen ($name, $email, $kommentar) enthalten folgendermaßen:

          $datei = fopen($datenbank,"a");
          fwrite($datei, $daten);

          Die Textdatei enthält dann einfach diese Tabellen untereinander und fügt eine neue an, sobald ein neuer Eintrag getätigt wird.

          Vielleicht bekomm ich es ja hin, wenn ich es mir ganz in Ruhe anschaue. Habe eigentlich kaum PHP-Kenntnisse und bin schon sehr weit gekommen damit.. *g*

          Schönen Gruß und danke für deine Geduld,
          Ben

          1. Hallo!

            also ich speichere jeweils kleine Tabellen, die die einzelnen Variablen ($name, $email, $kommentar) enthalten folgendermaßen:

            :-( Ganz schlecht! Layout und Daten bei einer dynamischen Anwendung gemeinsam zu speichern. Die Weiterverarbeitung der Daten ist somit fast unmöglich.

            $datei = fopen($datenbank,"a");
            fwrite($datei, $daten);

            Die Textdatei enthält dann einfach diese Tabellen untereinander und fügt eine neue an, sobald ein neuer Eintrag getätigt wird.

            1. Möglichkeit
            Du speicherst alle Gästebucheinträge im CSV-Format in einer Textdatei ab. Hier mußt Du sehr sorgfälltig arbeiten. Weil ein Eintrag in einer zeile stehen muß, sonst bekommst Du beim Auslesen schwierigkeiten. Diese Zeilenumbrüche können über das Formular kommen, Absätze usw. Du mußt alle Zeilenumbrüche in <br>'s umwandelt und dann in die CSV-Datei/Text-Datei schreiben.

            2. Möglichkeit
            Du schreibst weiterhin je eine Tabelle in eine Datei. Als Name für die Textdatei verwendest Du den Timestamp. Du ließt das Verzeichnis aus und sortierst die Dateien, aufwärts oder abwärts. Mit dem Timestamp als Dateinamen geht das sehr gut.

            3. Möglichkeit
            Du verwendest eine Datenbank und es wird viel einfacher. Mit SQL und der richtigen Tabellenstruktur, kannst Du dann genz nette Sachen anstellen.

            Vielleicht bekomm ich es ja hin, wenn ich es mir ganz in Ruhe anschaue. Habe eigentlich kaum PHP-Kenntnisse und bin schon sehr weit gekommen damit.. *g*

            Probieren geht über studieren. :-)

            MfG, André Laugks

            1. Hallo!

              also ich speichere jeweils kleine Tabellen, die die einzelnen Variablen ($name, $email, $kommentar) enthalten folgendermaßen:

              :-( Ganz schlecht! Layout und Daten bei einer dynamischen Anwendung gemeinsam zu speichern. Die Weiterverarbeitung der Daten ist somit fast unmöglich.

              $datei = fopen($datenbank,"a");
              fwrite($datei, $daten);

              Die Textdatei enthält dann einfach diese Tabellen untereinander und fügt eine neue an, sobald ein neuer Eintrag getätigt wird.

              1. Möglichkeit
                Du speicherst alle Gästebucheinträge im CSV-Format in einer Textdatei ab. Hier mußt Du sehr sorgfälltig arbeiten. Weil ein Eintrag in einer zeile stehen muß, sonst bekommst Du beim Auslesen schwierigkeiten. Diese Zeilenumbrüche können über das Formular kommen, Absätze usw. Du mußt alle Zeilenumbrüche in <br>'s umwandelt und dann in die CSV-Datei/Text-Datei schreiben.
              1. Möglichkeit
                Du schreibst weiterhin je eine Tabelle in eine Datei. Als Name für die Textdatei verwendest Du den Timestamp. Du ließt das Verzeichnis aus und sortierst die Dateien, aufwärts oder abwärts. Mit dem Timestamp als Dateinamen geht das sehr gut.
              1. Möglichkeit
                Du verwendest eine Datenbank und es wird viel einfacher. Mit SQL und der richtigen Tabellenstruktur, kannst Du dann genz nette Sachen anstellen.

              Vielleicht bekomm ich es ja hin, wenn ich es mir ganz in Ruhe anschaue. Habe eigentlich kaum PHP-Kenntnisse und bin schon sehr weit gekommen damit.. *g*

              Probieren geht über studieren. :-)

              MfG, André Laugks

              Ohje, ohje... *g* Das kann ja noch was werden. Kann man nicht einfach irgendwie neue Daten, die in die Textdatei geschrieben werden nach ganz oben setzen (irgendwie an den Anfang springen oder so), anstatt sie immer darunter anzufügen? Das wär doch eigentlich die Lösung.. Naja, so leicht gehts wohl nicht. Dann werd ich mich etwas länger damit beschäftigen müssen...

              Vielen Dank André! :-)
              Wünsch dir noch ne schöne Nacht,
              der Ben

              1. Hallo!

                Ohje, ohje... *g* Das kann ja noch was werden. Kann man nicht einfach irgendwie neue Daten, die in die Textdatei geschrieben werden nach ganz oben setzen (irgendwie an den Anfang springen oder so), anstatt sie immer darunter anzufügen? Das wär doch eigentlich die Lösung.. Naja, so leicht gehts wohl nicht. Dann werd ich mich etwas länger damit beschäftigen müssen...

                Doch, Du kannst die Daten oben einfügen:

                $datei = "datei.txt"; // Datei mit den Einträgen

                $neu = "hier der neue Eintrag"; // neuer Eintrag

                $hd = fopen($datei, "r"); // Datei öffnen und nur Lesen
                $inhalt = fread($hd, filesize($datei)); // Datei auslesen
                fclose($hd); // Datei schließen

                $neu_inhalt = $neu . "\n" . $inhalt; Eintrag+Zeilenumbruch+Inhalt alte Eintrag

                $hd = fopen($datei, "w"); // Datei öffnen und nur schreiben, Inhalt löschen
                fwrite($hd, $neu_inhalt, strlen($neu_inhalt)); // Inhalt rein schreiben
                fclose($hd); // Datei schließen

                Aber die wirklich braucbare Lösung ist das nicht! Da stören immer noch die HTML-Tabellen.

                MfG, André Laugks