TXT-File aufbröseln

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

  • #16
    sieh selbst !

    Kommentar


    • #17
      PHP-Code:
      echo "<pre>";
      $CSV "test.txt";
      $filearray file($CSV);
      echo 
      $counter count($filearray);
      //$filearray = file("$CSV");

      for($t=0$t<$counter$t++)
      {
         echo 
      $t."\\n";
         
      $durchlauf = array(7,3,7,3,9,12,15,3,3,3,7,3);

         
      $k=0;
         for (
      $i=0$i<count($durchlauf); $i++)
         {
           echo 
      $i."\\n";
            
      $startwert $i==?  $i $durchlauf[$i-1]+$k;
            
      $item[] = substr($filearray[$t],$startwert,$durchlauf[$i]);
            
      $k=$k+$durchlauf[$i-1];
         }
      }
      print_r($item); 
      lad ^^mal bitte online

      und was heisst "Ich bekomme immer nur den ersten Datensatz ???" ?
      Kissolino.com

      Kommentar


      • #18
        So !


        Wie du siehst, wird ja nur ein Datensatz ausgegeben !
        Aber in meiner Beispiel-TXT befinden sich 2 Datensätze ???

        Kommentar


        • #19
          ne, alle datensaätze stehen in einem array !
          PHP-Code:
          $CSV "test.txt";
          $filearray file($CSV);
          $counter count($filearray);

          for(
          $t=0$t<$counter$t++)
          {
             
          $durchlauf = array(7,3,7,3,9,12,15,3,3,3,7,3);

             
          $k=0;
             for (
          $i=0$i<count($durchlauf); $i++)
             {
                
          $startwert $i==?  $i $durchlauf[$i-1]+$k;
                
          $item[$t][] = substr($filearray[$t],$startwert,$durchlauf[$i]); // <= hier lag dein denkfehler
                
          $k=$k+$durchlauf[$i-1];
             }
          }

          for(
          $i=0;count($item);$i++)
          {
            
          print_r($item[$i]);

          es stand bisher alles in einem array, nun sind es mehrere
          über $item[0][0] - $item[0][11] kommst du an den ersten datensatz, den 2. mit $item[1][0] - $item[1][11], usw ...
          Kissolino.com

          Kommentar


          • #20
            Hab' deinen Code jetzt mal so übernommen ! Aber die Seite läßt sich jetzt nicht mehr laden ???

            Kommentar


            • #21
              OK, Seite geht jetzt wieder !

              ... und mir fällt es wie Schuppen aus den Haaren - das ist des Rätsels Lösung !

              Vielen Dank, Wurzel ! Hast mir sehr geholfen !

              Kommentar


              • #22
                na dann, fröhliches (weiter) coden
                n8
                Kissolino.com

                Kommentar


                • #23
                  Ich werd' noch wahnsinnig !!! Wieso funzt das nicht:

                  PHP-Code:
                  $CSV "test.txt";
                  $filearray file("$CSV");
                  $counter count($filearray);

                  for(
                  $t=0$t<$counter$t++)
                  {
                     
                  $durchlauf = array(7,3,7,3,9,12,15,3,3,3,7,3);
                     
                  $k=0;
                     for (
                  $i=0$i<count($durchlauf); $i++)
                     {
                        
                  $startwert $i==?  $i $durchlauf[$i-1]+$k;
                        
                  $item[] = substr($filearray[$t],$startwert,$durchlauf[$i]);
                        
                  $k=$k+$durchlauf[$i-1];

                     }
                     
                  $res mysql_query("replace into bestaende values ('$item[0]', '$item[1]', '$item[2]', '$item[3]', '$item[4]', '$item[5]', '$item[6]', '$item[7]', '$item[8]', '$item[9]', '$item[10]', '$item[11]')") or die(mysql_error());

                  Der erste Datensatz der TXT-Datei wird zweimal in die DB eingetragen und der zweite Datensatz überhaupt nicht ???

                  Kommentar


                  • #24
                    PHP-Code:
                    $CSV "test.txt";
                    $filearray file("$CSV");
                    $counter count($filearray);

                    for(
                    $t=0$t<$counter$t++)
                    {
                       
                    $durchlauf = array(7,3,7,3,9,12,15,3,3,3,7,3);
                       
                    $k=0;
                       for (
                    $i=0$i<=count($durchlauf); $i++)
                       {
                          
                    $startwert $i==?  $i $durchlauf[$i-1]+$k;
                          
                    $item[] = substr($filearray[$t],$startwert,$durchlauf[$i]);
                          
                    $k=$k+$durchlauf[$i-1];

                       }
                       
                    $res mysql_query("replace into bestaende values ('$item[0]', '$item[1]', '$item[2]', '$item[3]', '$item[4]', '$item[5]', '$item[6]', '$item[7]', '$item[8]', '$item[9]', '$item[10]', '$item[11]')") or die(mysql_error());
                    $k 0;

                    probier ma
                    mfg

                    Kommentar


                    • #25
                      @trashar
                      wozu setzt du ein 2. mal $k=0

                      @honny
                      - hatten wir uns nicht auf ein mehrdimensionales array geeinigt?

                      - innerhalb der ersten schleife ($t...) bleibt $item und sein inhalt erhalten,
                      --> d.h. beim 2. durchlauf geht es mit $item[12] für den 2. datensatz weiter

                      - entweder nimmst du meinen ersten vorschlag auf, mit $item[$t][] zu arbeiten
                      oder
                      - setz vor dem "for($i=0....) mal "$item=array();" ein
                      Kissolino.com

                      Kommentar


                      • #26
                        Juuuuuuuuuuuuuuhhhhhhhhhhuuuuuuuuu !!! Es funzt !!!

                        Ich weiß' zwar nicht warum, aber mit deinem ersten Vorschlag ("$item[$t][]") hatte es nicht geklappt.
                        Mit der zweiten Idee ("$item=array();") ging 's dann !

                        Danke !

                        Kommentar


                        • #27
                          mit $item[$t][]:
                          PHP-Code:
                          $CSV "test.txt";
                          $filearray file("$CSV");
                          $counter count($filearray);

                          for(
                          $t=0$t<$counter$t++)
                          {
                             
                          $durchlauf = array(7,3,7,3,9,12,15,3,3,3,7,3);
                             
                          $k=0;
                             for (
                          $i=0$i<count($durchlauf); $i++)
                             {
                                
                          $startwert $i==?  $i $durchlauf[$i-1]+$k;
                                
                          $item[$t][] = substr($filearray[$t],$startwert,$durchlauf[$i]);
                                
                          $k=$k+$durchlauf[$i-1];

                             }
                             
                          $res mysql_query("replace into bestaende values ('$item[$t][0]', '$item[$t][1]', '$item[$t][2]', ...)") or die(mysql_error());

                          mit arrays solltest du dich mal intensiver beschäftigen.
                          Kissolino.com

                          Kommentar


                          • #28
                            So hatte ich es ja auch probiert, ging aber nicht !
                            Na egal, Hauptsache es läuft jetzt !

                            Meine 20.000 Datensätze waren übrigens in ca. 12 sec. in die DB geschrieben. Suuuuuuuuuuper !!!

                            Kommentar

                            Lädt...
                            X