[Script] Flatfile auslesen u. -werten

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

  • [Script] Flatfile auslesen u. -werten

    In ein Online-Formular eingegebene Daten werden zeilenweise in ein Flatfile geschrieben, z.B.:
    Margot|56|Elmshorn
    Steffi|13|Esslingen
    etc.,
    und sollen nun mit Hilfe eines Skriptes nach Feldern geordnet aufgelistet werden, also:
    Margot
    Steffi
    etc.
    56
    13
    etc.
    Elmshorn
    Esslingen
    etc.
    Kennt jemand ein entsprechendes PHP-Skript?
    Last edited by weltvolk; 08-04-2006, 17:00.

  • #2
    Würde ich eher selbst schreiben. Kann kein grosser akt sein.....

    Datei mit file() einlesen und durch array_sort sortieren...
    gruss Chris

    [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

    Comment


    • #3
      Alles, was ich finden konnte, ist dieses hier:
      PHP Code:
      <?
      $flatfile=file("flatfile.txt");
      foreach ($flatfile as $zeile)
                          {
      $einzelne_Elemente_jeder_Zeile=split("|",$zeile);
      foreach ($einzelne_Elemente_jeder_Zeile as $einzelteile)
                          {
                          print "$einzelteile <br>";
                          }
                          print "-----------------------------------------------------<br>";
                          }
                          ?>
      Dadurch wären die einzelnen Zeilen getrennt, also:

      Margot
      56
      Elmshorn
      -----------------------------------------------------
      Steffi
      13
      Esslingen
      -----------------------------------------------------
      etc.

      Wo wären die Arrays denn richtig platziert, die die Zeilen in Felder splitten und nach Feldern sortieren?
      Last edited by weltvolk; 08-04-2006, 19:32.

      Comment


      • #4
        Also das reicht doch eigentlich

        PHP Code:

        <?
        // $flatfile ist ein Array
        // Hier könntest du mit z.B echo $flatfile[4] die 5te Zeile ausgeben.
        $flatfile=file("flatfile.txt");
        foreach ($flatfile as $zeile)
        {
          // $elemente wird durch explode zum Array
          $elemente=explode("|",$zeile);
          
          // Gibt dir den Namen aus
          echo $elemente[0]; 
        }
        ?>
        Wenn du nach namen Sortiert ausgeben möchtest kannst du ein array_sort auf $flatfile anwenden bevor das foreach anfängt.

        Wenn du nach etwas anderem Sortieren möchtest, könntest du innherhalb des foreach die einzelnen Elemente wiederum in ein Multidimensionales Array schreiben und dieses dann Sortieren.
        gruss Chris

        [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

        Comment


        • #5
          Danke, das ist es. Jetzt funktioniert das Script auch, was bei meinem Beispiel nicht der Fall war.

          Nun ist es etwas umständlich, für jedes Auswerten die PHP-Datei zu ändern. Könnte man das Script 'auswerten.php' nicht über ein Formular aufrufen? Z.B.:
          PHP Code:
          <form action="auswerten.php" method="post">
          <
          p>Ziffer: <input type="text" size="15"><br>
          <
          input type="submit" value=" senden "></p>
          </
          form
          Da müsste man das Script sicherlich noch irgendwo modifizieren, oder?
          Last edited by weltvolk; 09-04-2006, 13:15.

          Comment


          • #6
            Jetzt kann ich nicht ganz folgen....

            Für jedes auswerten PHP Datei ändern ?????
            Meinst du wegen dem Dateinamen (z.B flatfile.txt) ???


            Code:
            <form action="auswerten.php" method="post">
            <p>Dateiname: <input type="text" name="filename" size="15"><br>
            <input type="submit" value=" senden "></p>
            </form>

            PHP Code:
            <?php
            if (empty($_POST["filename"])) die("Kein Dateiname übergeben");

            $flatfile=file($_POST["filename"]); // Datei muss allerdings im selben verzeichnis liegen
            foreach ($flatfile as $zeile)
            {
              
            $elemente=explode("|",$zeile);
              
              echo 
            $elemente[0]; 
            }
            Sowas?
            gruss Chris

            [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

            Comment


            • #7
              Das ist natürlich auch nicht schlecht, wenn es darum geht, mehrere Flatfiles zu bearbeiten! Was ich meinte, ist die gezielte Auswahl des Feldes, dessen Inhalt aus den Zeilen jeweils aufgelistet werden soll. Für das 1. Feld gibt
              PHP Code:
              echo $elemente[0]; 
              oder
              PHP Code:
              print "$elemente[0] <br>"
              die entsprechenden Inhalte wieder, ich denke, dass man in einem Arbeitsgang alle Felder durch
              PHP Code:
              print "$elemente[0] <br>";
              print 
              "$elemente[1] <br>";
              print 
              "$elemente[2] <br>";
              ...
              print 
              "$elemente[n] <br>"
              nacheinander auflisten könnte, aber wie geht man über das Formular direkt zu einer bestimmten Feldnummer (deswegen 'Ziffer'), um nur diese zu listen?

              Comment


              • #8
                Ach da gibts vieeele wege..

                z.B

                Hier gibts die Möglichkeit (name, alter, ort) einzugeben.. Das würde mit einer Optionsliste oder mit Checkboxen sicherlich einfacher sein

                Code:
                <form usw>
                <input name="ziffer" usw>
                </form

                PHP Code:
                <php
                switch ($_POST["ziffer"])
                {
                  case 
                "name":
                    
                $index 0;
                  break;

                  case 
                "alter":
                    
                $index 1;
                  break;

                  case 
                "ort":
                    
                $index 2;
                  break;
                  
                  default:
                    
                $index false;
                }

                if (
                $index)
                {
                  
                $flatfile=file($_POST["filename"]); 
                  foreach (
                $flatfile as $zeile)
                  {
                    
                $elemente=explode("|",$zeile);
                  
                    echo 
                $elemente[$index]; 
                  }
                }
                ?> 
                Oder du lässt den ganzen switch Kram weg und schreibst nur 0-2 in das Feld. (dann müsstest du if ($index) noch gegen was anderes austauschen)
                gruss Chris

                [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                Comment

                Working...
                X