Gästebuch mit Textdatei



  • Hi Leute.
    Ich habe mir jetzt mal ein Gästebuch mit PHP geschrieben und habe jetzt folgendes Problem: Ich speichere die Daten in eine Textdatei. Jetzt werden die Daten aber immer an die Datei angehängt, also die aktuellsten Beiträge stehen am Ende der Datei. Wenn ich die Datei jetzt von oben nach unten durchlese, steht ja auch der älteste Beitrag ganz oben... Aber eigentlich müsste das ja genau andersherum sein. Ich habe aber keine Ahnung wie ich das machen soll....
    Also wer weiß Rat?
    Danke.
    MfG Aoeke

    P.S. Eine Möglichkeit, dass mit MySQL zu machen habe ich nicht!



  • Einfach die ausgelesenen Daten umsortieren?

    -junix



  • Wie mache ich das? Ich bin noch nicht so erfahren mit PHP...
    Danke. MfG Aoeke



  • hmmms chau dir mal
    explode()
    an und n Bischen array handling...

    eventuell gibts sogar ne Funktion (array_*) die das selber kann. Dazu noch fopen und fread, sowie flock, fclose und so (o:

    -junix



  • array_reverse 🙂



  • ich würde es von vornherein gleich richtig in die datei schreiben...

    alte auslesen, hinter den neuen beitrag dranhängen, wieder reinschreiben..

    aber vielleicht bin ich nur zu faul zum reversen 😉



  • P.S. Eine Möglichkeit, dass mit MySQL zu machen habe ich nicht!P.S. Eine Möglichkeit, dass mit MySQL zu machen habe ich nicht!

    Wie wärs mit SQLite? Das zu installieren sollte eigentlich überall möglich sein...



  • Warum nicht irgendwie so: (kommt natürlich darauf an, wie dein Text-File aufgebaut ist)

    $GBEntries = file('./gb.txt');
    for($i = sizeof($GBEntries)-1; $i >= 0; $i--) {
     echo $GBEntries[$i].'<br>';
    }
    //oder eben mit array_reverse und foreach
    $GBEntries = array_reverse($GBEntries);
    foreach($GBEntries as $GBEntry) {
     echo $GBEntry[$i].'<br>';
    }
    


  • elise schrieb:

    ich würde es von vornherein gleich richtig in die datei schreiben...

    alte auslesen, hinter den neuen beitrag dranhängen, wieder reinschreiben..

    aber vielleicht bin ich nur zu faul zum reversen 😉

    Ja die Idee ist mir gestern abend auch noch gekommen. Hatte noch keine zeit das auszuprobieren. Muss ich mal demnächst machen.

    CarstenJ schrieb:

    P.S. Eine Möglichkeit, dass mit MySQL zu machen habe ich nicht!

    Wie wärs mit SQLite? Das zu installieren sollte eigentlich überall möglich sein...

    Dann müsste ich mich auch erst noch in MySQL oder SQLite einarbeiten und dazu fehlt mir momentan auch die Zeit.... Ich meine, mit der Textdatei geht das ja.
    Ich muss die ja nur noch irgendwie anders ordnen.

    flenders schrieb:

    Warum nicht irgendwie so: (kommt natürlich darauf an, wie dein Text-File aufgebaut ist)

    $GBEntries = file('./gb.txt');
    for($i = sizeof($GBEntries)-1; $i >= 0; $i--) {
     echo $GBEntries[$i].'<br>';
    }
    //oder eben mit array_reverse und foreach
    $GBEntries = array_reverse($GBEntries);
    foreach($GBEntries as $GBEntry) {
     echo $GBEntry[$i].'<br>';
    }
    

    Ja also das erste dürfte nicht funktionieren, denn das würde mit dem Aufbau der Textdatei nicht hinhauen. Das zweite müsste ich mir erst genau angucken, weil wie gesagt bin ich noch nicht so erfahren mit PHP und weiß nicht, was der da macht... 😃

    Danke auf jeden Fall für die Antworten.
    MfG Aoeke



  • Wie ist denn dein Text-File aufgebaut?



  • Ja also ich habe es jetzt so gemacht, wie es Elise vorgeschlagen hatte. Und es funktioniert. Meine Textdatei ist folgendermaßen augfgebaut:

    Name der Person die sich einträgt
    E-Mail Adresse der Person
    Nachricht
    -######- (Trennzeichen)
    Name
    E-Mail
    Nachricht
    -######-
    ...
    

    MfG Aoeke



  • Jetzt habe ich aber noch eine Frage:
    Wenn ich jetzt das Formular habe, wo man die Daten eingibt, habe ich als action = bla.php. Die Seite wird ja dann mit einem Klick auf den Submit Button aufgerufen. Geht es jetzt aber auch irgendwie, dass der die Seite nicht "aufruft" sondern bloss den Code darin ausfuehrt und die Seite, wo das Formular und das Gaestebuch ist einfach bloss aktualisiert?
    Ich hoffe ihr versteht mich jetzt...
    Danke. MfG Aoeke



  • Nicht so ganz, aber du kannst doch einfach eine header-Weiterleitung zu der gewünschten Seite machen, nachdem du die DB-Einträge vorgenommen hast 🙄



  • Die Seite ruft er schon auf, aber du kannst innerhalb von PHP dann direkt wieder auf deine index-Seite forwarden:

    header("Location: http://www.domain.de/index.php");



  • Bloops schrieb:

    Die Seite ruft er schon auf, aber du kannst innerhalb von PHP dann direkt wieder auf deine index-Seite forwarden:

    header("Location: http://www.domain.de/index.php");

    Danke, dass funzt schonmal. Es ist aber immer noch nicht so, wie ich es gern haette, da die Seite dann sofort wieder aufgerufen wird, jedoch wird sie nicht aktualisiert. 😞 Gibt es dafuer auch irgendeinen Befehl oder habt ihr eine Idee wie ich das machen kann?



  • Nach der Weiterleitung wird es nicht richtig angezeigt, aber wenn du anschließend aktualisierst (f5 im ie)?
    Falls ich das Problem richtig verstanden habe hilft dir vielleicht das hier



  • Hab es jetzt hinbekommen.
    DANKESCHOEN an alle!!!
    MfG Aoeke



  • Irgendwie habe ich dochnoch ein Problem.
    Ich habe also das Eingabeformular:

    <form action="create_entry.php" method="post">
    ...
    </form>
    

    Die Eingabefelder sind mit name, mail, page und comment benannt. Wenn ich jetzt auf den Submit Button klicke, oeffnet der die Datei create_entry.php, doch es werden scheinbar keine Daten geschickt. Als ich das auf meinem Rechner mit ApacheFriends probiert hat, hat es funktioniert. Und die Variablen $name, etc. waren alle "belegt". Jetzt wo ich die Dateien auf dem Server habe, funktioniert es nicht mehr....? Die Variablen sind immer leer?
    Nachzupruefen ist das hier.
    Woran liegt das, dass scheinbar keine Daten gesendet werden? Oder ist etwas anderes falsch?
    MfG Aoeke



  • hi

    ganz einfach.. ich habe mir deinen webspace angeschaut

    http://forum.liquidhoster.co.uk/forum_posts.asp?TID=32&PN=1

    die register globals sind off per voreinstellung..

    du musst nun die variablen abholen mit

    deineVari=deineVari=_POST['deineVari'];

    lies mal dringend was zu register globals, ist jetzt meist off.

    🙂



  • DANKESCHOEOEOEN......................
    MfG Aoeke

    BTW: DAS FORUM IST SOOOOOOOO SUPER!!!!!!! 😃
    BTW2: Schreibt mal bitte Einträge im Gaestebuch, ich brauch noch ein paar Tests! 😃 😃

    nochmals dankeschoen.


Anmelden zum Antworten