txt öffnen, vars ändern und wieder speichern...

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

  • txt öffnen, vars ändern und wieder speichern...

    hallo zusammmen,
    möchte mit flash und php ne txt-datei ändern:
    PHP-Code:
    <?
    $datei = fopen("textdatei.txt","w+");

    rewind($datei);
    fwrite($datei, "&text=" .$text. "&text2=" .$text2.);
    fclose($datei);

    ?>
    leider passiert da rein garnix.

    wenn ich aber nur eine variable ändere, funzt alles super,
    dann sieht das script folgendermassen aus.

    PHP-Code:
    <?
    $datei = fopen("textdatei.txt","w+");

    rewind($datei);
    fwrite($datei, "&text=".$text."&");
    fclose($datei);

    ?>
    wo liegt der fehler?

  • #2
    wieso rewind? ich glaub, du solltest das besser mit serialize machen.

    wenn du an's ende der datei was anhängen willst, dann fopen("file","a"), oder am anfang: fopen("file","w").

    wenn du jeweils ein + ("w+") dranhängst, wird der bisherige dateiinhalt gelöscht. daher ist's auch kein wunder, wenn du kein ergebnis bekommst.

    Kommentar


    • #3
      komisch,
      aber warum wird bei der sache mit der einen variable die geänderte textdatei gespeichert?

      was muss ich jetzt tun, damit ich mit einem php-script drei oder mehrere vars ändern kann?

      gruss
      b.

      Kommentar


      • #4
        ist eigentlich ganz einfach:

        PHP-Code:
        ?php
        // sagen wir mal, du legst ein array an ...
        $poop = Array("poop1" =>"numero uno","poop2" => "numero duo");
        // dann schiebste das array durch den serialisierer ...
        $bytestream serialize($poop);
        // array wieder 'loeschen'
        $poop="";
        // dann öffnest du eine datei. in dem bsp. hier ein temporaeres file ...
        $temp tempnam("/tmp""temp.");
        $fp fopen($temp,"w");
        // jetzt schreibste quasi das array serialisiert in eine datei
        fwrite($fp,$bytestream);
        fclose($fp);

        // jetzt holen wir uns das array wieder ...
        $fp1 fopen($temp,"r");
        $poop_string fread($fp1filesize($temp));
        fclose($fp1);
        // .... und unserialisieren das wieder
        $poop_new_array unserialize($poop_string);

        // tja, und nun kannst du damit machen, was du willst. z.b. eine addition. wenn du fertig bist, speicherst du einfach wieder wie oben das array wieder ab

        // das ist einfach eine testausgabe. falls du lamp unter linux verwendest, müsste das skript gleich laufen. falls nicht, musst du oben den pfad, zum verzeichnis entsprechend aendern
        echo $poop_new_array["poop1"]."<br>".$poop_new_array["poop2"];
        unlink($temp);
        ?> 

        Kommentar


        • #5
          jo beebob,
          das ist ja echt eindrucksvoll,
          nur leidre ist mir das zu kompliziert...

          kannst du nicht das von mit gepostete script so editieren, das
          ich damit drei oder meherere variabeln ändern/abspeichern kann,
          oder gehts das nicht?

          1000dank+gruss
          bastian

          Kommentar


          • #6
            ok, kann ich. das beispiel ist allerdings nichts anderes, als das, was du vor hast.

            sollen in der datei wirklich nur variablen gespeichert werden? oder ist da noch was anderes drin?

            Kommentar


            • #7
              jo beebob,
              sind nur vars drinne.

              aber wo ich ja jezt einen experten drann hab,
              vielleicht kannst du das folgende mit einbauen, weiss nicht rechts wie ichs anstellen sollte.



              will 52 variablen ändern folgendes soll "irgendwie" dazu dienen nicht alle 52 vars anzugeben:
              bestimmt erkennst du mehr darin als ich :-)

              <?
              for($i=0;$i<sizeof($HTTP_POST_VARS);$i++) {
              $str .= "&".key($HTTP_POST_VARS)."=".current($HTTP_POST_VARS);
              next($HTTP_POST_VARS);
              }

              $str.="&";
              echo $str;
              ?>

              vielen dank jetzt schonmal
              b.

              Kommentar


              • #8
                PHP-Code:
                <?
                $datei = fopen("textdatei.txt","w+");
                $text["text1"] = $text;
                $text["text2"] = $text2;
                fwrite($datei, serialize($text));
                fclose($datei);
                ?>
                wieder rausholen:

                PHP-Code:
                $datei fopen("textdatei.txt","r");
                $text fread($dateifilesize("textdatei.txt"));
                fclose($datei);

                $theText unserialize($text)

                echo 
                "&text=".$theText["text1"]."<br>";
                echo 
                "&text2=".$theText["text2"]."<br>"
                ich glaube, damit erübrigt sich gleich auch die sache mit den 52 variablen.

                Kommentar


                • #9
                  hi beebob,

                  also das erste script schreibt mir die vars, welche ich in flash angebe in die textdatei.txt,

                  das zweite liest diese dann aus,
                  richtig?
                  ----------------------------------------------------
                  edit:
                  warum erübrigt sich das???
                  ----------------------------------------------------
                  was sagt/macht das script, welches ich in meinem vorherigem thread gepostet habe?

                  gruss und allerbesten dank
                  bastian

                  Kommentar


                  • #10
                    das dein erstes script müsste folgendes in die datei schreiben:

                    &var1=poop1&var2=poop2&var3=poop3 ... usw.

                    die vars müsstest du hier dann mit einem loop überprüfen, indem du den trenner "&" herausnimmst und dann jede 'variable' abspeicherst.

                    z.b. so:

                    PHP-Code:
                    // nehmen wir mal an, wir haben das file ausgelesen und den inhalt in $vars gespeichert
                    .
                    .
                    .
                    $theVars explode("&"$vars);
                    $vCnt     count$theVars 
                    for(
                    $i=0$i $vCnt; ++$i){
                           
                    $content explode("=",$theVars[$i]);
                           echo 
                    "VarName: ".$content[0]." | Value: ".$content[1];

                    jetzt nehmen wir mal an, in den values deiner variablen steckt bereits ein '&' oder meherer '=', die eigentlich für was anderes gedacht sind. dann wird's erst richtig kompliziert. deshalb besser serialize. zumal man dann nicht so einfach die datei auslesen kann, weil die daten binär vorliegen.

                    Kommentar


                    • #11
                      Original geschrieben von bastian
                      hi beebob,

                      also das erste script schreibt mir die vars, welche ich in flash angebe in die textdatei.txt,

                      das zweite liest diese dann aus,
                      richtig?
                      ----------------------------------------------------
                      edit:
                      warum erübrigt sich das???
                      ----------------------------------------------------
                      was sagt/macht das script, welches ich in meinem vorherigem thread gepostet habe?

                      gruss und allerbesten dank
                      bastian
                      1) richtig, richtig
                      2) du hast alle informationen als echte variablen vorliegen. d.h. du kannst explizit auf die werte zugreifen. z.b. hast du ein assoziatives array arr["Usernames"][$i]. versuch das mal mit der ascii-version ...
                      3) siehe mein letztes posting

                      beebob

                      Kommentar


                      • #12
                        mhhh,
                        also folgendes wird ausgegeben:

                        a:2s:5:"text1";s:11:"erste eingabe";s:5:"text2";s:12:"zweite eingabe";}

                        es sollte aber folgendea nach eingabe ins textfeld herauskommen, eben wie in meinem ersten script:

                        &text1=erste eingabe&&test2=zweite eingabe&

                        ist wegen flash eben wichtig....
                        versuchs mit deinen scripten nochmal, probier mal etwas rum...

                        dank dir beebob.

                        Kommentar


                        • #13
                          die 52 geschichte, soll wohl verhindern, dass nicht alle vars an die url übergeben werden (wg. der 4096 bytes beschränkung).

                          da du aber ja explizit auf deine inhalte zugreifen kannst, ist dieser schritt nicht mehr nötig.

                          theoretisch brauchst du sogsr gar nix mehr zu übergeben. du erinnerst dich an das erste beispiel mit der temprären datei? diese dateien erhalten automatisch einen eindeutigen namen vom system.

                          wenn du nun diesen namen per url verschickst, kannst du ihn auf der anderen seite aufnehmen und die serialisierten daten anhand des dateinames auslesen. d.h. du schlägst zwei fliegen mit einer klappe: man 'sieht' die values nicht mehr und man kann grössere datenmengen verarbeiten.

                          allerings würde ich nicht den kompletten pfad, sondern wirklich nur den dateinamen verschicken. der tempordner kann auch ausserhalb des webroots liegen. "/tmp" bzw "C:\\WINDOWS\\TEMP" würde sich anbieten.

                          Kommentar


                          • #14
                            Original geschrieben von bastian
                            mhhh,
                            also folgendes wird ausgegeben:

                            a:2s:5:"text1";s:11:"erste eingabe";s:5:"text2";s:12:"zweite eingabe";}

                            es sollte aber folgendea nach eingabe ins textfeld herauskommen, eben wie in meinem ersten script:

                            &text1=erste eingabe&&test2=zweite eingabe&

                            ist wegen flash eben wichtig....
                            versuchs mit deinen scripten nochmal, probier mal etwas rum...

                            dank dir beebob.
                            jo, mach das. ich hab den code allerdings nicht wirklich geprüft. daher keine gewähr. aber das prinzip stimmt.

                            du darfst halt nicht vergessen, die vars wieder zurückzuschreiben.

                            am besten, du liest noch folgendes durch:

                            http://www.php.net/manual/de/function.serialize.php
                            http://www.php.net/manual/de/function.tempnam.php

                            weil mehr ist das eigentlich gar nicht.
                            Zuletzt geändert von beebob; 03.10.2002, 16:33.

                            Kommentar

                            Lädt...
                            X