Ankündigung

Einklappen
Keine Ankündigung bisher.

CSV-Daten auflisten und/oder abfragen?

Einklappen

Neue Werbung 2019

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

  • CSV-Daten auflisten und/oder abfragen?

    Hallo,

    ich habe eine CSV-Datei. Leider habe ich mit solcher Art von Daten noch nicht viel gearbeitet. Deshalb ist meine Frage nun, wie ich mit solchen Dateien arbeiten muss. Wenn ich beispielsweise ne Auflistung von den Daten machen möchte, wie ich setze ich sowas mit verschiedenen SEiten um? Bei mysql ist es ja LIMIT $start, $start+50; aber wie mache ich sowas bei csv-Dateien!

    Und wenn ich ne spezielle ID habe, kann ich dann aus der Datei auch ne speziellen Eintrag mit der ID laden, wie im mysql?

    Gibts eventuell dafür ne Übersichtsseite?`

    Danke für die Hilfe

  • #2
    http://de2.php.net/fgetcsv
    Schau mal hier rein..

    Kommentar


    • #3
      Hallo,
      diese Logik musst du selbst programmieren, ist aber nicht schwer.

      Kommentar


      • #4
        aber wie mache ich sowas bei csv-Dateien!
        Ich weis das es viele Anbieter (Versandhäuser) gibt, die an bestimmte Kunden einen Export ihrer Produkte als CSV oder XML anbieten.
        Wenn also die Vorgabe eine CSV-Datei ist, dann versuche, die Inhalte in deine DB zu importieren.
        Wenn diese Daten dann in deiner DB stehen, kannst du weit besser damit arbeiten.

        Kommentar


        • #5
          Jo, das habe ich auch immer so gehandhabt (bzw. war erst einmal eine Anforderung).

          Andernfalls würde ich vielleicht etwa so rangehen (ungetestst):
          PHP-Code:
          <?php

          class Csv
          {
              protected 
          $rHandle;

              public function 
          __construct($sPath)
              {
                  if (
          file_exists($sPath) || !is_readable($sPath))
                      throw new 
          FileNotExistsException($sPath);

                  
          $this->rHandle fopen($sPath'r');
              }

              public function 
          retrieve($mCondCallback null$iStart null$iLen null)
              {
                  if (
          is_null($iStart))
                      
          $iStart 0;

                  
          fseek($this->rHandle0);

                  
          $iNumResults 0;
                  
          $aResult = array();

                  while (
          false !== ($aRecord fgetcsv($this->rHandle))) {

                      
          $bMatching true;
                      if (!
          is_null($mCondCallback))
                          
          $bMatching call_user_func($mCondCallback$aRecord);

                      if (
          $bMatching && $iNumResults >= $iStart) {
                          
          $aResult[] = $aResult;
                          
          $iNumResults++;
                      }

                      if (!
          is_null($iLen) && $iNumResults $iStart $iLen)
                          continue;
                  }
                  return 
          $aResult;
              }

              public function 
          __destruct()
              {
                  
          fclose($this->rHandle);
              }
          }

          ?>
          Also mit einer Callback-Funktion alle Datensätze prüfen.

          Basti

          Kommentar


          • #6
            Zitat von Chr!s
            http://de2.php.net/fgetcsv
            Schau mal hier rein..
            OK, also ich habe versucht mir jetzt mal damit ein Bild zu machen....aber bei mir kommt jetzt erstmal folgendes raus (wenn ich Zeile 2 auslese):

            1 fields in line 2:
            1036143;"Blub2";"";"Blub1";"Blub2";"Blub3";2897346 8;"Blub4";"Blub5";1.00;"0";"0.00"

            Jetzt muss ich aber diese Daten noch irgendwie allein bekommen. Aktuell schauts jetzt so aus:

            PHP-Code:
            <?php
            $row 
            1;                                   
            $handle fopen ("testdatei.csv","r");             
            while ( (
            $data fgetcsv ($handle1000",")) !== FALSE ) { 
                                                      
               
            $num count ($data);                    
                                                  
               print 
            "

             
            $num fields in line $row
            \n"
            ;
               
            $row++;                               
                                                         
               for (
            $c=0$c $num$c++) {             
                   print 
            $data[$c] . "
            \n"
            ;            
               }
            }
            fclose ($handle);
            ?>
            Danke für die Hilfe

            Kommentar


            • #7
              das hast du aber schön kopiert
              hast du den quellcode bereits verstanden? Deiner Bsp-Zeile zufolge verwendet deine csv Datei Semikolons nicht Kommata.

              Kommentar

              Lädt...
              X