[英]Notice: Undefined index when trying to increment an associative array in PHP
[英]Notice: Undefined index: when trying to submit form with a null array
美好的一天,有人願意在我每次提交表格時解釋此通知。 這是我的代碼如下:
<form action="" method="post" name="f">
<TABLE id="dataTable" border="1">
<thead>
<tr>
<td></td>
<td>Product Name</td>
<td>Model</td>
<td>Description</td>
</tr>
</thead>
<tbody>
</tbody>
</TABLE>
<br>
<input type="text" name="ProductNme" id="item" >
<input type="text" name="ProductNme" id="price" >
<input type="text" name="ProductNme" id="qty" >
<input type="submit" name="submit" value="Submit">
<INPUT type="button" value="Add Row" onclick="addRow('dataTable')" />
<INPUT type="button" value="Delete Row" onclick="deleteRow('dataTable')" />
<?php
if($_POST['submit']) {
$dbC = new imsFunction();
if ($_POST['item'] == null) {
echo 'No Data';
} else {
foreach ($_POST['item'] as $key => $value) {
$item = $_POST["item"][$key];
$price = $_POST["price"][$key];
$qty = $_POST["qty"][$key];
$sql = $dbC->qryExec('Insert Into tbl_test (item,price,quant) Values (?, ?, ?)', [$item, $price, $qty]);
//$sql = mysql_query("insert into your_table_name values ('','$item', '$price', '$qty')");
}
}
}
}
?>
這是將數據添加到表行的javascript代碼。
function addRow(tableID) {
var enteredItem = $("#item").val();
var enteredPrice = $("#price").val();
var enteredQty= $("#qty").val();
if (!enteredItem) {
alert("Please entere item name!");
} else {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var cell1 = row.insertCell(0);
var element1 = document.createElement("input");
element1.type = "checkbox";
element1.name="chkbox[]";
cell1.appendChild(element1);
var cell2 = row.insertCell(1);
cell2.innerHTML = "<input type='text' name='item[]' value='"+enteredItem+"' readonly />";
var cell3 = row.insertCell(2);
cell3.innerHTML = "<input type='text' name='price[]' value='"+enteredPrice+"' readonly />";
var cell4 = row.insertCell(3);
cell4.innerHTML = "<input type='text' name='qty[]' value='"+enteredQty+"' readonly />";
document.getElementById('item').value='';
}
}
輸入的名稱類似於“ item []”。 我想要做的是捕獲錯誤,如果用戶沒有先添加數據就提交按鈕。 但是發生的是,它在foreach循環中發出了Undefined index:item的通知。
測試傳入數據時,請始終假設最壞的情況。 在這種情況下,如果未首先設置測試$_POST['item']==null
可能會失敗。
比較安全的方法是:
if(isset($_POST['item']) && is_array($_POST['item'])) {
}
測試的第二部分以防萬一。
順便說一句,如果您確實測試了一個null
值,則應使用===
將其與其他虛假值區分開。
輸入字段名稱有一些錯誤
<input type="text" name="ProductNme" id="item" >
<input type="text" name="ProductNme" id="price" >
<input type="text" name="ProductNme" id="qty" >
它們都被命名為: ProductNme
,這就是為什么這些行不起作用的原因
$item = $_POST["item"][$key];
$price = $_POST["price"][$key];
$qty = $_POST["qty"][$key];
這些索引( item
, price
, qty
)在發送到服務器的$ _POST數組中不存在。 因此, 未定義的索引消息。 祝好運
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.