mit php aus einer csv datei lesen?

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

  • mit php aus einer csv datei lesen?

    hi wie kann man aus einer csv datei lesen? grundsätzliches wie man dateien liest und schreibt weiss ich, aber was muss ich anwenden für csv`s?

    ich hab hier eine csv in der es wie folgt aussieht:
    NR; Gehalt; Alter; Beruf;
    1;3000;32;Meister;

    wie kann ich nun auf die einzelnen Punkte zugreifen um sie z.b in eine tabelle über php einzulesen?

    danke
    T

  • #2
    Hi!
    Dafür gibt es bestimmt irgentwo eine optimierte Funktion, schau mal bei den snipets nach.
    Von der Grundidee würde ich die Datei mit der Funktion file()j zeilenweise einlesen und mit der Funktion split () bei jedem ; aufspalten.
    Die 1. Zeile der Datei gibt Dir dann die Variablennamen (egal wieviele es sind) und alle folgenden Zeilen (egal wieviel es sind) jeweils einen Datensatz für die Variablen aus Zeile 1.
    Wenn Du das ganze in eine Schleife steckst kannst Du auch gleich jeden Datensatz verarbeiten (z.B. in DB schreiben)
    cu tj99de
    Of all things I've lost
    I miss my mind the most

    Kommentar


    • #3
      fgetcsv (int $filepointer, int $length[, string $delimimiter]
      mein Sport: mein Frühstück: meine Arbeit:

      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

      Kommentar


      • #4
        PHP-Code:
        CSV Reader, egal wie viele felder eine CSV hat

        so sieht das csv aus:

        rubrik,titel,code
        SPORT,HAND2,HAND2
        SPORT,FOOTBKIT,FOOTBKIT
        SPORT,LGDUDA,LGDUDA
        SPORT,THEBALL2,THEBALL2
        SPORT,FOOTBAL6,FOOTBAL6
        SPORT,BIKEMAN,BIKEMAN
        SPORT,2FAST4U,2FAST4U
        SPORT,RACE,RACE
        SPORT,THEBAIT,THEBAIT
        SPORT,FLEAGOAL,FLEAGOAL
        SPORT,GOLFBALL,GOLFBALL
        SPORT,GYM****************,GYM****************
        SPORT,HOOPS,HOOPS
        SPORT,SLAPSHOT,SLAPSHOT
        SPORT,ROOK,ROOK
        SPORT,SWIMSUIT,SWIMSUIT
        SPORT,GYMKIT,GYMKIT
        SPORT,TENNIKIT,TENNIKIT
        FEELINGS,WINGED,WINGED
        FEELINGS,LOVEPAIR,LOVEPAIR
        FEELINGS,LIPS2,LIPS2

        <?


        # NEW MODULE CSV to array


        // opens the file at row 1
        $row = 1;
        $fp = fopen ($MOD_src_path.$MOD_src,"r");

        // reading data

        $counter = 0;

        while ($srccsv = fgetcsv ($fp, 1000, ",")) {

            $num = count ($srccsv);
            
            //generating rubrik for e.g. $data[1][rubrik] by reading the first line
            if ($counter == 0 ){
                    for ($c=0; $c < $num; $c++) {
                    $format[$c] = $srccsv[$c];
                    //TEST echo $format[$c];
                    }
            }
            else {
            //generating an array with all data from csv in the structure echo $data[0][rubrik]="sport";
                for ($c=0; $c < $num; $c++) {
                        $data[$counter][$format[$c]] = $srccsv[$c];
                        
                        //TEST echo "<br>".$format[$c].$counter."-->".$data[$counter][$format[$c]];
                }
            }
            
        //TEST echo"format hat:".count($format);
        //TEST print_r($format);
            
        // This is the structure which is generated
        //$data[x][rubrik] = "....2";
        //$data[x][name] = "....2";
        //$data[x][code] = "....2";
        //$data[x][...] = "....2";

            $counter++;
        }
        fclose ($fp);

                //TEST 
                //print_r($data);
                //$test = count($data); echo $test; 
                
        # END MODULE

                
        ?>
        csv shower für obige datei, einfach beide in eine datei9 mit include ziehen


        PHP-Code:
        <?

        # PART1 Filter a special one
            
        // Filter "$search" "$in" of CSV "$data"

          $search = "SPORT"; //sucht ein wort um es zu filtern aus einem feld
          $in = "rubrik"; //rubrik ist es bei meiner csv datei kath,rubrik,name ist aber bei anderen csv anders
          unset ($filtered);
          $show_rows = "3"; //man kann nur beliebig viele zeilen anzeigen lassen statt alle
          $more = "init.php?settings=operator_all.inc.php&search=".$search; //link to full data page
           
         /*    
          function csvFilter($filter) {
              global $search, $in;
            return ($filter[$in] == $search);
          }

          //echo "Ergebnis :\n";
          $filtered = array_filter($data, 'csvFilter'); 
          
          
         //TEST  print_r($filtered);
        */

         //This is the filter method to be used if php under 4.03 as not supporting array_filter argument
         $number = 0;
        for ($c=0; $c < count($data); $c++){
                if($search == $data[$c][$in]){
                
                        for ($b=0; $b < count($format); $b++) { //$ format contains rubrik, name, code, etc.
                        $filtered[$number][$format[$b]] = $data[$c][$format[$b]]; 
                        //extract "$search $in" | $c-1 as first row is CSVstructure
                        }
                $number++;
                }
                //TEST echo "Found ".$filtered[$c-1][$in]."<br>";
                //TEST elseif($search != $data[$c][$in]){echo "No item found at ".$c." as data is ".$data[$c][$in]."<br>";}
        }    
                //TEST print_r($filtered);
                //TEST echo "Size ".count($filtered)."<br>";
                
                //TEST echo"format hat:".count($format);
                //TEST print_r($format);


        # NEW MODULE View

        # View filtered from mod csv_filter.php

            echo"<table border=0 width=100% cellspacing=0 cellpadding=2>";
            echo "<tr><td colspan=".count($format).">".$search."</td></tr>";
            //generating <td>
            
            if ($show_rows == ""){ //checks if you want to show less or all data in filtered
            $show_rows = count($filtered);
            $show_more = "";
            }
            else{
            $show_more = "<a class=linklist href=\"".$more."\"><img src=\"http://www.o2online.de/images/o2/linklist_arrow_orange.gif\" width=\"9\" height=\"10\" border=\"0\" alt=\"mehr ...\"> weitere</a>";
            }
            
            
            //View different colors for each table row        

        $colorpar=1; //selection parameter for table row color parameter 1/0
            for ($c=0; $c < $show_rows ; $c++) {
                
            //selects the table color
            if ($colorpar==0){    
            echo "<tr bgcolor=#ffffff>\n";
            $colorpar=1;
            }
            else {
            echo "<tr bgcolor=#EBF7F7>\n";
            $colorpar=0;
            }

            for ($b=1; $b < count($format); $b++) { 
            //$ format contains rubrik, name, code, etc. HERE YOU CAN MINIMISE by getting $b started as 1 etc.
                    
               if ($b == 1){
                echo "<td class=txt>"."<img src=\"".$MOD_src_path.strtolower($MOD_img.$filtered[$c][$format[$b]]).".gif\">"."</td>\n";
                }
                else {
                echo "<td class=\"CopyBlue\">".$filtered[$c][$format[$b]]."</td>\n";
                }
                    }
                
            echo"</tr>";
            }
            if ($show_more != ""){ 
            echo "<tr><td colspan=".$b.">".$show_more."</td></tr>";
            }
            
             echo"</table>";
            
            
            
            ?>
        Zuletzt geändert von ; 09.01.2003, 17:22.

        Kommentar

        Lädt...
        X