csv Auslesen, fehler

Antoniodc

Mitglied
Hi,

ich bin neu im PHP Programmieren. Habe ein kleines Problem. Ich möchte das ein CSV ausgelesen wird. Siehe Anhang. Die CSV datei hat zwar bestimmte Angaben, soll aber nur bei PLZ gesucht werden und was unter Partner ist ausgegeben werden.

Mein Script lautet so:
PHP:
<?php

    //Variable $zeile zum Hochzählen der Zeilennummer
    $zeile = -1;
    //Variable $datei wird gegründet und öffnet die CSV-Datei
    //hier müsst Ihr die korrekte relative Pfadangabe zu Eurer CSV-Datei und deren korrekten Namen eintragen
    $datei = fopen("postleitzahlen_v10.csv","r");
   
    //Wenn CSV-Datei existiert
    if ($datei)
      {
     
      //Tabelle <table> bis </table> anzeigen mit nur Linien zwischen Zeilen (nicht alle Browser)
      //und Hintergrundfarbe der Tabelle festlegen
      print ("<table border='1' rules='rows' bgcolor='#9c253d'>");
     
      //Bemerkungen zu rules:
      //rules="none"    werden überhaupt keine Linien gezogen, der Außenrahmen der Tabelle wird jedoch gezeigt.
      //rules="rows"    werden Linien zwischen allen Tabellenzeilen gezogen, nicht jedoch zwischen den Spalten.
      //rules="cols"    werden Linien zwischen allen Tabellenspalten gezogen, nicht jedoch zwischen den Zeilen.
      //rules="groups"  werden Linien zwischen Kopf, Körper und Fuß einer Tabelle gezogen.
      //rules="all"     werden Linien zwischen allen Tabellenzellen gezogen (Voreinstellung).
     
      //alternative Rahmen-Darstellung unten (auskommentiert)
      //print ("<table border='8' cellspacing='5' cellpadding='1' bgcolor='#DCDCDC'>");
     
      //Variable $dateigroesse wird belegt mit der Dateigröße (korrekten Pfad und Dateinamen der CSV-Datei)
      $dateigroesse=filesize("postleitzahlen_v10.csv");
      //Variable $data erstellt Array der Datenreihe, achtet hier auf den Separator der CSV-Datei (hier Komma)
      $data = fgetcsv ($datei, $dateigroesse, ",");
     
      //while Schleife um die gesamte CSV-Datei abzufragen
      while($data!=false)
         {
         //Tabellen-Zeile <tr> bis </tr> anzeigen
         print "<tr>G</tr>";
         //Variable $Zeile wird hochgezählt
         $zeile++;
         //Wenn 1. Zeile, dann anderer Hintergrund als bei allen folgenden Zeilen
         if ($zeile==0)
           {
             //Tabellen-Zelle <td> bis </td> mit Zellen-Breite und Hintergrundfarbe angeben
             print ("<td width='50' style='background-color:#CCCCCC'>");
           } else {
             //Andererseits Position sowie Zellen-Breite und Zellen-Höhe, Farbe, Schriftgröße angeben
             print ("<td align='center' valign='top' width='50' height='50'><b>");
             print ("<font color='#657593' font size='2'>");
             //Zeilen-Nummer und Punkt dahinter ausgeben
             print ($zeile);
             print (".");
         }
         //Stil und Tabellen-Zelle abschließen
         print ("</font></b></td>");
         //Variable $spalten zählen
         $spalten = count ($data);
        
         //for Schleife zum Anzeigen jeder einzelnen Spalte einer Zeile
         for ($c=0; $c < $spalten; $c++) {
           //Wenn 1. Zeile, dann anderer Hintergrund als bei allen folgenden Zeilen
           if ($zeile==0)
             {
                //Tabellen-Zelle <td> bis </td> Hintergrundfarbe angeben
                print ("<td style='background-color:#CCCCCC'>");
             } else {
                //Andererseits Position sowie Zellen-Breite und Zellen-Höhe angeben
                print ("<td align='left' valign='top' width='300' height='50'>");
           }
           if ($zeile==0)
             {
                //Schriftfarbe angeben für 1. Zeile (Überschrift)
                print ("<b><font color='#FFFFFF'>");
             } else {
                //Schriftfarbe der restlichen Zellen-Inhalte
                print ("<font color='#657593' font size='2'>");
           }
           //Ausgabe der Daten
           print ($data[$c]);
           //Stil und Tabellen-Zelle abschließen
           print ("</font></b>");
           //Tabellen-Zelle abschließen
           print ("</td>");
         }
        
         //Tabellen-Zeile abschließen
         print ("</tr>");
         //Array der nächsten Datenreihe einlesen
         $data = fgetcsv ($datei, $dateigroesse, ",");
      }
     
      //CSV-Datei wieder schließen
      fclose($datei);
      //Tabelle abschließen
      print ("</table>");
     
    }
   
?>

!!ENDE!!

Leider zeigt er mir hier die ganze Tabelle. Ich möchte aber das er zu der PLZ nur den Partner ausgibt. Kann mir da einer Helfen?

Danke
 

Anhänge

  • csv-Datei.JPG
    csv-Datei.JPG
    151 KB · Aufrufe: 13
Zuletzt bearbeitet von einem Moderator:
Klar gibst du alles aus, hast ja kein Filter drin

PHP:
    //Testdaten: zu suchende plz
    $plz = 1067;

    $datei = fopen("postleitzahlen_v10.csv","r");
    $dateigroesse=filesize("postleitzahlen_v10.csv");

    //Header bestimmen und aufbrechen
    //Der Header ist in der ersten Zeile
    $header = fgetcsv($datei, $dateigroesse, ",");

    //Einen Index werstellen, damit man mit der Spaltenüberschrift auf die Spalten zugreiffen kann
    //Ergibt einen Array: array('plz'=>0, 'ort'->1, ...)
    $colIndex = array_flip($header);

    //Die Daten durchgehen. Die Hesderzeile wurd wieter oben bereits entfernt
    while($row = fgetcsv($datei, $dateigroesse, ",")){
    	//prüfen ob plz übereinstimmt
    	if($row[$colIndex['plz']] == $plz){
    		//Wenn ja, den partner ausgeben
    		echo $row[$colIndex['partner']]
    	}
    }
    fclose($datei);
 

Neue Beiträge

Zurück