Peter: Tabelle per PHP aus Textdatei generieren

Hallo, nachdem ich auf den einschlägigen Hilfeseiten zu PHP keinen rechten Zugang zu der Materie finde und auch im Forumsarchiv nicht fündig werde, frag ich mal hier...

Wenn ich Daten in einer Textdatei z.B. in der Form:

1; Hannover; 34; 22; 9; 3; 93; 37; 56; 75
2; Bielefeld; 34; 19; 8; 7; 68; 38; 30; 65
.
.
.

abgelegt habe, wie kann ich aus diesen Daten nun per PHP eine HTML-Tabelle generieren? Wäre schön, wenn mir das jemand in groben Zügen erklären könnte... vielleicht gibts ja auch einen hilfreichen Link dazu?

Grüße.. Peter

  1. Hallo!

    Wenn ich Daten in einer Textdatei z.B. in der Form:

    1; Hannover; 34; 22; 9; 3; 93; 37; 56; 75
    2; Bielefeld; 34; 19; 8; 7; 68; 38; 30; 65
    .
    .
    .

    Hier mal der ganz einfache Weg.

    $zeilen = file("datei.txt");

    echo "<table>";
    // diese Zeile arbeitet alle Zeilen ab
    for($i = 0; $ < count($zeilen); $i++)
       {
          // Zeile bei ; trennen
          $spalte = explode(";", $zeilen[$i]);
          echo "<tr>\n";
          // "Spalte" die Zeile durch ausgeben
          for($a = 0; $a < count($spalte); $a++)
            {
               echo "<td>" . $spalte[$a] . "</td>";
            }
          echo "</tr>\n";
       }
    echo "</table>";

    Schaue Dir mal die Funktionen an:
    http://www.php.net/de/file
    http://www.php.net/de/explode

    MfG, André Laugks

    1. Besten Dank für die schnelle Hilfe, Andre :o)

      Ich steige durch das Beispiel so halbwegs durch und weiß jetzt, wie ich ansetzen muß. Ich finde es als PHP-Anfänger nämlich ziemlich schwierig, auf den PHP-Hilfe Seiten so etwas wie einen Gesamteindruck über die Programmiersprache zu bekommen. Stattdessen stand ich heute schon den ganzen Tag rätselnd vor den Myriaden von Befehlen und Funktionen und wußte nicht, wo ich anfangen sollte ;o)

    2. Hallo zusammen,

      ich glaube, das geht schneller...

      Wenn ich Daten in einer Textdatei z.B. in der Form:

      1; Hannover; 34; 22; 9; 3; 93; 37; 56; 75
      2; Bielefeld; 34; 19; 8; 7; 68; 38; 30; 65
      .
      .
      .

      Hier mal der ganz einfache Weg.

      $zeilen = file("datei.txt");

      echo "<table>";
      // diese Zeile arbeitet alle Zeilen ab
      for($i = 0; $ < count($zeilen); $i++)
         {
            // Zeile bei ; trennen
            $spalte = explode(";", $zeilen[$i]);

      warum die Zeile trennen?

      <?

      //... Datei öffnen und Script mit die("Bla Bla"); abbrechen, wenn es
      //    nicht geklappt hat

      $oldSep=";";
      $newSep="</td><td>";

      echo "<table ....>\n";
      echo "  <tr><td>\n";

      while (!eof($handle1))
      {
        $oldLine=fgets($handle1);
        $newLine=str_replace($oldSep, $oldLine, $newSep);

      echo   $newLine;
      }
      echo "</td>>/tr>;

      ?>

      und tschüss...

      Meine Tippfehler müsst Ihr bitte selber suchen.

      Je nachdem, ob die Datei auch Tags enthält, muss man vorher diese ggf. noch entfernen...

      Prost

      Tom

      ---Following OldStuff-----------------------------------------

      echo "<tr>\n";
            // "Spalte" die Zeile durch ausgeben
            for($a = 0; $a < count($spalte); $a++)
              {
                 echo "<td>" . $spalte[$a] . "</td>";
              }
            echo "</tr>\n";
         }
      echo "</table>";

      Schaue Dir mal die Funktionen an:
      http://www.php.net/de/file
      http://www.php.net/de/explode

      MfG, André Laugks

      1. Hallo Thomas

        warum die Zeile trennen?

        $oldSep=";";
        $newSep="</td><td>";

        echo "<table ....>\n";
        echo "  <tr><td>\n";

        while (!eof($handle1))
        {
          $oldLine=fgets($handle1);
          $newLine=str_replace($oldSep, $oldLine, $newSep);

        echo   $newLine;
        }
        echo "</td>>/tr>;

        ?>

        Dir ist klar, dass dieses Script eine Tabelle mit exakt einer Zeile erzeugt?

        Viele Grüße

        Antje

        1. Hallo Thomas

          warum die Zeile trennen?

          $oldSep=";";
          $newSep="</td><td>";

          echo "<table ....>\n";
          echo "  <tr><td>\n";

          while (!feof($handle1))           // Hier Fehler...
          {
            $oldLine=fgets($handle1);
            $newLine=str_replace($oldSep, $oldLine, $newSep);

          echo   $newLine;

          echo "</tr>\n<>tr>;             // Hier Fehler ...

          }
          echo "</td></tr>;                 // Hier Fehler ...

          ?>

          Dir ist klar, dass dieses Script eine Tabelle mit exakt einer Zeile erzeugt?

          Viele Grüße

          Antje

          Nein Antje. Aber Peter aht mir da eben gemailt. Ich muss es wohl nochmal reparieren..
          Danke

          Oh Oh, da war ich wohl doch ein bisschen schnell mit dem Tippen.

          Gruß
          Tom

        2. Und weils so schön war, nochmal...

          $oldSep=";"; $newSep="</td><td>";

          echo "<table ....>\n"; echo "  <tr><td>\n";

          while (!feof($handle1))              // Hier... {   $oldLine=fgets($handle1);   $newLine=str_replace($oldSep, $oldLine, $newSep);

          echo   $newLine;   echo "</tr>\n<tr>";                // Hier... } echo "</td></tr>";                   // Hier...

          ?>

          Viele Grüße

          Tom

        3. $oldSep=";";
          $newSep="</td><td>";

          echo "<table ....>\n";
          echo "  <tr><td>\n";

          while (!feof($handle1))              // Hier...
          {
            $oldLine=fgets($handle1);
            $newLine=str_replace($oldSep, $oldLine, $newSep);

          echo   $newLine;
            echo "</td></tr>\n<tr><td>";       // Hier............
          }
          echo "</td></tr>";                   // Hier...

          ?>

          Viele Grüße

          Tom

          Jetzt aber!

          1. Hallo Thomas

            warum so hektisch :-), da schleichen sich nur Fehler ein. Hier waren die Parameter von str_replace vertauscht.

            ich würde es z.B. so lösen:

            <?php
              echo '<table border="1">';
              $handle1=fopen("text.txt","r");

            while (!feof($handle1))
             {
               $oldLine=fgets($handle1);
               echo "<tr><td>".str_replace(";", "</td><td>", $oldLine)."</td></tr>";

            }

            echo "</table>";

            ?>

            Jetzt stimmts, es ist getestet.

            Viele Grüße

            Antje

            1. <?php
                echo '<table border="1">';
                $handle1=fopen("text.txt","r");

              while (!feof($handle1))
              {
                 $oldLine=fgets($handle1);
                 echo "<tr><td>".str_replace(";", "</td><td>", $oldLine)."</td></tr>";
              }

              echo "</table>";
              ?>

              -------------------------------------------------

              Jetzt stimmts, es ist getestet.

              Da gibts nicht mehr viel zu sagen:

              Danke Anke

  2. Hallo, nachdem ich auf den einschlägigen Hilfeseiten zu PHP keinen rechten Zugang zu der Materie finde und auch im Forumsarchiv nicht fündig werde, frag ich mal hier...

    Wenn ich Daten in einer Textdatei z.B. in der Form:

    1; Hannover; 34; 22; 9; 3; 93; 37; 56; 75
    2; Bielefeld; 34; 19; 8; 7; 68; 38; 30; 65
    .
    .
    .

    abgelegt habe, wie kann ich aus diesen Daten nun per PHP eine HTML-Tabelle generieren? Wäre schön, wenn mir das jemand in groben Zügen erklären könnte... vielleicht gibts ja auch einen hilfreichen Link dazu?

    Hallo Peter,

    Da gibt es auch CSV-Funktionen. Die machen das fast automatisch...

    Du kannst Dir gerne von meinem Server das PHP-Handbuch herunterladen. Ist wohl nicht das neueste Buch aber wahrscheinlich das meueste, was in dieser Form im Netz steht. Du brauchst einen NEUEN Acrobat Reader dafür.

    Ich habe mir die Schwarte ausgedruckt. Da waren es mal 3 breite Ordner. Nun sind es inzwischen 6, weil ich immer meine eigenen Beispiele und AUfgaben dazwischen geheftet habe...

    der link lautet http://bitworks.de/literatur/php/

    Gruß

    Thomas