Werte als array in Datei speichern?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Werte als array in Datei speichern?

    Hallo..
    Ich habe eine Tabelle, wo in der einen Spalte ein Status angezeigt wird und in der nächsten Spalte der Status geändert werden kann. Das ganze dann in 18 Zeilen, unabhängig voneinander..

    Öffne ich das Dokument, ist das Problem, dass erstmal in dem Statusfeld solange nix steht, wie man einmal den Status geändert hat. Logisch, da ja nichts fest vordefiniert ist. Also muss ich wenn der Status einmal gesetzt wurde, diesen Abspeichern, um beim nächsten Aufruf den letzen Status anzeigen zu lassen.
    Ich dachte ich könnte als Array in einer evtl. anderen Datei, oder vielleicht geht das ja auch in dem gleichen Dokument abspeichern.

    Wie kann ich dies realisieren?

    Danke..
    Gruß
    Steeds

  • #2
    da böten sich sessions an.

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Comment


    • #3
      Funktioniert das dann auch noch, wenn ich hier den Status gesetzt habe, und jemand anderes sonstwo die Seite aufruft, dass er dann das angezeigt bekommt, was ich gesetzt habe?
      Für mich hört sich das an, als wenn das USER gebunden wäre..

      Comment


      • #4
        Original geschrieben von Steeds
        Funktioniert das dann auch noch, wenn ich hier den Status gesetzt habe, und jemand anderes sonstwo die Seite aufruft, dass er dann das angezeigt bekommt, was ich gesetzt habe?
        Für mich hört sich das an, als wenn das USER gebunden wäre..
        Ja, dafür sind Sessions ja auch gedacht - user-spezifische Informationen temporär abzulegen.
        (Klar, man könnte eine Session dauerhaft und für alle User nutzen, wenn man den Sessionmechanismus entsprechend "misshandelt" - aber das ist eigentlich nicht Sinn der Sache.)

        Ich dachte ich könnte als Array in einer evtl. anderen Datei, oder vielleicht geht das ja auch in dem gleichen Dokument abspeichern.
        Klar, du kannst du Daten natürlich in einer Textdatei abspeichern, und sie dann jedes Mal von dort wieder einlesen;
        oder beispielsweise auch eine Datenbank dafür benutzen.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Comment


        • #5
          also wenn jeder das ändern können soll, muss das über die db laufen, du mußt dann aber höllisch aufpassen, dass nicht zwei user gleichzeitig etwas ändern.

          was im detail hast denn überhaup vor?

          gruß
          peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Comment


          • #6
            Das ist eine Tabelle, wo die Server aufgelistet sind, 18, an der Zahl.
            Diese können vier Stati (richtige Mehrzahl von Status? ) angewählt werden. Durch Radiobuttons und dann geändert werden durch einen Button "Ändern". Dies soll dann in die andere Spalte geschrieben werden. Funktioniert auch soweit. Problem ist, wenn ich die Seite neu aufrufe, steht in dem Status-Feld logischerweise nichts drin. Da ja die letze Änderung sozusagen verworfen wurde..
            Natürlich könnte ich für jeden Server ne extra Datei anlegen, den Status reinschreiben und auslesen.. Ist aber ziemlich unelegant 18 Dokumente als anhängsel zu haben, finde ich..
            wenn ich EINE neue datei erzeugen könnte, wo ich die Stati wie in einem Array ablegen könnte, dementsprechend einzeln aufrufen, bzw. überschreiben, wäre das super schonmal.
            Am besten wäre es jedoch wenn ich es dauerhaft ablegen könnte, in der gleich datei wie code oder halt ohne datei..

            Ich hoffe es ist jetzt deutlicher was ich meine..

            Comment


            • #7
              Dir bleibt nur der Weg über eine Datei oder eine Datenbank, wenn du Werte benutzerübergreifend speichern willst.

              Dein Array kriegst du mit serialize in die Dateiund mit unserialize wieder raus.

              P.S. Status (mit einem langen "u") ist die korrekte Mehrzal von Status
              Ich denke, also bin ich. - Einige sind trotzdem...

              Comment


              • #8
                okay.. ich habs mal probiert, doch es geht nicht.. Warum kann ich nicht schreiben: $var=fgets($handle); ? muss ich ne längenangabe machen? ich dachte es geht auch ohne..

                und was mache ich noch falsch?

                $daten=array("aktiv","nicht aktiv","test");
                $pack=serialize($daten);
                $filename="text.txt";
                $handle=fopen($filename,"r+");
                fwrite($handle,$pack);
                $unse=fgets($handle);
                $var=unserialize($unse);
                echo $var[1]

                Comment


                • #9
                  fread liest nicht vom Anfang der Datei, sondern von der Position, an der ein Dateipointer steht.

                  Durch fwrite hast du diesen Pointer ans Dateiende geschoben.

                  Zurück an den Anfang kommst du mit rewind, wo der Pointer steht, sagt dir ftell.
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Comment


                  • #10
                    Okay.. habe ich gemacht:

                    $daten=array("aktiv","nicht aktiv","test");
                    $pack=serialize($daten);
                    $filename="text.txt";
                    $handle=fopen($filename,"r+");
                    fwrite($handle,$pack);
                    rewind($handle);
                    $unse=fgets($handle);
                    $var=unserialize($unse);
                    echo $var[1];

                    bleiben folgende Probs:

                    Warning: Wrong parameter count for fgets() in E:\...\...php on line 55

                    Warning: argument passed to unserialize() is not an string in E:\...\....php on line 56
                    Last edited by Steeds; 18-01-2006, 11:59.

                    Comment


                    • #11
                      Und warum bitte liest du nicht im Handbuch nach, wie fgets aufzurufen ist, was es sonst noch für Möglichkeiten gibt, ...?
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Comment


                      • #12
                        Habe ich ja.. Da steht, man kann die Länge auch weglassen, dann liest er bis zum Ende der Datei, funzt aber net!!!!!

                        hGibt eine Zeile bis zu length -1 Bytes Länge zurück, welche aus der Datei von der aktuellen Position des Dateizeigers handle aus ausgelesen wird. Die Zeile endet an einem Zeilenumbruch (welcher im Rückgabewert enthalten ist), EOF (Ende der Datei) oder bei length - 1 Bytes (je nachdem, was eher auftritt). Ist keine Länge angegeben, wird diese auf 1k bzw. 1024 Bytes gesetzt.

                        oder verstehe ich das falsch.. Selbst wenn ich es mit

                        $unse=fgets($handle,"EOF");

                        mache, dann kommt zwar die erste Meldung nicht mehr.. Aber Warning: argument passed to unserialize() is not an string ... kommt immer noch.. Warum??? ich habe es so geschrieben wie im MANUEL denke ich..

                        Comment


                        • #13
                          Danke hat sich erstmal erledigt..
                          Scheine es hinbekommen zu haben..

                          Comment

                          Working...
                          X