SChleife schleift nicht .... :(

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

  • #31
    DANKE.

    Schluss aus vorbei ... ich mach morgen weiter, das bringt heute nix mehr, folgende Meldung krieg ich nun:

    Column count doesn't match value count at row 2

    Danke für eure Hilfe, ich nerve morgen weiter .... heute bringt es wirklich nix mehr ...

    Kommentar


    • #32
      Ich geh mal davon aus, dass du bei deinen Unix-Kisten auch Englische Fehlermeldungen lesen musst, oder???

      Und ich hatte dir wirklich zugetraut die Klammer selbst zu setzen. Das war keine Absicht!

      Kommentar


      • #33
        PHP-Code:
        $f file($pfad.$datei); ? 

        Kommentar


        • #34
          $f = file($pfad.$datei); ? hää??? Des gehört aber nicht hierher oder täusch ich mich da, ich meine, mittlerweile habe ich ja geschlafen Aber so wirklich durchsteigen tu ich immer noch nicht *verlegenschau*

          Mal sehen was der erste WM Tag so bringt

          Kommentar


          • #35
            Moin!
            Lass dich nicht verwirren, ich bin bei dir.
            Wie sieht denn dein aktueller Code aus?

            Kommentar


            • #36
              Moin zusammen,

              /me hakt sich bei onemorenerd ein und schlendert mit ihm sicher behütet durch den PHP Dschungel

              Okay, danke erst mal für die aufmunternden Worte.


              Hier mein aktueller Code:

              Code:
              <?php
              
              mysql_connect('localhost', 'root', '') or die(mysql_error());
              mysql_select_db('reports') or die(mysql_error());
              
              $sql = "INSERT INTO reports 
                      (jobid, jobsubject, companyname, tfp,  tsp, pagesperfax, 
                      totalminutes, starttime, endtime, totalrecipients, 
                      successful, error_3900, error_3920, error_3932, 
                      error_3935, error_3936) VALUES";
                      
              foreach (glob('*.txt') as $filename) {
                  $sql .= ' (';
                  $file = file($filename);
                  foreach ($file as $no => $line) {
                      $file[$no] = substr($line, strpos($line, ':'));
                      if (strpos($file[$no], '@') !== false {
                          $file[$no] = substr($file[$no], strpos($file[$no], '-'));
                      }
                      $file[$no] = trim(is_numeric($file[$no]) 
                                        ? $file[$no] 
                                        : "'".$file[$no]."'");
                  }
                  $sql .= implode(', ', $file).'),';
              }
              $sql = substr($sql, 0, -1);
              mysql_query($sql) or die(mysql_error().'<hr>'.$sql);
              
              ?>
              UNd die Ausgabe bringt zwar alle Zeilen aber darüber eben:

              Column count doesn't match value count at row 2

              Was ich so übersetze:
              Es werden mehr Spalten benötigt als MySQL zur Vergügung stellt. Richtig?

              Kommentar


              • #37
                Da fehlt erstmal immernoch die Klammer hinter dem if.
                Und ich hoffe, dass jede .txt-Datei im aktuellen Verzeichnis das gleiche Format hat wie 6134.txt!

                Der Fehler entsteht sicher durch die Leerzeile in den Textdateien. Folgender Code entfernt leere Zeilen (und enthält die Klammer nach dem if).
                PHP-Code:
                <?php

                mysql_connect
                ('localhost''root''') or die(mysql_error());
                mysql_select_db('reports') or die(mysql_error());

                $sql "INSERT INTO reports 
                        (jobid, jobsubject, companyname, tfp,  tsp, pagesperfax, 
                        totalminutes, starttime, endtime, totalrecipients, 
                        successful, error_3900, error_3920, error_3932, 
                        error_3935, error_3936) VALUES"
                ;
                        
                foreach (
                glob('*.txt') as $filename) {
                    
                $sql .= ' (';
                    
                $file file($filename);
                    foreach (
                $file as $no => $line) {
                        
                $file[$no] = substr($linestrpos($line':'));
                        if (
                strpos($file[$no], '@') !== false) {
                            
                $file[$no] = substr($file[$no], strpos($file[$no], '-'));
                        }
                        
                $file[$no] = trim(is_numeric($file[$no]) 
                                          ? 
                $file[$no
                                          : 
                "'".$file[$no]."'");
                        if (empty(
                $file[$no])) {
                            unset(
                $file[$no]);
                        }
                    }
                    
                $sql .= implode(', '$file).'),';
                }
                $sql substr($sql0, -1);
                mysql_query($sql) or die(mysql_error().'<hr>'.$sql);

                ?>

                Kommentar


                • #38
                  Bringt mir die gleiche Fehlermeldung, hab sie hier ma als screenshot angehängt, vielleicht hilft es was.
                  Angehängte Dateien

                  Kommentar


                  • #39
                    PHP-Code:
                    <?php

                    mysql_connect
                    ('localhost''root''') or die(mysql_error());
                    mysql_select_db('reports') or die(mysql_error());

                    $sql "INSERT INTO reports\n"
                          
                    ."(jobid, jobsubject, companyname, tfp,  tsp, pagesperfax, "
                          
                    ."totalminutes, starttime, endtime, totalrecipients, "
                          
                    ."successful, error_3900, error_3920, error_3932, "
                          
                    ."error_3935, error_3936)\nVALUES";
                            
                    foreach (
                    glob('*.txt') as $filename) {
                        
                    $sql .= "\n(";
                        
                    $file file($filename);
                        foreach (
                    $file as $no => $line) {
                            
                    $file[$no] = trim(substr($linestrpos($line':')+1));
                            if (
                    strpos($file[$no], '@') !== false) {
                                
                    $file[$no] = trim(substr($file[$no], 0strpos($file[$no], '-')-1));
                            }
                            if (empty(
                    $file[$no])) {
                                unset(
                    $file[$no]);
                            }
                            
                    $file[$no] = is_numeric($file[$no]) 
                                            ? 
                    $file[$no
                                            : 
                    "'".$file[$no]."'";
                        }
                        
                    $sql .= implode(', '$file).'),';
                    }
                    $sql substr($sql0, -1);
                    echo 
                    $sql;
                    mysql_query($sql) or die(mysql_error().'<hr>'.$sql);

                    ?>

                    Kommentar


                    • #40
                      Gleiche Fehlermeldung .... ich hätte nicht gedacht das des so schwer wird, ich bereu es jetzad schon Aber so lange ihr nicht aufgebt tu ich es auch nicht

                      Kommentar


                      • #41
                        Dann häng mal einige deiner .txt-Dateien hier an, bei mir funktionierts nämlich so, allerdings habe ich zum Testen die 6134.txt hergenommen, die du gestern in dem anderen Thread gepostet hattest.

                        Kommentar


                        • #42
                          here it is ...
                          Angehängte Dateien

                          Kommentar


                          • #43
                            Tja die Dateien sind nicht alle gleichen Formats. Die zweite enthält Zeilen, die es in der ersten nicht gibt.
                            Der Code berücksichtigt das bisher nicht.

                            Da ich nun nicht weiß, ob wenigstens eine der Dateien alle Zeilen enthält, kann ich erstmal nicht weiterhelfen. Ohne das volle Format zu kennen, kann ich nur einen allgemeinen Schnipsel anbieten, der wenigstens erstmal alle Dateien in ein großes Array zimmert.

                            PHP-Code:
                            <?php

                            $values 
                            = array();
                            foreach (
                            glob('*.txt') as $filename) {
                                
                            $file file($filename);
                                foreach (
                            $file as $no => $line) {
                                    
                            $key trim(substr($line0strpos($line':')));
                                    if (empty(
                            $key)) {
                                        continue;
                                    }
                                    
                            $val[$key] = trim(substr($linestrpos($line':')+1));
                                    if (empty(
                            $val[$key])) {
                                        unset(
                            $val[$key]);
                                        continue;
                                    }
                                    if (
                            strpos($val[$key], '@') !== false) {
                                        
                            $val[$key] = trim(substr($val[$key], 0strpos($val[$key], '-')-1));
                                    }
                                }
                                
                            $values[$filename] = $val;
                            }
                            print_r($values);

                            ?>
                            Gib mal bitte genau an, welche Zeilen in welche Tabellenspalte sollen, welchen Datentyp diese hat und welche Zeilen mit welchen Werten in den Dateien vorkommen können.

                            (Hast du ein Glück, dass ich heute frei habe. Aber spätestens 16 Uhr ist Essig, dann geh ich Fusi gucken.)

                            Kommentar


                            • #44
                              DANKE DIR !!!!! Hör mir bloß mit WM auf ... ich arbeite im Kunstpark Ost in München als Türsteher (nebenbei) und war gerade für 100 Euro nochmal Zeug kaufen welches ich wohl brauchen werde

                              Ich bin froh wenn es vorbei ist.

                              Die Daten in der ZIP sind dann auch die Life Daten .... nur kann man davon ausgehen das bei jobsubject immer vierstelligezahl_emailadresse_datum steht, wenn nun also in einer textdatei steht lala@lulu_de dann is das ein Eingabefehler welche in Zukunft vermieden werden.

                              Anbei noch ein screen der mysql
                              Angehängte Dateien

                              Kommentar


                              • #45
                                PHP-Code:
                                <?php

                                mysql_connect
                                ('localhost''root''') or die(mysql_error());
                                mysql_select_db('reports') or die(mysql_error());

                                $sqlcols = array(
                                                
                                'jobid' => 'Job ID',
                                                
                                'jobsubject' => 'Job Subject',
                                                
                                'companyname' => 'Company',
                                                
                                'tfp' => 'Total Faxed Pages',
                                                
                                'tsp' => 'Total Successful Pages'
                                                
                                'pagesperfax' => 'Pages per Fax',
                                                
                                'totalminutes' => 'Total Minutes',
                                                
                                'starttime' => 'Start time',
                                                
                                'endtime' => 'End time'
                                                
                                'totalrecipients' => 'Total Recipients',
                                                
                                'successful' => 'Successful',
                                                
                                'error_3900' => '3900 (Blocked)',
                                                
                                'error_3920' => '3920 (Busy)',
                                                
                                'error_3932' => '3932 (Inaccessible)',
                                                
                                'error_3935' => '3935 (No answer)',
                                                
                                'error_3936' => '3936 (Voice)'
                                            
                                );

                                $sql "INSERT INTO `reports`\n(`".implode('`, `'array_keys($sqlcols))."`)\nVALUES";

                                $values = array();

                                foreach (
                                glob('*.txt') as $filename) {
                                    
                                $file file($filename);
                                    
                                $sql .= " \n(";
                                    foreach (
                                $file as $no => $line) {
                                        
                                $key trim(substr($line0strpos($line':')));
                                        if (empty(
                                $key) || !in_array($key$sqlcols)) {
                                            continue;
                                        }
                                        
                                $val[$key] = trim(substr($linestrpos($line':')+1));
                                        if (empty(
                                $val[$key])) {
                                            unset(
                                $val[$key]);
                                            continue;
                                        }
                                        if (
                                strpos($val[$key], '@') !== false) {
                                            
                                $val[$key] = trim(substr($val[$key], 0strpos($val[$key], '-')-1));
                                        }
                                        
                                $val[$key] = is_numeric($val[$key]) 
                                                        ? 
                                $val[$key
                                                        : 
                                "'".mysql_real_escape_string($val[$key])."'";
                                    }
                                    foreach (
                                $sqlcols as $key) {
                                        if (!isset(
                                $val[$key])) {
                                            
                                $val[$key] = 'NULL';
                                        }
                                    }
                                    
                                $sql .= implode(", \t"$val).'),';
                                    
                                $values[$filename] = $val;
                                }

                                $sql substr($sql0, -1);

                                echo 
                                '<pre>';
                                print_r($values);
                                echo 
                                $sql;
                                echo 
                                '</pre>'

                                mysql_query($sql) or die(mysql_error().'<hr>'.$sql);

                                ?>
                                Keine schöne Lösung, denn inzwischen hat das Problem Ausmaße angenommen, bei denen ich eher mit regulären Ausdrücken arbeiten würde, aber das sollte erstmal funktionieren.

                                Kommentar

                                Lädt...
                                X