Tom: Automatische Nummerrierung

Beitrag lesen

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