andi: datei: nur eine zeile auslesen

hallo,

ich habe eine textdatei für ein gästebuch

zum öffnen und anzeigen sowie blättern habe ich alles hinbekommen

jetzt will ich ein admin bereich aufbauen in dem ich die eventuelle einträge kommentieren möchte.

wie lese ich einen einzelen eintrag in ein array,
damit ich ihn in formularfelder bearbeiten kann

danke für jede hilfe

  1. Привет,

    ich habe eine textdatei für ein gästebuch

    zum öffnen und anzeigen sowie blättern habe ich alles hinbekommen

    jetzt will ich ein admin bereich aufbauen in dem ich die eventuelle einträge kommentieren möchte.

    wie lese ich einen einzelen eintrag in ein array,
    damit ich ihn in formularfelder bearbeiten kann

    file() dürfte dir weiterehelfen.

    Komfortabler als mit Textdateien arbeitest du mit Flatfiles.

    До свидания!
    Sven aus Bonn

    --
    Do it yourSELF 'cause SELFmade is bestmade.
    Selfcode: ie:% fl:( br:^ va:} ls:[ fo:) rl:( n4:{ ss:| de:> js:| ch:? mo:} zu:)
    Selfcode dekodieren - Selfcode-Info
    1. gudn tach!

      Komfortabler als mit Textdateien arbeitest du mit Flatfiles.

      hmm, was sind denn flatfiles?
      google hat mich mal wieder verarscht (mit http://www.flatfiles.net/) und auf http://docuwiki.mytbb.de/Flatfiles steht, es seien einfach text-dateien, z.b. csv.

      prost
      seth

      1. Привет,

        Komfortabler als mit Textdateien arbeitest du mit Flatfiles.

        hmm, was sind denn flatfiles?

        Im Archiv findest du eine 163 Postings lange Diskussion zu Flatfiles: http://forum.de.selfhtml.org/archiv/2004/5/t82138/.

        In Flatfiles werden Daten in einer Array-artigen Struktur gespeichert:

        $file ["anton"] ["geschlecht"] = "männlich"
                        ["alter"] = 20
              ["berta"] ["geschlecht"] = "weiblich"
                        ["alter"] = 40
                        ["kinder"] ["caesar"] ["alter"] = 5
                                              ["geschlecht"] = "männlich"
                                   ["dora"] ["alter"] = 6
                                            ["geschlecht"] = "weiblich"

        Von Tom gibts dazu eine Toolbox: http://selfhtml.bitworks.de/flat_box.php.txt

        google hat mich mal wieder verarscht

        ;-)

        До свидания!
        Sven aus Bonn

        --
        Do it yourSELF 'cause SELFmade is bestmade.
        Selfcode: ie:% fl:( br:^ va:} ls:[ fo:) rl:( n4:{ ss:| de:> js:| ch:? mo:} zu:)
        Selfcode dekodieren - Selfcode-Info
        1. Hallo Arx,

          Komfortabler als mit Textdateien arbeitest du mit Flatfiles.
          hmm, was sind denn flatfiles?

          Textdateien

          Im Archiv findest du eine 163 Postings lange Diskussion zu Flatfiles: http://forum.de.selfhtml.org/archiv/2004/5/t82138/.

          zu speziellen Flatfiles

          In Flatfiles werden Daten in einer Array-artigen Struktur gespeichert:

          "Ein VW Golf ist ein Auto. Nicht jedes Auto ist ein VW Golf."
          Diese beiden Sätze sollten Deinem Verständnis von Flatfiles weiterhelfen. *g*

          Freundliche Grüsse,

          Vinzenz

        2. gudn tach!

          Im Archiv findest du eine 163 Postings lange Diskussion zu Flatfiles: http://forum.de.selfhtml.org/archiv/2004/5/t82138/.

          ui, nee, ich wollte dieses jahr auch noch was anderes machen. ;-)

          In Flatfiles werden Daten in einer Array-artigen Struktur gespeichert:

          $file ["anton"] ["geschlecht"] = "männlich"
                          ["alter"] = 20
                ["berta"] ["geschlecht"] = "weiblich"
                          ["alter"] = 40
                          ["kinder"] ["caesar"] ["alter"] = 5
                                                ["geschlecht"] = "männlich"
                                     ["dora"] ["alter"] = 6
                                              ["geschlecht"] = "weiblich"

          ahaa! ok, das kenne ich; wusste allerdings nicht, dass man solche dinger, wenn man sie in einem text-file speichert, flatfile nennt.
          wieder was gelernt. :-)

          prost
          seth

  2. hallo,

    noch einmal
    ich habe eine textdatei für ein gästebuch

    wie lese ich
    nur EINE einzige zeile in ein array,
    damit ich die zeile in formularfelder angezeigt bekomme

    name: <input type="text" name="name" value="<? echo $array[name]?>">
    titel: <input type="text" name="titel" value="<? echo $array[titel]?>">
    ...

    danke

    1. Hallo andi,

      noch einmal
      ich habe eine textdatei für ein gästebuch

      wie lese ich
      nur EINE einzige zeile in ein array,

      Welche möchtest Du gerne lesen?

      [ ] die erste Zeile
      [ ] eine beliebige Zeile
      [ ] die letzte Zeile

      damit ich die zeile in formularfelder angezeigt bekomme

      name: <input type="text" name="name" value="<? echo $array[name]?>">
      titel: <input type="text" name="titel" value="<? echo $array[titel]?>">
      ...

      Wie sieht eine Zeile Deiner Textdatei aus?
      Mehrere Einträge, durch ein bestimmtes Zeichen getrennt?
      (das ist die allg. Version von CSV)

      Wenn Du uns diese Fragen beantwortest, haben wir eine Chance Dir zu helfen.

      Freundliche Grüsse,

      Vinzenz

      1. Hi,

        [ ] die erste Zeile
        [x] eine beliebige Zeile //anhand einer NR, die übergeben wird aus der kompletten Übersicht des Inhaltes.
        [ ] die letzte Zeile

        Wie sieht eine Zeile Deiner Textdatei aus?

        nr|name|titel|mail|web|nachricht

        Wenn Du uns diese Fragen beantwortest, haben wir eine Chance Dir zu helfen.

        so ich hoffe ich habe alles wie gewünscht beantwortet

        Gruss
        Andi

        1. Hallo Andi,

          [ ] die erste Zeile
          [x] eine beliebige Zeile //anhand einer NR, die übergeben wird aus der kompletten Übersicht des Inhaltes.
          [ ] die letzte Zeile

          hast Du eine Vorstellung, wie eine solche Textdatei für eine Anwendung aussieht? Es ist einfach eine Folge von vielen Zeichen. Bestimmte Zeichen bzw. eine bestimmte Zeichenkombination (je nach verwendetem Betriebssystem) zeigt ein Zeilenende an. Gut erklärt ist das in SelfHTML, siehe http://aktuell.de.selfhtml.org/artikel/cgiperl/zeilenumbruch/index.htm#newline.

          Wie sieht eine Zeile Deiner Textdatei aus?
          nr|name|titel|mail|web|nachricht

          Du suchst also die Zeile, in der zu Beginn eine bestimmte Zahl (NR) steht. Dazu musst Du solange Zeile für Zeile lesen, den ersten Eintrag auswerten, bis Du zu der Zeile kommst, die als ersten Eintrag die gewünschte Nummer hat. Sind die Zahlen aufsteigend geordnet und lückenlos, dann musst Du die durch die Zahl bekannte Anzahl von Zeilen lesen.

          Den ersten Eintrag bekommst Du mit Hilfe der Funktion explode(), die Dir auch alle anderen Einträge in Deiner Zeile in einem Array zurückliefert.

          Wie Du recht einfach alle Zeilen Deiner Textdatei in ein Array einlesen kannst, hat Dir Arx im ersten Antwortposting bereits gesagt.

          Nachdem Du so Deine gewünschte Zeile bekommen und zerlegt hast, kannst Du die Daten so in Deinem Formular darstellen, wie Du das haben möchtest.

          Ich gehe davon aus, dass Du Deinen Kommentar in der entsprechenden Zeile abspeichern möchtest. Dort wartet das nächste Problem auf Dich:
          Wie füge ich in eine Folge von Zeichen eine weitere Folge ein? Das geht leider nicht so einfach wie im Arbeitsbereich eines Editors. Du kannst nicht einfach sagen: "He, hier brauche ich noch Platz für 25 Zeichen in dieser Zeile." Ich skizziere kurz zwei häufig verwendete Methoden:

          1. Lese die Datei mit file() in ein Array ein. Ändere nun den Arrayeintrag, der Deiner Zeile entspricht. Schreibe das Array in Deine Datei weg.

          2. Lese die Daten zeilenweise aus Datei A. Bearbeite die Daten der Zeile, falls nötig. Schreibe die Zeile in eine temporäre, neu angelegte Datei B weg. Wenn die Datei A fertig gelesen und das Ergebnis fertig in der Datei B steht, dann lösche die Datei A und benenne die Datei B nach A um.

          Auf die Vor- und Nachteile der beiden von mir vorgestellten Methoden möchte ich hier an dieser Stelle nicht eingehen. Du darfst Dir gerne selber Gedanken darüber machen.

          so ich hoffe ich habe alles wie gewünscht beantwortet

          Ja, hast Du. Und Du hast in der ersten Antwort von Arx bereits einen hervorragenden Tipp bekommen.

          Fazit: Es ist nicht damit getan, eine einzige Zeile zu lesen.

          Nur wenn alle Zeilen die gleiche Länge besitzen und zusätzlich die NR-Einträge lückenlos und aufsteigend sortiert sind und Dir der Wert der ersten Zeile bekannt ist, nur in diesem Fall könntest Du mit dem Lesen einer einzigen Zeile auskommen. Dann musst Du auch nur eine einzige Zeile wegschreiben.

          In diesem Fall hättest Du eine ganz besondere Form einer sog. Random-Access-Datei vorliegen, d.h. eine Datei mit wahlfreiem Zugriff. Mehr zu solchen Dateien kannst Du, soweit ich mich erinnere, in dem von Arx verlinkten Megathread im Archiv finden. Selbstverständlich auch mit der Forumssuche oder der Suchmaschine Deiner Wahl.

          Freundliche Grüsse,

          Vinzenz

          1. Hi,

            ich habe es wie folgt gelöst

            ich lasse einen Zähler (mit 0 beginnend) mitlaufen der mir sagt die Zeile die ich jetzt anzeige ist die nr 5.

            Jetzt brauche ich ja nur noch die 5 Zeile in der Textzeile zu öffnen und es klappt auch.

            Muß ich da auf was besonderes achten?