2016-04-22 18 views
1

Ich habe den folgenden Code, um 1 Zeile in mehrere Zeile oder Datensatz zu erstellen Stücklistenstruktur für eine Montage Artikel zu transponieren Einige haben 3 Komponente/Artikel die anderen haben 2,1 oder mehr .Wie kann ich Schleife und setzen Wert in einem Feld

Wenn ich dieses Skript ausfühle Es dauert die letzte INSERT-Abfrage, um einen Datensatz zu erstellen, wenn Assembly nur eine Komponente hat. Auf dem angehängten Bild auf dem ersten Datensatz gelb hervorgehoben - das Feld bomEntry sollte 1 statt 3 anzeigen, da es nur eine Komponente hat.

Wenn die Baugruppe zwei Stücklisten hat, sagen wir, die Baugruppe A hat die Komponenten A1 und A2. Es sollte angezeigt werden als

Item PartiD bomEntry 
    A  A1  1 
    A  A2  2 

Derzeit beim Einfügen meiner Daten in einer Tabelle sieht so aus. enter image description here

mysqli_query($con,"INSERT INTO table1 (ItemID,partid,qty,rev,bomEntry) VALUES ($itemid, $bom1,'1','A','1')"); 
    mysqli_query($con,"INSERT INTO table1 (ItemID,partid,qty,rev,bomEntry) VALUES ($itemid, $bom2,'1','A','2')"); 
    mysqli_query($con,"INSERT INTO table1 (ItemID,partid,qty,rev,bomEntry) VALUES ($itemid, $bom3,'1','A','3')"); 

Wie kann ich zählen Anzahl der Komponenten und Set bomEntry

Antwort

1

eine Variable verwenden, die Sie zwischen den einzelnen INSERT Abfrage erhöhen. Verwenden Sie auch eine vorbereitete Abfrage, anstatt Variablen zu ersetzen.

Überprüfen Sie vor dem Einfügen jeder Komponente, ob die Komponente tatsächlich im Datensatz vorhanden ist. alot

$stmt = myqsli_prepare($con, "INSERT INTO table1 (ItemID,partid,qty,rev,bomEntry) VALUES (?, ?,'1','A',?)"); 
mysqli_stmt_bind_param($stmt, "iii", $itemid, $bom, $bomEntry) or die(mysqli_error($con)); 

$recordd = $tv->search(30008475847254898, 's=2'); 
foreach($recordd as $data2) { 
    $itemid = $data2['fields']['CALC STOCK NO']; 

    $bomEntry = 1; 
    if ($data2['fields']['BOM WHEEL PN']) { 
     $bom = $data2['fields']['BOM WHEEL PN']; 
     mysqli_stmt_execute($stmt) or die(mysqli_stmt_error($stmt)); 
     $bomEntry++; 
    } 
    if ($data2['fields']['BOM TIRE PN']) { 
     $bom = $data2['fields']['BOM TIRE PN']; 
     mysqli_stmt_execute($stmt) or die(mysqli_stmt_error($stmt)); 
     $bomEntry++; 
    } 
    if ($data2['fields']['BOM VALVE PN']) { 
     $bom = $data2['fields']['BOM VALVE PN']; 
     mysqli_stmt_execute($stmt) or die(mysqli_stmt_error($stmt)); 
     $bomEntry++; 
    } 

    echo "<br>"; 
} 
+0

Danke, aber in der sorce Tabelle alle BOM in der Reihe 'A aufgeführten, BOM1, BOM2, BOM3 ...', das ist deshalb ich verwendet, um drei Insert Statement einzelne Zeile mehrreihige zu transponieren – Kin

+0

I aktualisiert haben die Antwort, um zu zeigen, wie man die Einfügung innerhalb dieser Schleife durchführt. – Barmar

+0

Danke wieder setzt 'bomEntry' 3 statt 1 für die Assembly mit 1 BOM/Component – Kin

Verwandte Themen