Kleine Frage zu Gästebuch

  • Hio,

    ich habe mir einen kleinen PHP Code geschrieben, den ich gerne bei einem Gästebuch einsetzen würde.

    Da ich noch sehr unerfahren im Skripten von PHP-Programmen bin, muss das ganze Ding bis jetzt auch noch ohne "echte" Datenbank auskommen, sondern nur mit einer Textdatei. Soweit ist das ja auch kein Problem und auch das Skript macht, was es soll. Doch eben dies ist das, was ich nicht so möchte.

    Bevor das Formular, also der PHP Code ausgeführt wird, soll überprüft werden, ob alle Felder ausgefüllt sind, ansonsten soll das Programm die Ausführung einfach abbrechen. Jetzt habe ich mal etwas gegoogelt und bin auch auf eine methode gestoßen, wie ich überprüfen kann, ob die Felder leer sind oder nicht und dann entspr. abbreche oder eben nicht.

    Leider hat dies nicht geklappt, da wenn ich empty auf TRUE setzte, ja das Skript sowieso ausgeführt wurde, bei "FALSE" aber überhaupt nichts geschah, auch wenn die Felder ausgefüllt waren.

    Hier mein bisheriger Code:

    Vielleicht kann mir ja hier jemand erklären, wie ich das Skript dazu bringe, den Code nur bei ausgefüllten Feldern auszuführen, denn so wird das Skript ja bei jedem Abruf ausgeführt, wodurch es dann auch die einzelnen Strings in den Variablenbezeichnungen ("z.B. "schrieb folgendes") postet. Wäre echt super!

    Danke und

    MfG Alienx

  • Zitat

    muss das ganze Ding bis jetzt auch noch ohne "echte" Datenbank auskommen, sondern nur mit einer Textdatei


    Das solltest du ganz schnell ändern, denn mit einer datenbank ist das alles komfortabler und so schwer sind die erfordelichen funktionen auch nicht zu erlernen.

  • Zitat von No0ob

    if (empty($_POST[' Name']) || empty($_POST['msg'])) die('Alle Felder ausfüllen');

    Das wäre die banalste Methode

    Hio,

    -DONE-

    Btw @Bandit: Ja, das habe ich sogar vor. Ich beschäftige mich momentan mit den PHP/MySQL-Grundlagen, aber vorerst reicht einmal diese "Möchtgern"-Datenbank aka *.txt-file.

    EDIT:

    So, mir ist eben noch etwas aufgefallen. Und zwar habe ich ja beim Öffnen der Datei den Modus "a" gewählt, wodurch die Einträge immer ans Ende der Datei geschrieben werden. Wenn ich mich nicht irre, sollte doch aber ein Eintrag an den Anfang der Datei geschrieben, sowie ausgelesen werde, wenn ich "a" mit "r+" ersetze. Leider wird dabei aber immer die gesamte Datei überschrieben, wodurch ich immer nur den letzten Eintrag in dieser habe.

    Wie kann ich es bewerkstelligen, dass die Einträge sowohl an den Anfang der *.txt geschrieben werden, als auch dass damit der bisherige Inhalt erhalten bleibt?

    EDIT2:

    Das Problem mit der Formularvalidierung hat sich erledigt. In dem Skript oben war ein Space bei der POST-Variable (bei den Hochkommata) zuviel drin, aber jetzt funzt es. Vielen Dank nochmal für die Hilfe!

    MfG Alienx

  • datei in iener variable lesen
    ganze datei löschen
    erst den neuen post reinschreiben, dann den inhalt der variable dazu hinten dran

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • $variable = file_get_contents('deine/datei.txt');

    die funktion liest den gesamten text einer datei aus und gibt den dan zurück ;)

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Hi
    danke, mein Quellcode sieht nun folgendermaßen aus:

    Leider bleibt die Datei jetzt nach jedem Eintrag leer und auch die ganze Funktion wird mit dem Aufruf der write.php (das oben ist der Quellcode dieser) gestoppt, wodurch der Besucher nur einen weißen Schirm zu sehen bekommt, die header("Location") scheint gar nicht zu wirken.

    Hast du eine Idee, woran das liegen könnte?

    MfG Alienx

  • Ich würd das mit fopen etc. lassen und gleich machen:

    Code
    //...
    $entries = file_get_contents('msgs.txt');
    $entries = $neuer_Eintrag."\n".$entries;
    file_put_contents('msgs.txt", $entries);
    //...


    lg
    Andi

    PS: Komfortabler ist aber auf jeden fall ne DB!


  • probiers mal so.. is aber wie gesagt ned grad schön..

    lg

  • Zitat von Alienx

    das funzt wunderbar!


    Ist so aber schlecht, denn die html/css-formatierung gehört nicht in eine datei.

  • Zitat


    Ist so aber schlecht, denn die html/css-formatierung gehört nicht in eine datei.

    Schon klar, aber er kann nicht statt dem ersten <?php print "Hallo Welt!"; ?> gleich ein MVC basierendes OOP Projekt machen, oder?

    Er hat schon mehrmals betont, dass er es anders machen wird!


    lg
    Andi