Stahl Florian: Automatische Nummerrierung

Hallo an alle,

habe folgende Frage:

Ich habe eine .txt Datei in welcher Daten aus einem anderen Programm stehen. Nun lasse ich die Datei mit PHP auslesen.

Soweit funktioniert auch alles.

Nun möchte ich das er beim Auslesen jedem Datensatz eine lfd.Nr. vergibt, welche er auch ausliest.

Bis jetzt:

Name, Vorname, Datum

Vorhaben:

Automatische fotlaufende Nr, Name, Vorname, Datum

Vll. kann mir hier jemand weiterhelfen, ich stehe hier voll am Schlauch. Danke schon mal im vorraus!

Mit freundlichen Grüssen
------------------------
Florian
------------------------

  1. Hello Florian,

    Ich habe eine .txt Datei in welcher Daten aus einem anderen Programm stehen. Nun lasse ich die Datei mit PHP auslesen.

    Wie lautet denn das Stückchen PHP-Code zum Auslesen (bitte ohne HTML...)?

    Nun möchte ich das er beim Auslesen jedem Datensatz eine lfd.Nr. vergibt, welche er auch ausliest.

    Soll "er" sie nun vergeben, oder soll "er" sie mit auslesen und dann lediglich mit anzeigen?

    Name, Vorname, Datum

    Vorhaben:

    Automatische fotlaufende Nr, Name, Vorname, Datum

    Vll. kann mir hier jemand weiterhelfen, ich stehe hier voll am Schlauch. Danke schon mal im vorraus!

    Aber wie man in einer Schleife die Durchläufe zählen kann, ist Dir schon klar?

    $loops = 0;

    while(<laufbedingung>)
      {
        $loops++;
        ## tu was...
      }

    Du kannst erst hochzählen und dann etwas mit dem Zähler tun (ways ich persönlich für richtig halte), oder Du tust erst etwas und zählst dann hoch, oder du fängst gar nicht bei 0 an, sondern mittendrin...

    Das hängt eigentlich immer von Deiner Aufgabenstellung ab. Wenn es um Anzahl geht, würde ich daher immer erst hochzählen, dann tun. Und interessant ist es noch, was beim Ende der Schleife mit dem Zähler passiert. In PHP bleibt er erhalten und ist nach der Schleife nutzbar.

    Harzliche Grüße aus dem
    verschneiten Sankt Andreasberg
    und Frohe Weihnachtszeit

    Tom

    --
    Nur selber lernen macht schlau

    1. Hallo an alle,

      Wie lautet denn das Stückchen PHP-Code zum Auslesen (bitte ohne HTML...)?

      <?php
      $eintrag=file('200712.txt');
      $ausgabe="<br>";
      $temp=count($eintrag)-1;
      for($i=$temp;$i>=0;$i--)

      {$element=explode(',',$eintrag[$i]);
      $element[2]=str_replace('"','',$element[2]);
      $element[2]=trim($element[2]);

      $element[3]=str_replace('"','',$element[3]);
      $element[3]=trim($element[3]);

      $element[8]=str_replace('"','',$element[8]);
      $element[8]=trim($element[8]);

      $element[1]=str_replace('"','',$element[1]);
      $element[1]=trim($element[1]);

      $element[36]=str_replace('"','',$element[36]);

      $ausgabe.="<tr class="dienste">";
       $ausgabe.="<td class="dienste"></td>";
       $ausgabe.="<td class="dienste">".$element[2]."</td>";
       $ausgabe.="<td class="dienste">".$element[3]."</td>";
       $ausgabe.="<td class="dienste">".$element[8]."</td>";
       $ausgabe.="<td class="dienste">".$element[1]."</td>";
       $ausgabe.="<td class="dienste">".$einsatzart."</td>";
      $ausgabe.="</tr>";}

      ?>

      Soll "er" sie nun vergeben, oder soll "er" sie mit auslesen und dann lediglich mit anzeigen?

      "Er" soll sie vergeben. Die Startnummer soll aber selbst eingestellt werden können.

      Mit freundlichen Grüssen
      ------------------------
      Stahl Florian
      ------------------------

      --
      Das Leben ist hart, aber wir sind härter
      1. Hello,

        Wie lautet denn das Stückchen PHP-Code zum Auslesen (bitte ohne HTML...)?

        <?php
        $eintrag=file('200712.txt');
        $ausgabe="<br>";
        $temp=count($eintrag)-1;
        for($i=$temp;$i>=0;$i--)

        {$element=explode(',',$eintrag[$i]);
        $element[2]=str_replace('"','',$element[2]);
        $element[2]=trim($element[2]);

        $element[3]=str_replace('"','',$element[3]);
        $element[3]=trim($element[3]);

        $element[8]=str_replace('"','',$element[8]);
        $element[8]=trim($element[8]);

        $element[1]=str_replace('"','',$element[1]);
        $element[1]=trim($element[1]);

        $element[36]=str_replace('"','',$element[36]);

        $ausgabe.="<tr class="dienste">";
        $ausgabe.="<td class="dienste"></td>";
        $ausgabe.="<td class="dienste">".$element[2]."</td>";
        $ausgabe.="<td class="dienste">".$element[3]."</td>";
        $ausgabe.="<td class="dienste">".$element[8]."</td>";
        $ausgabe.="<td class="dienste">".$element[1]."</td>";
        $ausgabe.="<td class="dienste">".$einsatzart."</td>";
        $ausgabe.="</tr>";}

        ?>

        Du machst Dir das Leben auch schwer.
        File ist hier nicth wirklich Dein Freund, denn es handelt sich doch augenscheinlich um eine sogenannte CSV-Datei, was dann auch schon ein bisschen besser ist, als eine Textdatei mit beliebigem Inhalt (bei der also nicht darauf geachtget wurde, welche Zeichen in den Datensätzen erlaubt sind).

        <?php
           ## Voreinstellungen
           $rowcount = 0;               ## Zeilenzähler startet bei $rowcount + 1
           $filename = '200712.txt';

        #------------------------------------------------------------------------
           ## Daten holen

        $_table = array();           ## leeres Array bereitstellen

        $fh = fopen($filename,'rb'); ## Datei zum Lesen öffnen

        if (!$fh)                    ## Öffnen hat nicht geklappt
           {
              ## Fehlerbehandlung
           }
           else
           {
              if (!flock($fh, LOCK_SH)) ## Datei ausschießlich zum Lesen sperren
              {
                fclose($fh);            ## Datei schließen, weil Sperre nicht erfolgreich war
                ## Fehlerbehandlung
              }
              else
              {
                $_record = array();     ## Leeres Array als Satzpuffer bereitstellen

        while($_record = fgetcsv($fh, 0, ',', '"'))
                {
                  $rowcount++;
                  $_table [$rowcount] = $_record;   ## Datensatz unter dem
                                                    ## Index $rowcount in Array übertragen
                }
        #          http://de2.php.net/manual/de/function.fgetcsv.php
                fclose($fh);            ## Datei schließen
              }
           }
           #--------------------------------------------------------------------
           ## Daten ausgeben

        if (is_array($_table))
           {
             echo "<pre>\n";

        foreach ($_table as $key => $_record)   ## jeden Datensatz ausgeben
             {
               echo "[$key]\t";

        foreach($_record as $data)            ## jedes Feld in jedem Datensatz ausgeben
               {
                 echo htmlspecialchars($data) . "\t";
               }

        echo "\n";                            ## Zeilenumbruch nach dem Datensatz
             }

        echo "</pre>\n";
           }

        Ich habe das jetzt nicht geprüft, aber versuch mal, ob es so funktioniert.
        Und dann frag, wenn Dir etwas nicht klar ist bei dem Vorschlag.

        Üblicherweise macht man dann aus "Daten holen" und "Daten ausgeben" jeweils eine Funktion. Die kann man immer wieder benutzten und muss sie nicht jedes mal nue coden.

        Die Ausgabefunktion kann dann natürlich auch eine HTML-Tabelle erzeugen, muss dann aber darauf achten, dass fehlende Zellen in einer Zeile aufgefüllt werden. Das kann bei "kaputten" CSV-Dateien schon mal passieren, dass die unterschiedliche Anzahl von Elementen in einer Zeile (Datensatz) haben.

        Harzliche Grüße aus dem
        verschneiten Sankt Andreasberg
        und Frohe Weihnachtszeit

        Tom

        --
        Nur selber lernen macht schlau

        1. Hello,

          entschuldige bitte. Ich wollte Dir eigentlich die englische Handbuchseite verlinken.

          #          http://de2.php.net/manual/de/function.fgetcsv.php

          http://de2.php.net/manual/en/function.fgetcsv.php

          Die deutsche ist nicht volständig.

          Solltest Du auch selber immer gucken. Die deutschen Seiten sind oft nicht vollständig oder sogar leicht fehlerhaft übersetzt. Aber zum groben Einlesen doch leichter...

          Harzliche Grüße aus dem
          verschneiten Sankt Andreasberg
          und Frohe Weihnachtszeit

          Tom

          --
          Nur selber lernen macht schlau

          1. Hallo Tom,

            dankeschön, etz haut des aber irgendwie net so ganz hin. Der bringt nen Syntaxfehler "unerwartetes Ende" in der letzten Zeile. Also wo das ?> steht.

            Hier mal der Script

            <?php

            $rowcount = 0;
               $filename = '200712.txt';
               $_positive = array(0,3,4,5);
               $_table = array();
               $fh = fopen($filename,'rb');

            if (!$fh) {;} else {if (!flock($fh, LOCK_SH))
                              {fclose($fh);}
                                 else {$_record = array();

            while($_record = fgetcsv($fh, 0, ',', '"'))
                    {
                      $rowcount++;
                      $_table [$rowcount] = $_record;

            }
                    fclose($fh);
                  }
               }

            if (is_array($_table))
               {
                 echo "<pre>\n";

            foreach ($_table as $key => $_record)
                 {
                   echo "[$key]\t";

            foreach($_positive as $index)
                   {
                     if(isset($_record[$index]))
                     {

            echo htmlspecialchars($_record[$index]) . "\t";
                   }

            echo "\n";
                 }

            echo "</pre>\n";
               }
            ?>

            Mit freundlichen Grüssen
            ------------------------
            Stahl Florian
            ------------------------

            --
            Das Leben ist hart, aber wir sind härter
            1. Hello Florian,

              dankeschön, etz haut des aber irgendwie net so ganz hin. Der bringt nen Syntaxfehler "unerwartetes Ende" in der letzten Zeile. Also wo das ?> steht.

              Hier mal der Script

              Das ist aber nicht nett, dass Du "meine Formatierung" vernichtet hast.

              Es ist meiner meinung nach überhaupt kein Zeichen von besonderer Potenz, sich diese "Chaosformatierung" anzugewöhnen. Ich gebe zu, es erfordert einige Überwindung, sich den "luftigen Stil" der Weicheier, die von Programmierung sowieso nichzts verstehen, anzugewöhnen und sich den für "harte Kerle" und diejenigen, die "die Programmiersprache erfunden haben" abzugewöhnen...

              Aber es lohnt sich spätestens bei der Fehlersuche immer wieder!

              Dazu gehören vernünftige Eintückungstiefen (ich muss hier noch an mir arbeiten und enlich auf vier Spalten umstellen) und vernünftige Klammersetzung (öffnende und schließende Klammern gleicher Hierarchie gehören in die gleiche Spalte!!!! (hundertmal) ) sowie viele verständliche Kommentare.

              <?php   ### get_csv_data.php ###

              $rowcount = 0;
                 $filename = '200712.txt';
                 $_positive = array(0,3,4,5);
                 $_table = array();

              #---------------------- Daten holen -----------------------

              $fh = fopen($filename,'rb');

              if (!$fh)

              { ## do nothing
                     ;
                   }
                   else
                   {
                     if (!flock($fh, LOCK_SH))
                     {
                       fclose($fh);
                     }

              else

              {
                       $_record = array();

              while($_record = fgetcsv($fh, 0, ',', '"'))
                       {

              $rowcount++;
                        $_table [$rowcount] = $_record;

              }

              fclose($fh);

              }

              }

              #------------------- Daten verarbeiten und ausgeben ---------------

              if (is_array($_table))
                 {
                   echo "<pre>\n";

              foreach ($_table as $key => $_record)
                   {
                     echo "[$key]\t";

              foreach($_positive as $index)
                     {
                       if(isset($_record[$index]))
                       {
                         echo htmlspecialchars($_record[$index]) . "\t";

              }

              echo "\n";

              }

              echo "</pre>\n";
                     }
                   }

              ?>

              Dann hättest Du auch bemerkt, dass Du einfach eine Klammer vergessen hast am Ende des Scriptes.

              Ich hatte das andere überigens noch ausprobiert und bis auf den schließenden Tag ( ?> ) hatte ALLES gestimmt. Das war mir noch nie vorher bei einem nur eben schnell hingeschriebenen Script geglückt! Du jast also irgendwie eine Premiere miteerlebt :-)

              Also, nimm das korrigierte Script, lass die Formatierung so, wie sie ist, setze vernünftige Kommentare dazu, denn nur die zeigen, dass Du verstanden hast, was da eigentlich passiert.

              Und dann speicher Dir das Script unter einem plausiblen Namen in Deiner Sammlung ab.

              Wenn Du dann in einem halben Jahr mal eben schnell eine Lösung suchst, dieses dann hoffentlch _funktionierende_ Script in Deiner Sammlung findest, die Kommentare liest, und sofoert weißt, an welcher Stelle Du eine Zeile einfügen musst, um die neuen Anforderungen zu erfüllen, DANN hast Du etwas gelernt.

              Wiederverwendbarer Code findet sich nämlich nicht nur in möglichst fetten Klassenbibliotheken, sondern auch in kleinen aber gut sortierten Sammlungen solcher "Snippets"...

              Harzliche Grüße aus dem
              verschneiten Sankt Andreasberg
              und Frohe Weihnachtszeit

              Tom

              --
              Nur selber lernen macht schlau

              1. Hallo Tom,

                Aber es lohnt sich spätestens bei der Fehlersuche immer wieder!

                Stimmt, ist leichter nachzuvollziehen. Danke.

                Dann hättest Du auch bemerkt, dass Du einfach eine Klammer vergessen hast am Ende des Scriptes.

                Jop.

                Ich hatte das andere überigens noch ausprobiert und bis auf den schließenden Tag ( ?> ) hatte ALLES gestimmt. Das war mir noch nie vorher bei einem nur eben schnell hingeschriebenen Script geglückt! Du jast also irgendwie eine Premiere miteerlebt :-)

                Na das ist doch mal positiv.

                Also, nimm das korrigierte Script, lass die Formatierung so, wie sie ist, setze vernünftige Kommentare dazu, denn nur die zeigen, dass Du verstanden hast, was da eigentlich passiert.

                Habe es benommen, doch ich bekomme als Ergebniss leider nur eine leere Seite angezeigt, komme aber nicht auf den Fehler.

                Und dann speicher Dir das Script unter einem plausiblen Namen in Deiner Sammlung ab.

                Habe ich gemacht.

                Mit freundlichen Grüssen
                ------------------------
                Stahl Florian
                ------------------------

                --
                Das Leben ist hart, aber wir sind härter
                1. Hello,

                  Also, nimm das korrigierte Script, lass die Formatierung so, wie sie ist, setze vernünftige Kommentare dazu, denn nur die zeigen, dass Du verstanden hast, was da eigentlich passiert.

                  Habe es benommen, doch ich bekomme als Ergebniss leider nur eine leere Seite angezeigt, komme aber nicht auf den Fehler.

                  Na, dann ran an die Fehlersuche.

                  Das Script hat ja bei mir (unter optimalen Voraussetzungen) ordnungsgemäß funktioniert.
                  Bei Dir kommt nur eine leere Seite.
                  Also liegt doch nahe, dass der Fehler dort steckt, wo ich Baustellen hinterlassen habe, also Deine rahmenbedingungen an diesen Stellen andere sind.

                  Überall dort, wo ich einfach nur

                  ## Fehlerbehandlung

                  geschreiben habe, musst Du auftretende fehler auch irgendwie verarbeiten.
                  Da ich keine gemacht habe (ausnahmsweise!), sind diese Bedingszweige bei mir auch nicht aktiv geworden.

                  Schreib also als erstes dort mal eine Kontrollausgabe rein und du wirst sehen, wo es klemmt.

                  Außerdem schalte Dein

                  Error_Reporting(E_ALL);

                  und lasse alle Fehler auch auf der Standardausgabe ausgeben

                  ini_set('display_errors','1');

                  Dann sollte sich zumindest schon 'mal eine Meldung zeigen.

                  Harzliche Grüße aus
                  Sankt Andreasberg
                  und Guten Rutsch

                  Tom

                  --
                  Nur selber lernen macht schlau

                  1. Hallo Tom,

                    die Daten werden jetzt angezeigt: An der Stelle an der jetzt die 1 steht, stand vorher eine Null. Nach dieser Änderung hat dann(fast)alles funktioniert.

                    while($_record = fgetcsv($fh, 1, ',', '"')) ## Trennzeichen festlegen

                    Diese Datei hat ca. 60 Elemente. Ich möchte sie aber nicht löschen die nicht benötigten, da dies ja sonst keine Arbeitserleichterung wäre. Darum hast du mir ja das mit dem Selektieren gezeigt:

                    $_positive = array(2,3,8,1,36,);     ## Liste der Spalten-Indexe, die ausgegeben werden sollen

                    Er gibt später aber nur die Elemente 2,3,8,1 aus. Das Element 36 lässt er Warum auch immer Weg. Das passiert bei allen zweistelligen "Elementzahlen" die ich eingebe. Ausnahme die Nr. 10, die gibt er noch aus.

                    Warum denn das?

                    Mit freundlichen Grüssen
                    ------------------------
                    Stahl Florian
                    ------------------------

                    --
                    Das Leben ist hart, aber wir sind härter
                    1. Hello Florian,

                      while($_record = fgetcsv($fh, 1, ',', '"')) ## Trennzeichen festlegen

                      http://de.php.net/manual/en/function.fgetcsv.php
                      Must be greater than the longest line (in characters) to be found in the CSV file (allowing for trailing line-end characters). It became optional in PHP 5. Omitting this parameter (or setting it to 0 in PHP 5.0.4 and later) the maximum line length is not limited, which is slightly slower.

                      Wenn Deine PHP-Version kleiner als 5.0.4 ist, dann solltest Du da einen möglichst großen Wert einsetzen, also einen, der groß genug ist, um den längsten Datensatz aufzunehmen (Satzlänge + 2)

                      $_positive = array(2,3,8,1,36,);     ## Liste der Spalten-Indexe, die ausgegeben werden sollen

                      Er gibt später aber nur die Elemente 2,3,8,1 aus. Das Element 36 lässt er Warum auch immer Weg. Das passiert bei allen zweistelligen "Elementzahlen" die ich eingebe. Ausnahme die Nr. 10, die gibt er noch aus.

                      Warum denn das?

                      Weil du die Sätze "zerkloppst" durch die zu kurze Satzlänge beim Lesen.

                      Harzliche Grüße aus
                      Sankt Andreasberg
                      und Guten Rutsch

                      Tom

                      --
                      Nur selber lernen macht schlau

                      1. Hallo an alle,

                        Wenn Deine PHP-Version kleiner als 5.0.4 ist, dann solltest Du da einen möglichst großen Wert einsetzen, also einen, der groß genug ist, um den längsten Datensatz aufzunehmen (Satzlänge + 2)

                        Habe auf meinem lokalen Apache Server die PHP Version 5.1.2. Also auch wenn ich einen anderen Wert setze, passiert nichts, ausser ich setze ab 240 rein, dann macht er aber alles wild durcheinander.

                        Mit freundlichen Grüssen
                        ------------------------
                        Stahl Florian
                        ------------------------

                        --
                        Das Leben ist hart, aber wir sind härter
                        1. Hello,

                          Wenn Deine PHP-Version kleiner als 5.0.4 ist, dann solltest Du da einen möglichst großen Wert einsetzen, also einen, der groß genug ist, um den längsten Datensatz aufzunehmen (Satzlänge + 2)

                          Habe auf meinem lokalen Apache Server die PHP Version 5.1.2. Also auch wenn ich einen anderen Wert setze, passiert nichts, ausser ich setze ab 240 rein, dann macht er aber alles wild durcheinander.

                          Könntest Du das "wild durcheinander" noch etwas näher beschreiben?

                          foreach($_positive as $index)         ## arbeitet das Array $_positive der Reihe nach ab.
                                  {
                                    if(isset($_record[$index]))         ## und holt aus dem $_record das passende Feld dazu
                                    {
                                      echo htmlspecialchars($_record[$index]) . "\t";
                                    }

                          echo "\n";
                                   }
                                 }

                          Da kann ich nichts sehen von wild durcheinander.
                          Vielleicht reicht 240 noch nicht als Satzlänge?
                          Setz ruhig mal 4096 ein, es wird schon nichts kaputt gehen dadurch...

                          Harzliche Grüße aus
                          Sankt Andreasberg
                          und Guten Rutsch

                          Tom

                          --
                          Nur selber lernen macht schlau

                          1. Hallo Tom,

                            Könntest Du das "wild durcheinander" noch etwas näher beschreiben?

                            Ich meine damit nicht das Script, sondern die Ausgabe im Browser. Ich habe ja die Werte in die Positiveliste eingetragen. Bis auf den Wert 36 funktionieren ja alle. Wenn ich jetzt aber die Satzlänge ändere, dann kommen irgendwelche Daten für den Wert 36, die ich aber gar nicht haben will.

                            Da kann ich nichts sehen von wild durcheinander.
                            Vielleicht reicht 240 noch nicht als Satzlänge?
                            Setz ruhig mal 4096 ein, es wird schon nichts kaputt gehen dadurch...

                            Es ändert sich nur bei 240 oä. was. Sonst passiert da gar nichts.

                            Mit freundlichen Grüssen
                            ------------------------
                            Stahl Florian
                            ------------------------

                            --
                            Das Leben ist hart, aber wir sind härter
                            1. Hello,

                              Es ändert sich nur bei 240 oä. was. Sonst passiert da gar nichts.

                              Dann wäre es Zeit, dass Du uns entweder einen Link gibst auf die Ausgabe und das Script (bitte als script.php.txt), die Auasgaben hier textuell oder auch als Screenshot postest, Fehlermeldungen sammelst, Kontrollausgaben einbaust usw.

                              Nur mit den Aussagen, es wäre wild durcheinander und sonst passiere gar nichts können wir hier (ich vermute, die Anderen auch nicht) gar nichts anfangen. Wir können ja nicht reingucken in Deinen Server.

                              Harzliche Grüße aus
                              Sankt Andreasberg
                              und Guten Rutsch

                              Tom

                              --
                              Nur selber lernen macht schlau

                              1. Hallo Tom,

                                werde es am kommenen Wochenende posten. Bin im Moment sehr viel im Stress und kaum zuhause.

                                Bin an der Hilfe und Lösung weiterhin interessiert.

                                Mit freundlichen Grüssen
                                ------------------------
                                Stahl Florian
                                ------------------------

                                --
                                Das Leben ist hart, aber wir sind härter
                              2. Hallo Tom,

                                sorry, dass dies so lange gedauert hat.

                                Jetzt mal die ganzen Sachen

                                1. Die Textdatei

                                Ich kann aus dieser Datei die Daten selbst nicht posten bzgl. des Datenschutzes. Ich poste dir die Struktur und den genauen Aufbau

                                Ein Datensatz ist folgendermaßen aufgebaut:

                                "Daten","Daten2","Daten3", ...

                                2. Der Script

                                <?php
                                   ## Voreinstellungen
                                   $rowcount = 0;               ## Zeilenzähler startet bei $rowcount + 1
                                   $filename = '200712.txt';
                                   $_positive = array(2,3,8,1,36,);     ## Liste der Spalten-Indexe, die ausgegeben werden sollen

                                #------------------------------------------------------------------------
                                   ## Daten holen

                                $_table = array();           ## leeres Array bereitstellen

                                $fh = fopen($filename,'rb'); ## Datei zum Lesen öffnen

                                if (!$fh)                    ## Öffnen hat nicht geklappt
                                   {
                                     echo "Öffnungsfehler";
                                   }
                                   else
                                   {
                                      if (!flock($fh, LOCK_SH)) ## Datei ausschießlich zum Lesen sperren
                                      {
                                        fclose($fh);            ## Datei schließen, weil Sperre nicht erfolgreich war
                                        echo "Datei geschlossen weil Sperre nicht erfolgreich war";
                                      }
                                      else
                                      {
                                        $_record = array();     ## Leeres Array als Satzpuffer bereitstellen

                                while($_record = fgetcsv($fh,452, ',', '"')) ## Trennzeichen festlegen
                                        {
                                          $rowcount++;
                                          $_table [$rowcount] = $_record;   ## Datensatz unter dem
                                                                            ## Index $rowcount in Array übertragen
                                        }

                                fclose($fh);            ## Datei schließen
                                      }
                                   }
                                   #--------------------------------------------------------------------
                                   ## Daten ausgeben

                                if (is_array($_table))
                                   {
                                     echo "<pre>\n";

                                foreach ($_table as $key => $_record)   ## jeden Datensatz ausgeben
                                     {
                                       echo "$key\t";

                                foreach($_positive as $index)            ## Positiv-Liste abarbeiten
                                       {
                                         if(isset($_record[$index]))             ## und schauen, ob ein Feld im Datensatz
                                         {                                      ## dafür vorhanden ist

                                echo htmlspecialchars($_record[$index]) . "\t";
                                         }
                                       }

                                echo "\n";                            ## Zeilenumbruch nach dem Datensatz
                                     }

                                echo "</pre>\n";
                                   }

                                ?>

                                3. Die Ausgabe

                                Problem

                                Hoffe das reicht erst mal. Wenn du noch was brauchst, sag einfach bescheid.

                                Dankeschön!

                                Mit freundlichen Grüssen
                                ------------------------
                                Stahl Florian
                                ------------------------

                                --
                                Das Leben ist hart, aber wir sind härter
              2. @@Tom:

                Dazu gehören vernünftige Eintückungstiefen (ich muss hier noch an mir arbeiten und enlich auf vier Spalten umstellen)

                Ta-bu-la-tor

                Live long and prosper,
                Gunnar

                --
                „Das Internet ist ein großer Misthaufen, in dem man allerdings auch kleine Schätze und Perlen finden kann.“ (Joseph Weizenbaum)
        2. Hallo Tom,

          danke erstmal für die gute Antwort! Hat soweit auch super geklappt.

          Jetzt kommen in dieser Datei aber auch Felder in Datensätzen vor, die ich nicht auslesen will. Wie kann ich denn hier jetzt diese selektieren?

          Mit freundlichen Grüssen
          ------------------------
          Stahl Florian
          ------------------------

          --
          Das Leben ist hart, aber wir sind härter
          1. Hello,

            danke erstmal für die gute Antwort! Hat soweit auch super geklappt.

            Bitte, gerne geschehen. :-)

            Jetzt kommen in dieser Datei aber auch Felder in Datensätzen vor, die ich nicht auslesen will. Wie kann ich denn hier jetzt diese selektieren?

            Der erste Schritt ist wohl, dass Du Dir klar machst, welche Schleife für was verantwortlich ist.
            Das Script arbeitet im Prinzip als Batch-Script, also Daten holen, Daten aufbereiten und ausgeben. Konsequenterweise könnte man den zweiten Schritt auch noch aufteilen in zwei, dann hätte man das klassische EVA-Prinzip.

            Jedenfalls sind die beiden foreach-Schleifen-Konstrukte vür
             - vertikale       (Datensätze)
            und
             - horizontale     (Felder in den datensätze)
            Verarbeitung zuständig.

            Du könntest jetzt in der Feldverarbeitung entweder eine Sperrliste aufbauen, also Datenfelder mit einer bestimmten Position im Satz von der Ausgabe ausschließen, oder aber du baust eine Positivliste auf, in der Du die Index der Datenfelder angibst, die Du ausgeben willst.

            Ich poste Dir mal das Beispiel für die Positivliste:

            irgendwo in der Konfiguration festlegen:

            $_positive = array(0,3,4,5);     ## Liste der Spalten-Indexe, die ausgegeben werden sollen

            foreach($_positive as $index)            ## Positiv-Liste abarbeiten
                   {
                     if(isset($_record[$index))             ## und schauen, ob ein Feld im Datensatz
                     {                                      ## dafür vorhanden ist

            echo htmlspecialchars($_record[$index]) . "\t";
                     }
                   }

            Du siehst, dass das mit Arrays ein relativ kleiner chirurgischer Eingriff ist.
            Das wesentliche ist aber auch hier wieder

            • dass man vorher schaut, ob der gewünschte Datenwert überhaupt gesetzt ist
            • Dass man bei Ausgabe als HTML-<table> darauf achtet,
                dass jede Zeile dieselbe Zellenzahl hat

            Harzliche Grüße aus dem
            verschneiten Sankt Andreasberg
            und Frohe Weihnachtszeit

            Tom

            --
            Nur selber lernen macht schlau

  2. Hallo,

    Nun möchte ich das er beim Auslesen jedem Datensatz eine lfd.Nr. vergibt, welche er auch ausliest.

    Bis jetzt:

    Name, Vorname, Datum

    Vorhaben:

    Automatische fotlaufende Nr, Name, Vorname, Datum

    Datei öffnen, mit einer Schleife zeilenweise auslesen, Nummer hinzufügen, Zeile überschreiben, Datei schließen.

    Reicht dir das um das Script zu schreiben?
    Schau dir einfach die Dateifunktionen von PHP mal an. (nicht der beste Link, ich weiß)

    Grüße, Matze