[Script] Flatfile auslesen u. -werten

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

  • [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?
    Zuletzt geändert von weltvolk; 08.04.2006, 18: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]

    Kommentar


    • #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?
      Zuletzt geändert von weltvolk; 08.04.2006, 20:32.

      Kommentar


      • #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]

        Kommentar


        • #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?
          Zuletzt geändert von weltvolk; 09.04.2006, 14:15.

          Kommentar


          • #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]

            Kommentar


            • #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?

              Kommentar


              • #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]

                Kommentar

                Lädt...
                X