Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Problem mit PHP-Pinnwand

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Problem mit PHP-Pinnwand

    Guten Abend zusammen,
    vorab muss ich sagen, dass ich ein totaler PHP-Neuling bin und mir das Gästebuch durch verschieden Tutorials erarbeitet habe.
    Nun mein Problem:
    Die Mitteilung, die in das Eingabefeld eingegeben wird, wird in der datei daten.dat gespeichert. Wenn im Eingabefeld ein "Enter"-Befehl eingegeben wurde, soll in die daten.dat ein <br/> eingefügt werden. Das klappt beim ersten eintrag auch gut, nur der zweite Eintrag wir direkt unter den ersten gesetzt, ohne den Eintrag als neu kenntlich zu machen. Die Fehlerhafte Zeile habe ich auch schon ausfindig machen können. Wenn ich diese weglasse, klappt alles fehlerfrei, allerdings werden die Enter-befehle nicht übernommen. Hier die Dateien:

    gb.php (verarbeitet die Daten, die vorher in ein HTML-Formular eingefügt wurden)
    PHP-Code:
    <?php
    $daten
    =$_POST['name'] . "|" date("d.m.Y") . "|" date("H:i") . "|" $_POST['eintrag'] . "<br />";
    $datenbank "daten.dat";
    $daten str_replace("\n","<br />",$daten); // Hier müsste der Fehler liegen, ohne diese Zeile klappt es
    $datei fopen($datenbank,"a");
    fwrite($datei$daten);
    ?>
    pinnwand.php (Die "Anzeige-Datei")
    PHP-Code:
    <?php
    $datenbank 
    "./daten.dat"$datei fopen($datenbank,"r");
    $entries =  array();
    if (
    $datei) {
      while (!
    feof($datei))
        
    $entries[] = explode('|'fgets($datei));
    }
    else
      echo 
    "Datei konnte nicht ge&ouml;ffnet werden";
    for (
    $i count($entries) - 1$i >= 0$i--)
      if (
    strlen($entries[$i][3]) > 0)
        echo 
    '<span style="font-size: 0.8em"><b>' $entries[$i][0] . '</b> schrieb am <b>' $entries[$i][1] . '</b> um <b>' $entries[$i][2] . '</b>:</span><br>' $entries[$i][3] . '<hr /><br />';
    ?>
    Ich hoffe, ihr könnt mir helfen.

    mfg nicki1993


  • #2
    Was passiert wenn du die Daten ohne die Zeile speicherst und das umwandeln von \n in <br /> erst bei der Ausgabe machst ?
    Signatur:
    PHP-Code:
    $s '0048656c6c6f20576f726c64';
    while(
    $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

    Kommentar


    • #3
      Eigentlich liegt der Fehler eher hier:
      . "<br />";
      Für die Datei (Prinzip: Eine Zeile =ein Eintrag) müsste dort ein new line ergänzt werden. Dann aber würde die folgende Zeile dieses \n genauso behandeln wie die aus der Textarea. Deshalb muss die Ersetzung vorher geschehen. Du solltest mal in das entstehende File sehen, wie sich das Problem aktuell äußert.

      PHP-Code:
      $eintrag str_replace("\n" "<br />" $_POST['eintrag']);
      $daten=$_POST['name'] . "|" date("d.m.Y") . "|" date("H:i") . "|" $eintrag "\n";
      $datenbank "daten.dat";
      $datei fopen($datenbank,"a");
      fwrite($datei$daten); 
      Die Lösung geht davon aus, dass die anderen Felder keine Umbrüche enthalten. Sicherheitshalber sollte man auch noch potentielle \r entfernen.

      Was auch noch unbedingt fehlt sind Sicherheitsmaßnahmen (Validierung der Eingaben).
      --

      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


      --

      Kommentar


      • #4
        Was passiert wenn du die Daten ohne die Zeile speicherst und das umwandeln von \n in <br /> erst bei der Ausgabe machst ?
        Das geht nicht, weil das System den Umbruch schon als Trenner für einzelne GB-Einträge verwendet.
        --

        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


        --

        Kommentar


        • #5
          Macht Sinn ^^ Nachdem ich deinen Post gelesen hab kommts mir auch logisch vor...
          @TE: Ignorier meinen Post, das ist Quatsch. Mach was nikosch sagt...
          Signatur:
          PHP-Code:
          $s '0048656c6c6f20576f726c64';
          while(
          $i=substr($s=substr($s,2),0,2))echo"&#x00$i;"

          Kommentar


          • #6
            @nikosch: E´Was muss den jetzt genau alles gemacht werden? ich bin wie gesagt blutigster Anfänger.

            mfg nicki1993

            Kommentar


            • #7
              Habe ich oben schon geschrieben.
              --

              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


              --

              Kommentar


              • #8
                Das hatte ich wohl übesehen, sry. Jetzt klappt alles bestens. Danke für die Hilfe.

                mfg nicki1993

                Edit: In einer anderen Datei hatte ich genau das gleiche Problem und habe es, wie nikosch es geschrieben hat, ebenfalls so gelöst, alledings bleibt der Fehler. Hierbei ist zu beachten, dass die Datei zum Eintragen in einem anderen verzeichnis als die anderen dateien liegt. Hier das Script:

                PHP-Code:
                <?php
                $eintrag 
                str_replace("\n" "<br />" $_POST['eintrag']);
                $daten=$_POST['titel'] . '|' $_POST['eintrag'] . "\n";
                $datenbank "./daten.dat";
                $datei fopen($datenbank,"a");
                fwrite($datei$daten);
                ?>
                Sobald im Eingabefeld ein Enter-Befehl gemacht wird, wir der Text nur bis zu diesem Enter Befehl eingetragen. In der daten.dat sind auch keinerlei <br /> aufzufinden.

                mfg nicki1993

                Kommentar


                • #9
                  Sry für den Doppelpost, aber das Problem ist gelöst. Es war ein Fehler in der Anzeige-Datei.

                  mfg nicki1993

                  Kommentar

                  Lädt...
                  X