csv per script einlesen

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

  • csv per script einlesen

    Also um es gleich zu Beginn zu sagen,
    ich bin ein absoluter Grünschnabel in Sachen PHP .
    Ich versuche gerade ein script zu schreiben welches mir
    eine CSV Datei in eine Tabelle einliest! Irgendwie klappt es
    aber nicht so wie es soll! Es liest zwar Daten in die Tabelle,
    aber total zerhackt! Genauer gesagt stehen Daten in den
    falschen spalten! Was mache ich Falsch?



    Hier mal der code:
    Code:
    <?php 
    
    
    mysql_connect('localhost', 'User', 'Mein Passwort'); 
    mysql_select_db('Meine Datenbank'); 
    
    $fp = fopen('superclix_diego.csv', 'r'); 
    while($zeile = fgets($fp, 1024)) { 
      $zeile = explode(' ', str_replace('"', '', $zeile)); 
    
      $ID = $zeile[1]; 
      $Produktname = $zeile[2]; 
      $URL = $zeile[3]; 
      $OpeURL = $zeile[4]; 
      $Beschreibung = $zeile[5]; 
      $Bildurl = $zeile[6]; 
      $Shoprubrik = $zeile[7]; 
      $Artno = $zeile[8]; 
      $Ppnr = $zeile[9]; 
      $Preis = $zeile[10];
    
      echo mysql_query('insert into MeineTabelle (ID, Produktname, URL, OpeURL, Beschreibung, Bildurl, Shoprubrik, Artno, Ppnr, Preis) values ("'.$ID.'", "'.$Produktname.'", "'.$URL.'", "'.$OpeURL.'", "'.$Beschreibung.'", "'.$Bildurl.'", "'.$Shoprubrik.'", "'.$Artno.'", "'.$Ppnr.'", "'.$Preis.'")').'<br>'; 
      flush(); 
    } 
    
    mysql_close(); 
    echo '<b>fertig!</b>'; 
    ?>
    Die Tabelle ist wie folgt strukturiert:
    ID Produktname URL OpeURL Beschreibung Bildurl Shoprubrik Artno Ppnr Preis

    Was mache ich falsch?

    Möchte dort die CSV von superclix.de einlesen.

    Würde mich sehr freuen wenn mir jemand helfen kann!
    Wie gesagt bin ein absoluter grünschnabel in php!

  • #2
    Bitte PHP-Tags nutzen und Code umbrechen!

    Warum eigentlicht nicht fgetcsv()?

    Kommentar


    • #3
      Brich deinen Code um !!
      Mach mal:
      PHP-Code:
      mysql_connect('localhost''User''Mein Passwort'); 
      mysql_select_db('Meine Datenbank'); 

      $fp fopen('superclix_diego.csv''r'); 
      while(
      $zeile fgets($fp1024)) { 
        
      $zeile explode(' 'str_replace('"'''$zeile)); 

        
      $temp[] = $zeile[1]; 
        
      $temp[]  = $zeile[2]; 
        
      $temp[]  = $zeile[3]; 
        
      $temp[]  = $zeile[4]; 
        
      $temp[]  = $zeile[5]; 
        
      $temp[]  = $zeile[6]; 
        
      $temp[]  = $zeile[7]; 
        
      $temp[]  = $zeile[8]; 
        
      $temp[] = $zeile[9]; 
        
      $temp[] = $zeile[10];
        
      var_dump($temp);
        exit;
      ....

      Und schau ob die Array Elemente die gewünschten Werte haben.
      Verwendest du in der Text Datei immer den gleichen Trenner ?

      Gruss

      tobi
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        ehm wassen das für ne Schleife?

        Wie siehtens mit sowas aus?
        PHP-Code:
        $i 0;
        while(
        $zeile fgets($fp1024)) {   $zeile explode(' 'str_replace('"'''$zeile)); 
          
        $temp[] = $zeile[$i]; 
          
        $i++;
        }
        var_dump($temp); 
        Ich Versteh wirklich nicht, was deine Schleife für einen Sinn macht - kan nur mit 10 Zeilen umgehen... hä??? Und wahrscheinlich wird Zeile bei 0 anfangen - ausser du willst natürlich die erste Zeile weglassen.

        Dann einfach
        PHP-Code:
        $i 1
        Aber anders gesehen, wenn $zeile doch schon ein array ist, warum nicht
        PHP-Code:
        $zeile fgets($fp1024)
        var_dump($zeile); 
        EDIT:
        Oh, verzeiht mir, bin noch nicht wach - natürlich ist das waa du da machst ok jahlives. Man sollte vielleicht noch den Temp-Array Zeilenweise füllen, so machst du ja für jedes Feld ne neue Zeile im Array
        PHP-Code:

        while($zeile = ....){
          
        $zeile "" //hier das explode
          
        $temp[] = array($zeile[1], $zeile[2], ...);


        Zuletzt geändert von prego; 05.08.2005, 10:25.

        Kommentar


        • #5
          Meint ihr so??

          <?php


          mysql_connect('localhost', 'User', 'Passwort');
          mysql_select_db('Datenbank');

          $fp = fopen('superclix_diego.csv', 'r');
          while($zeile = fgets($fp, 1024)) {
          $zeile = explode(' ', str_replace('"', '', $zeile));

          $temp[] = $zeile[1];
          $temp[] = $zeile[2];
          $temp[] = $zeile[3];
          $temp[] = $zeile[4];
          $temp[] = $zeile[5];
          $temp[] = $zeile[6];
          $temp[] = $zeile[7];
          $temp[] = $zeile[8];
          $temp[] = $zeile[9];
          $temp[] = $zeile[10];
          var_dump($temp);
          exit;


          echo mysql_query('insert into superclix (ID, Produktname, URL, OpeURL, Beschreibung, Bildurl, Shoprubrik, Artno, Ppnr, Preis) values ("'.$ID.'", "'.$Produktname.'", "'.$URL.'", "'.$OpeURL.'", "'.$Beschreibung.'", "'.$Bildurl.'", "'.$Shoprubrik.'", "'.$Artno.'", "'.$Ppnr.'", "'.$Preis.'")').'<br>';
          flush();
          }

          mysql_close();
          echo '<b>fertig!</b>';
          ?>

          Kommentar


          • #6
            Man sollte vielleicht noch den Temp-Array Zeilenweise füllen...
            Wäre stilistisch noch schöner Aber ich denke für'n var_dump() sollte die 0815 Version auch funzen

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              @Diego
              Und was gibt jetzt der var_dump() aus ? Stimmen die Werte der Elemente mit deinen Erwartungen überein ?

              Gruss

              tobi
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                Gibt mir folgendes aus!


                array(10) { [0]=> NULL [1]=> NULL [2]=> NULL [3]=> NULL [4]=> NULL [5]=> NULL [6]=> NULL [7]=> NULL [8]=> NULL [9]=> NULL }

                Kommentar


                • #9
                  => die Zeile wird nicht korrekt zerlegt. Nochmals die Frage: Was ist dein Trennzeichen ???

                  Gruss

                  tobi
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    tabulator

                    Trennzeichen ist Tabulator!
                    komme einfach nicht weiter!

                    Kommentar


                    • #11
                      code sieht jetzt wie folgt aus!

                      <?php


                      mysql_connect('localhost', 'web58', 'fuchs04');
                      mysql_select_db('usr_web58_1');

                      $fp = fopen('superclix_diego.csv', 'r');
                      while($zeile = fgets($fp, 1024)) {
                      $zeile = explode('\t', str_replace('"', '', $zeile));


                      $ID = $zeile[0];
                      $Produktname = $zeile[1];
                      $URL = $zeile[2];
                      $OpeURL = $zeile[3];
                      $Beschreibung = $zeile[4];
                      $Bildurl = $zeile[5];
                      $Shoprubrik = $zeile[6];
                      $Artno = $zeile[7];
                      $Ppnr = $zeile[8];
                      $Preis = $zeile[9];

                      echo mysql_query('insert into superclix (ID, Produktname, URL, OpeURL, Beschreibung, Bildurl, Shoprubrik, Artno, Ppnr, Preis) values ("'.$ID.'", "'.$Produktname.'", "'.$URL.'", "'.$OpeURL.'", "'.$Beschreibung.'", "'.$Bildurl.'", "'.$Shoprubrik.'", "'.$Artno.'", "'.$Ppnr.'", "'.$Preis.'")').'<br>';
                      flush();
                      }

                      mysql_close();
                      echo '<b>fertig!</b>';
                      ?>

                      Aber steht nun alles in der ersten spallte!

                      Kommentar


                      • #12
                        PHP-Code:
                        explode('\t'str_replace('"'''$zeile)); 
                        Sachen wie Vars und Steuerzeichen werden nur so ins Strings gefunden "\t" bzw "$var".

                        Gruss

                        tobi
                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar


                        • #13
                          hilft nix

                          hm, hab es geändert aber steht trotz allem noch alles in eine Spalte gequetscht! hat ekienr mehr eine Idee wie der code aussehen muss?

                          Kommentar


                          • #14
                            Und jetzt nochmals ein var_dump($zeile) gefolgt von einem exit. Hat das Array 10 Elemente ??

                            Gruss

                            tobi
                            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                            Kommentar


                            • #15
                              code jetzt wie folg!

                              <?php


                              mysql_connect('localhost', 'user', 'passw');
                              mysql_select_db('datenbank');

                              $fp = fopen('superclix_diego.csv', 'r');
                              while($zeile = fgets($fp, 1024)) {
                              $zeile = explode("\t", str_replace('"', '', $zeile));


                              $ID = $zeile[0];
                              $Produktname = $zeile[1];
                              $URL = $zeile[2];
                              $OpeURL = $zeile[3];
                              $Beschreibung = $zeile[4];
                              $Bildurl = $zeile[5];
                              $Shoprubrik = $zeile[6];
                              $Artno = $zeile[7];
                              $Ppnr = $zeile[8];
                              $Preis = $zeile[9];
                              var_dump($zeile);
                              exit;

                              echo mysql_query('insert into superclix (ID, Produktname, URL, OpeURL, Beschreibung, Bildurl, Shoprubrik, Artno, Ppnr, Preis) values ("'.$ID.'", "'.$Produktname.'", "'.$URL.'", "'.$OpeURL.'", "'.$Beschreibung.'", "'.$Bildurl.'", "'.$Shoprubrik.'", "'.$Artno.'", "'.$Ppnr.'", "'.$Preis.'")').'<br>';
                              flush();
                              }

                              mysql_close();
                              echo '<b>fertig!</b>';
                              ?>


                              Ergebniss:

                              array(10) { [0]=> string(2) "ID" [1]=> string(11) "Produktname" [2]=> string(3) "URL" [3]=> string(6) "OpeURL" [4]=> string(12) "Beschreibung" [5]=> string(7) "Bildurl" [6]=> string(10) "Shoprubrik" [7]=> string(5) "Artno" [8]=> string(4) "Ppnr" [9]=> string(6) "Preis " }

                              Kommentar

                              Lädt...
                              X