Gästebucheinträge ordnen..
Ben
- php
0 André Laugks0 Ben0 André Laugks0 Ben0 André Laugks0 Ben
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
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
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
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
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
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
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.
- 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.
- 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.
- 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
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