2016-05-31 13 views
1

Ich habe 2 Funktion, insertInto für das Einfügen von Daten von einem Array in einer Mysql-Datenbank, und checkRow, wo ich überprüfen, ob die aktuelle Zeile von meinem Array bereits existiert. Die Struktur des Arrays tableArray ist $ tableArray ["Tabelle2"] [Nummer der Zeile] [Anzahl der Spalten]. Wenn ich jedoch die Seite aktualisiere, fügt sie immer mehr Zeilen in die Datenbank ein und vermeidet es, zu überprüfen, ob die Zeile bereits existiert.endlos für Schleife beim Aufruf einer Funktion

die Funktion InsertInto:

function insertInto($i, $tableArray, $conn){ //insert into db 
    $dateFormated = split('/', $tableArray["Tabelle2"][$i][3]); 
    $date = $dateFormated[2].'-'.$dateFormated[0].'-'.$dateFormated[1]; 

    $insertInto = "insert into Excel(Arbeitsplatz, Auftragsart, Auftragsnummer, Datum, Tageszeit, Erklaerung, Beschreibung, AG, StdArt, Anwender) 
    values('".$tableArray["Tabelle2"][$i][0]."', '".$tableArray["Tabelle2"][$i][1]."', '".$tableArray["Tabelle2"][$i][2]."', '".$date."', 
    '".$tableArray["Tabelle2"][$i][4]."', '".$tableArray["Tabelle2"][$i][5]."', '".$tableArray["Tabelle2"][$i][6]."', 
    '".$tableArray["Tabelle2"][$i][7]."', '".$tableArray["Tabelle2"][$i][8]."', '".$tableArray["Tabelle2"][$i][9]."')"; 
    if($conn->query($insertInto) === true){echo "Datensatz Nr. ".$i." wurde eingefuegt.<br />";}else{echo "Datensatz Nr. ".$i." wurde nicht eingefuegt.<br />";} 
} 

die Funktion checkRow:

function checkRow($i, $tableArray, $conn){ //if(... == ...) 
    $count = "select count(*) from Excel;"; 
    $res = $conn->query($count); 
    $row = $res->fetch_assoc(); 
    $rowsNum = $row["count(*)"];  
    if($rowsNum == 0){ 
     insertInto($i, $tableArray, $conn); 
    } else { 
     for($b = 1; $b <= $rowsNum; $b++){ 
      $select = "select * from Excel where ExcelID = '".$b."'"; 
      $result = $conn->query($select); 
      $row = $result->fetch_assoc(); 
      if($tableArray["Tabelle2"][$i][0] == $row["Arbeitsplatz"] && $tableArray["Tabelle2"][$i][1] == $row["Auftragsart"] && $tableArray["Tabelle2"][$i][2] == $row["Auftragsnummer"] && $tableArray["Tabelle2"][$i][4] == $row["Tageszeit"] && $tableArray["Tabelle2"][$i][5] == $row["Erklaerung"] && $tableArray["Tabelle2"][$i][6] == $row["Beschreibung"] && $tableArray["Tabelle2"][$i][7] == $row["AG"] && $tableArray["Tabelle2"][$i][8] == $row["StdArt"] && $tableArray["Tabelle2"][$i][9] == $row["Anwender"]){ 
       echo "Datensatz ist bereits vorhanden.<br />"; 
      } else { 
       insertInto($i, $tableArray, $conn); 
      } 
     } 
    } 
} 

die Schleife, wo I die Funktion checkRow nennen:

for($g = 1; $g <= count($tableArray["Tabelle2"]); $g++){ 
    checkRow($g, $tableArray, $conn); 
} 

Antwort

0

I löste es, die p Problem war in der Funktion checkRow();, ich habe immer die aktuelle Zeile von meinem Array mit 1 Zeile in der Mysql-Datenbank überprüft, und nicht alle von ihnen. Durch Hinzufügen von $counter, das immer + 1 zählt, wenn die aktuelle Zeile im Array nicht mit der Zeile in der Datenbank übereinstimmt, habe ich das Problem gelöst.

aktualisiert Funktion checkRow:

function checkRow($i, $tableArray, $conn){ //if(... == ...) 
      $count = "select count(*) from Excel;"; 
      $res = $conn->query($count); 
      $row = $res->fetch_assoc(); 
      $rowsNum = $row["count(*)"]; 
      $counter = 0; 

      if($rowsNum == 0){ 
       insertInto($i, $tableArray, $conn); 
       } elseif($rowsNum > 0) { 
        for($b = 1; $b <= $rowsNum; $b++){ 
         $select = "select * from Excel where ExcelID = '".$b."'"; 
         $result = $conn->query($select); 
         $row = $result->fetch_assoc(); 
         if($tableArray["Tabelle2"][$i][0] == $row["Arbeitsplatz"] && $tableArray["Tabelle2"][$i][1] == $row["Auftragsart"] && $tableArray["Tabelle2"][$i][2] == $row["Auftragsnummer"] && $tableArray["Tabelle2"][$i][4] == $row["Tageszeit"] && $tableArray["Tabelle2"][$i][5] == $row["Erklaerung"] && $tableArray["Tabelle2"][$i][6] == $row["Beschreibung"] && $tableArray["Tabelle2"][$i][7] == $row["AG"] && $tableArray["Tabelle2"][$i][8] == $row["StdArt"] && $tableArray["Tabelle2"][$i][9] == $row["Anwender"]){ 
           echo "Datensatz ist bereits vorhanden.<br />"; 
          } else {$counter++;} 
        } 
        if($counter == $rowsNum){ 
         insertInto($i, $tableArray, $conn); 
         $counter = 0; 
        } 
       } 
     } 
Verwandte Themen