Ich versuche, mehrere Einträge aus einer HTML-Array-Tabelle zur Datenbank hinzuzufügen, aber der Wert der Menge scheint zu duplizieren, einschließlich der Wert für Bemerkungen. Der gesamte Eintrag scheint ebenfalls zu duplizieren. Wie kann ich verhindern, dass sie passieren?So verhindern Sie, dass foreach Einträge aus einem HTML-Tabellenarray dupliziert
Hier ist meine PHP-Code für die Tabelle in der Datenbank einfügen:
<?php
$tmp = 0;
if (isset($_POST['submit'])) {
if(!empty($_POST["inRemarks"])) {
foreach($_POST["inRemarks"] as $inRemarks) if ($tmp++ < 2) {
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$inQty = $_POST['incQty'];
foreach ($inQty as $key => $incQty) {
$prod = $_POST['prodItem'];
foreach($prod as $prodItem) {
$emp = $_POST['emp'];
$emp1 = $conn->query("SELECT empID AS empA FROM employee WHERE empName = '$emp'");
$emp2 = $emp1->fetch(PDO::FETCH_ASSOC);
$emp3 = $emp2['empA'];
$prod1 = $conn->query("SELECT prodID AS prodA FROM product WHERE prodName = '$prodItem'");
$prod2 = $prod1->fetch(PDO::FETCH_ASSOC);
$prod3 = $prod2['prodA'];
$sql = "INSERT INTO incoming (inQty, inDate, receiptNo, inRemarks, empID, prodID)
VALUES ('$incQty',CURDATE(),'".$_POST['rcno']."','$inRemarks','$emp3','$prod3')";
$result = $conn->query($sql);
echo "<meta http-equiv='refresh' content='0'>";
}
}
}
}
}
?>
Hier ist mein JavaScript-Code für das Formular und Tabelle:
function validateForm() {
if(document.getElementById('addRcpt').value == "") {
alert('Please Enter Receipt Number');
document.getElementById('addRcpt').style.borderColor = "red";
return false;
}
if (document.getElementById('addQty').value == "") {
alert('Please Enter Quantity');
document.getElementById('addQty').style.borderColor = "red";
return false;
}
if(confirm('Are you sure you want to add this entry?')) {
alert("Incoming Product Successfully Added");
return true;
}
else {
return false;
}
}
function deleteRow(tableID) {
try {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var current = '';
for(var i=0; i<rowCount; i++) {
var row = table.rows[i];
var chkbox = row.cells[0].childNodes[0];
if(null != chkbox && true == chkbox.checked) {
if(rowCount <= 1) {
alert("Cannot delete all the rows.");
break;
}
table.deleteRow(i);
rowCount--;
i--;
regroup(i,rowCount,tableID);
}
}
}catch(e) {
alert(e);
}
}
function addRow(tableID) {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var colCount = table.rows[0].cells.length;
for(var i=0; i<colCount; i++) {
var newcell = row.insertCell(i);
if(i==1){
newcell.innerHTML = (rowCount+1)
}
else{
newcell.innerHTML = table.rows[0].cells[i].innerHTML;
}
switch(newcell.childNodes[0].type) {
case "text":
newcell.childNodes[0].value="";
break;
case "checkbox":
newcell.childNodes[0].checked = false;
break;
case "select-one":
newcell.childNodes[0].selectedIndex = 0;
break;
}
}
}
function regroup(i,rc,ti){
for(j = (i+1);j<rc;j++){
document.getElementById(ti).rows[j].cells[1].innerHTML = j+1;
}
}
Abfrageergebnis:
..Danke sehr !! es funktioniert !! wusste nie, dass für Schleife ist nur die Lösung, anstatt mehrere Foreach .. –
Sie müssen verstehen, was Sie mit Ihrem Code getan haben :) die Logik war falsch. Es spielt keine Rolle, ob Sie eine For- oder Foreach-Schleife verwenden. – PinkTurtle