Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Skriptfehler, wer kann helfen?

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Skriptfehler, wer kann helfen?

    Hallo,

    habe ein Skript geschrieben, das eigentlich tut, was es soll, nur eben nicht ganz - hier ist mal das html-Formular, das dazugehört - headbereich hab ich weggelassen:

    Code:
    <form action="textareatest2.php" method="post">
    <input type="text" name="vorname">
    <textarea name="bemerkungen" rows="3" cols="20" wrap="physical">Bemerkungen</textarea>
    <input type="submit" value="Eintragen"></form>
    Und hier ist mal die php-Datei, die die Sache anpacken soll:

    PHP-Code:
    <?php
    $vorname 
    $_POST["vorname"];
    $textarea $_POST["bemerkungen"];
    $textareadatei fopen("textareatest.txt","w+");
    fwrite ($textareadatei,"$textarea");
    fclose ($textareadatei);
    $textarea = array();
    $textareadatei fopen ("textareatest.txt","r"); 
    flock ($textareadateiLOCK_EX);
    while (!
    feof($textareadatei)) 

    $zeile fgets($textareadatei); 
    array_push ($textarea,$zeile); 

    flock ($textareadateiLOCK_UN);
    fclose ($textareadatei); 
    $textareadatei fopen ("textareatest2.txt""a");
    flock ($textareadateiLOCK_EX);
    $textarea ="$vorname|$textarea\r\n";
    fwrite ($textareadatei,$textarea);
    flock ($textareadateiLOCK_UN);
    fclose ($textareadatei); 
    ?>
    Ob eventuell was unnötig daran ist - keine Ahnung im Augenblick - es funktioniert insofern bis auf einen Fehler - was in der textareatest2.txt abgespeichert wird, das sieht so aus:

    Udo|Array
    In der textareatest.txt jedoch als Zwischenspeicherung steht mal sowas als Beispiel:

    Schläft gern lange, hat keine besonderen Hobbys - seine Vorteile sind kurz aufgezählt:

    - Fettsucht
    -Fresssucht
    - Übergewicht
    Das Feld mit dem Vornamen muss ja nicht erst bearbeitet werden, daher taucht dieser auch nicht in der Zwischenspeicherung auf.

    Ich hatte sowas schon einmal und habe stundenlang gesucht bis ich es hatte, woran es lag - vielleicht sieht es jemand sofort, wenn er mal drüberschaut.

    Wenn dieses Skript so ausgeführt werden kann, dann soll es dazu dienen, die reine Positionierung der Schriftzeichen im Textarea auch ohne großen Aufwand abschließend wieder ausgeben zu können - dazu wird der Text aus dem Feld direkt in die textareatest.txt zwischengespeichert und von da dann wieder zeilenweise ausgelesen - durch die Öffnung mit w+ wird die textareatest.txt ja direkt bei Öffnung gelöscht - wäre also somit für fortlaufende Eingaben aus einem Formular nutzbar der Weg - ich denke, wenn der Fehler gefunden ist, dass sämtlich Einrückungen, Zeilenumbrüche, Anstriche bei Listenaufzählungen etc. ohne riesigen Aufwand bei der Ausgabe wiederhergestellt werden können.

    Vielen Dank schonmal für die Hilfe.

    Um es nochmal kurz zu erläutern, bevor alle wegen mir, weiter raten müssen - ich hätte gern, dass ich in der textareatest2.txt nicht dies hier vorfinden würde:

    Udo|Array
    sondern ich hätte gern jenes in der textareatest2.txt:

    Udo|Schläft gern lange, hat keine besonderen Hobbys - seine Vorteile sind kurz aufgezählt|- Fettsucht|-Fresssucht|- Übergewicht
    und weil ich wohl irgendwo ein Satz-, Anführungs- oder sonstiges Zeichen falsch gesetzt habe, steht da anstelle dieses Eintrages hinter dem "Udo" und dem Trennzeichen "|" eben das "Array" - wenn vielleicht bitte jemand mal drüberschauen könnte, wo dieser lästige Fehler steckt, Danke - viellicht könnt Ihr jetzt eher etwas damit anfangen, was ich geschrieben habe.

    Der Smiley ist da irgendwie von allein dazwischengeraten - eigentlich sollte dort nacheinander ":" "||" stehen - direkt nebeneinander eben.


  • #2
    machmal auf $textarea, bevor du es in die zweite datei schreibst folgendes:
    PHP-Code:
    $textareaimplode("\r\n"$textarea); 
    Also im Prinzip an diese Stelle:
    PHP-Code:
    flock ($textareadateiLOCK_EX); 
         
    $textareaimplode("\r\n"$textarea);
    $textarea ="$vorname|$textarea\r\n"
    "My software never has bugs, it just develops random features."
    "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

    Kommentar


    • #3
      Zuerts speicherst du in $textarea dne Wert aus $_POST['textarea'] und später machst du $textarea zu einem Array.

      Warum wundert es dich also das es ein Array ist?

      Davon abgesehen erachte ich die ganze Aktion als ziemlich sinnfrei. Was willst du damit erreichen? Deine Ausführungen dazu sind ziemlich unverständlich.

      Derzeit tust du nichts anderes als die Datei zu speichern und in ein Array zu zerlegen was explode() mit einem Befehl machen würde, dann liest du die Datei Zeileneiße wieder aus und schreibst da sganze als $name|$text wiede rin eine Datei.

      Wenn du ein implode() auf dein Array machst hast du wieder genau das gleiche was auch schon in $_POST stand.
      "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

      Kommentar


      • #4
        Zitat von UdoDirk Beitrag anzeigen
        Hallo,

        habe ein Skript geschrieben, das eigentlich tut, was es soll, nur eben nicht ganz - hier ist mal das html-Formular, das dazugehört - headbereich hab ich weggelassen:
        Wie wäre es, wenn du im Voraus erstmal erzählst was das Script denn tun soll und nicht nur dass es das nicht tut?

        Anhand dieses Quellcodes möchte ich das nicht raten müssen, der ist nämlich nicht gerade leserlich und selbsterklärend.

        Warum übergibst du denn ein Array an fwrite? Vielleicht schaust du dir mal file_get_content() und file_put_content() an, das erspart dir das zeilenweise lesen und schreiben von ganzen Dateien.
        @fschmengler - @fschmengler - @schmengler
        PHP Blog - Magento Entwicklung - CSS Ribbon Generator

        Kommentar


        • #5
          Zitat von fab Beitrag anzeigen
          Anhand dieses Quellcodes möchte ich das nicht raten müssen, der ist nämlich nicht gerade leserlich und selbsterklärend.
          Schwer verständlich finde ich den Code nicht. Umständlich, ja. Schwer leserlich eigentlich nicht...
          "My software never has bugs, it just develops random features."
          "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

          Kommentar


          • #6
            Natürlich lässt er sich nachvollziehen aber leserlich nenne ich z.b. so etwas nicht:

            PHP-Code:
            $textarea $_POST["bemerkungen"];
            //...
            fwrite ($textareadatei,"$textarea");
            //...
            $textarea = array(); 
            Erst ist $textarea ein String, dann ein Array, dass die Variable zwischendurch überhaupt verwendet wird, sieht man wegen der Einschließung in "" (Was soll das bezwecken? Casten nach string? Sieht eher willkürlich aus) auf den ersten Blick überhaupt nicht.
            @fschmengler - @fschmengler - @schmengler
            PHP Blog - Magento Entwicklung - CSS Ribbon Generator

            Kommentar


            • #7
              Also, dieses Skript soll, wenn es denn funktioniert, was es hoffentlich heute noch wird - ansonsten baue ich eben noch länger daran, eine Abspeicherung des Textfeldinhaltes ermöglichen - und zwar in diesem Fall als ein Array.

              Rein optisch hatte ich mir das so gedacht, dass alle Einträge aus dem Textfeld in etwa so nebeneinander liegen würden in der Datenbank - wobei sich jeweils zwischen zwei Trennzeichen - "|" unter Umständen nichts befindet, was dann eben eine leere Zeile sein soll.

              Wenn ich also damit fertig sein werde - irgendwann einmal - dann soll diese Anordnung hier als Beispiel:

              -Brot

              -Butter

              -Quark

              -Milch
              in einem Array in dieser Form vorliegen:

              -Brot||-Butter||-Quark||-Milch
              Aus dieser Anordnung heraus kann durch explode an den Trennzeichen jedes Element einzeln herausgelöst und durch entsprechende Anweisung zeilenweise wiedergegeben werden - mit den Zeilenumbrüchen dabei und den Leerzeilen dazwischen.

              Kommentar


              • #8
                PHP-Code:
                $textDurchPipeGetrennt str_replace("\r\n"'|'$textarea); 
                Müsste genau das tun...

                Aus dieser Anordnung heraus kann durch explode an den Trennzeichen jedes Element einzeln herausgelöst und durch entsprechende Anweisung zeilenweise wiedergegeben werden - mit den Zeilenumbrüchen dabei und den Leerzeilen dazwischen.
                Nja...

                PHP-Code:
                $textFuerAusgabe str_replace("\r\n"'<br />'$textarea); 
                "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

                Kommentar

                Lädt...
                X