Problem mit PHP Eingabe

  • Hallo, ich habe mir eine Art Gästebuch gebastelt, was die Daten in einer .txt Datei speichert.

    Ich möchte es gerne so haben, das alle Einträge gespeichert werden.
    Nur das Problem ist, das die Datei später so aussieht:
    Name1|Text1
    Name2|Text2
    (Leerzeile, die automatisch beim ersten Eintrag entsteht)

    So, wenn ich die Daten dann aufrufe habe ich das Problem, das bei dem leereintrag nix kommt, aber die Ausgabe sieht dann so aus:

    Um diese Leerzeile zu unterdrücken habe ich mir dann folgendes ausgedacht.

    Ich habe eine count.txt Datei, die die Einträge zählt.
    Wenn die count.txt Datei = 0 ist, soll der erste Eintrag die vorhandene Datei überschreiben.
    Wenn Count.txt >= 1 ist, sollen die nachkommenden Einträge angehangen werden.

    Somit kann die die eintrag.txt Datei zum Beginn mit dem Inhalt "aaa" füllen.
    Der wird dann einfach durch den ersten Eintrag ersetzt, dadurch entsteht keine Freizeile.
    Alle anschließenden Eintragungen werden dann einfach angehangen.

    Die Ausgabe habe ich so geregelt, das wenn count.txt = 0 ist der Text "keine Eintragungen" kommt, wenn count.txt >= 1 ist, werden die Einträge ausgelesen.

    Die send.php Datei, die die Einträge einträgt habe ich so aufgebaut:

    Leider funktioniert das nicht :(
    Was mache ich falsch?[/quote]

  • Seh ich das richtig, dass du in mitten beim öffnen der count.txt eine Funktion count() aufrufst? das kann ja nicht klappen...

    Und andere Idee, lass deine Eingaben mit file() auslesen ;)
    so z.B.:


    Hier wurden in dem Falle Daten so gespeichert:

    Code
    Pascal|09.05.2008|text


    und abgespeichert wie folgt:

    Code
    $datei = "gb.log";
      $eintrag = $name."|".date('d.m.Y')."|".$comment;
      $fp = @fopen($datei,'a');
      @rewind($fp);
      @fputs($fp, $eintrag."\n");
      @fclose($fp);
  • Super, damit ist mein Problem schonmal gelöst.
    Wie schaffe ich es jetzt noch, das die neusten Einträge oben sind?
    Derzeit stehen die neusten Einträge unten...

  • Datei mit file einlesen, neue daten schreiben und danach das array dranhängen

  • Zitat von The User

    Besser mit readfile, das geht dann einfacher.


    Dann doch eher file_get_contents

  • Zitat von Kinimod

    Super, damit ist mein Problem schonmal gelöst.
    Wie schaffe ich es jetzt noch, das die neusten Einträge oben sind?
    Derzeit stehen die neusten Einträge unten...

    Mit krsort($beitraege) vor der foreach schleife ;)

  • Jetzt noch eine kompliziertere Frage:

    Ich habe vor eine Art Auflistung zu erstellen.
    Sprich die User sollen angeben können wann sie wo waren (in welchen Freizeitparks).
    Dabei können sie dann das Datum angeben, wann sie da waren.

    Jetzt möchte ich die Sätze nach dem Datum ausgeben.

    Sprich, das die Datei gb.log

    Code
    21.03.08|Phantasialand
    22.03.08|Europa Park
    19.02.08|Movie Park

    Wie folgt ausgegeben wird:

    19.02.08 Movie Park
    21.03.08 Phantasialand
    22.03.08 Europa Park

    Ist das überhaupt möglich?

  • Hallo, ist es auch möglich, das die Einträge auf Seiten verteilt werden?
    Sprich Eintrag 1-10 Seite 1, Eintrag 11-20 auf Seite 2 [...]

    Vielen Dank, ihr habt mir schon viel weitergeholfen =)

  • Ok, das mit dem Nummerieren bekomme ich denke ich hin (hab das schonmal geschafft^^).
    Nur wie schaffe ich es, das er nur die Einträge 1-10 ausliest (Vermute mal mit einer If Abfrage?) und wenn es mehr sind, das er die dann in Seiten aufteilt?

  • Hallo, jetzt möchte ich es irgendwie einstellen, das man einen Eintrag löschen kann.

    Angenommen wir haben die Datei:

    1|Kinimod|Beitrag1
    2|Kinimod|Beitrag2
    3|Kinimod|Beitrag3

    Jetzt möchte ich den Eintrag mit der ID 2 entfernen, geht das? Und wenn ja wie macht man das?

    Schonmal danke für eure Tipps :)

  • Vielen Dank :)

    Leider habe ich noch das problem, das immer die erste Zeile gelöscht wird, wo kann ich einstellen, welche Zeile gelöscht wird?
    Habe bal an jeder Zahl gedreht, aber immer wid nur die erste Zeile gelöscht oder eben nichts.

    Der Code:

  • Ah, ich muss aus $lineno = 0; z.b. $lineno = -10; machen^^

    Jetzthabe ich aber folgendes Problem:

    Ich lösche das ganze mit einem Link gb_delete?post=5

    Nun habe ich folgende Datei:

    1|Nickname|Text
    2|Nickname|Text
    3|Nickname|Text
    4|Nickname|Text
    5|Nickname|Text
    6|Nickname|Text

    Nun lösche ich den Eintrag (die Zeile) 4, die Datei sieht wie folgt aus:

    1|Nickname|Text
    2|Nickname|Text
    3|Nickname|Text
    5|Nickname|Text
    6|Nickname|Text

    Nun möchte ich den Eintrag 5 löschen und klicke auf gb_delete?post=5, dadurch wird dann jedoch der beitrag 6 gelöscht, da er ja nun in der Zeile 5 ist.

    Wie schaffe ich es also, das er nicht die Zeilen löscht, sondern nach den zahlen sucht (die erste Zahl) und dann diese Zeile löscht?

  • Du musst schon die entsprechende zeile suchen und nicht einfach per index löschen