csv-datei in mysql schreiben klappt nur teilweise, wieso ?

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

  • csv-datei in mysql schreiben klappt nur teilweise, wieso ?

    Hi leute,

    ich versuch grad die daten aus einer csv datei in mysql einzufügen, was leider nicht so erfolgreich klappen will

    ich schaffe, es zwar die richtigen daten an den richtigen platz einzufügen, aber leider hört das einfügen der datensätze nach dem ersten Eintrag auf, und ich weiß nicht wieso !
    in der csv datei sind aber 4 datensätze...

    kann mir jemand sagen, was ich da falsch mache ??
    über hilfe würde ich mich wie immer freuen !


    PHP-Code:
    $dateiname="admin/language_files/language_uk_1.csv";
    $datei=fopen($dateiname,"r");
    $daten=fread($datei,filesize($dateiname));
    fclose($datei);
    $datensaetze=explode("\n",$daten);


    for(
    $i=0;$i<sizeof($datensaetze);$i++) 
       {
         
    $datenfeld[$i]=explode("-%-",$datensaetze[$i]);
         
    mysql_query("INSERT INTO uk (id, text_id, name, info, active) 
    VALUES
    ('"
    .$datenfeld[$i][0]."','".$datenfeld[$i][1]."','".$datenfeld[$i][2]."','".$datenfeld[$i][3]."','".$datenfeld[$i][4]."')");
       }

    mysql_close(); 

  • #2
    Hi,

    erstens : Bitte Zeilen umbrechen

    zweitens :

    PHP-Code:
    mysql_query("INSERT INTO uk (id, text_id, name, info, active) 
    VALUES
    ('"
    .$datenfeld[$i][0]."','".$datenfeld[$i][1]."','".$datenfeld[$i][2]."','".$datenfeld[$i][3]."','".$datenfeld[$i][4]."')"); 
    dürfte falsch sein. Bei mir klappt es mit

    PHP-Code:
    mysql_query("INSERT INTO uk (id, text_id, name, info, active) 
    VALUES
    ('
    $datenfeld[$i][0]', '$datenfeld[$i][1]', '$datenfeld[$i][2]', '$datenfeld[$i][3]', '$datenfeld[$i][4]')"); 
    drittens : Bitte Fehlerausgabe einbauen .... or die (mysql_error());

    viertens : wird die csv komplett und korrekt ausgelesen ?

    PS : Bei mir klappt das Auslesen und (testweise) Anzeigen so :

    PHP-Code:
    $handle fopen ("musikarchiv.csv","r") or die("Öffnen fehlgeschlagen");
    while ( (
    $data fgetcsv ($handle1000";")) != FALSE )
      {
      echo 
    $data[0]." - ".$data[1]." - ".$data[2]." - ".$data[3]." - ".$data[4]."<br>";
      } 
    Zuletzt geändert von Tommy75; 25.10.2005, 21:02.

    Kommentar


    • #3
      ja, der code ist grundlage meiner versuche !

      aber leider klappt dein INSERT nicht,

      das sieht in der Db dann so aus :

      0 0 Array[2] Array[3] 0

      statt

      0 1001 starter 1 starter kit 1 Beschreibung 1

      kann der fehler daran liegen, dass er alles als ein array behandelt, statt 4, denn in meiner csv-datei hab ich 4 einträge.

      Kompletter Inhalt meiner CSV :
      0-%-1001-%-starter 1-%-starter kit 1 Beschreibung-%-1;
      1-%-1002-%-starter kit 2-%-starter kit 2 Beschreibung-%-2;
      2-%-1003-%-starter kit 3-%-starter kit 3 Beschreibung-%-1;
      3-%-1004-%-starter kit 4-%-starter kit 4 Beschreibung-%-1;

      Kommentar


      • #4
        Sieh dir erstmal an, was beim auslesen rauskommt. Also nicht gleich in die db schreiben, sondern erstmal per echo ausgeben lassen. In deinem Fall dürfte der Code zum auslesen so aussehen :

        PHP-Code:
        $handle fopen ("admin/language_files/language_uk_1.csv","r") or die("Öffnen fehlgeschlagen");
        while ( (
        $data fgetcsv ($handle1000"-%-")) != FALSE )
          {
          echo 
        $data[0]." - ".$data[1]." - ".$data[2]." - ".$data[3]." - ".$data[4]."<br>";
          } 

        Kommentar


        • #5
          hmm......jetzt verzweifle ich langsam

          hab das anzeigen probiert

          orginale ausgabe :
          0 - % - 1001 - % - starter 1


          da fehlen also die letzten beiden angaben des ersten datensatzes....
          und 3 von 4 ganzen datensätzen

          der fehler muss also in der csv datei liegen ??

          aber wo, denn alle einträge sehen für mich gleich aus , oder !?

          Kommentar


          • #6
            habs gelöst........

            *freudoppelt* <-- weil ich es mal selber geschafft habe !

            es war nicht das trenn-zeichen der datzensätze oder die schleife, sondern das :

            $datensaetze=explode("\n",$daten); war der fehler

            ich nutze doch gar kein \n , sondern ein ;

            nun funzt es °!

            thread ende

            Kommentar


            • #7
              Oo Na DAS hätte ich ja eigentlich auch sehen müssen

              Also sorry, dass ich dir jetzt Schreibarbeit aufgehalst habe, die völlig unnötig war

              Kommentar

              Lädt...
              X