我有一些PHP代码使用MySQLi检查MYSQL数据库,并将所有'stock'类型输出到带有while语句的表单中:
$result = mysqli_query($link,"SELECT name FROM items WHERE type='stock' ORDER BY name");
echo '<table style="text-align:center;"><tr><th>Name</th><th>Quantity</th><th>Use</th>';
while($item = mysqli_fetch_array($result)){
echo '<tr><form action="chooseProduct" method="POST"><td>' . $item['name'] . '</td><td><input type="number" name="amount[]"></td><td><input type="checkbox" name="stock[]" value="' . $item['name'] . '"></td></tr>';
}
echo '<tr><td rowspan="3" colspan="3"><input type="submit" value="Select"></td></tr></form></table>';
然后我需要能够选择我想要使用的股票,然后点击选择将我发送到“chooseProduct”页面,然后我应该能够使用数据“金额”和“股票”一个数组形式。但是,通过执行以下操作,使用POST在chooseProduct页面上检索这些值时:
$stock = $_POST['stock'];
$amount = $_POST['amount'];
我得到如下错误:
Notice: Undefined index: stock in C:\xampp\htdocs\production\chooseProduct\index.php on line 59
Notice: Undefined index: amount in C:\xampp\htdocs\production\chooseProduct\index.php on line 60
绝对检查了复选框,那么可能导致此错误的原因是什么?
答案 0 :(得分:2)
如果您尚未检查是否已执行POST操作,则会在分配时发出警告/通知。 尝试
$stock = isset($_POST['stock']) ? $_POST['stock'] : '';
$amount = isset($_POST['amount']) ? $_POST['amount'] : '';
答案 1 :(得分:2)
您的表单标记位于循环内部。这会在您的页面上创建无效的打开表单。这几乎肯定会导致您的表单提交无效数据或根本没有提交任何内容。将该开头<form>
标记移到您的循环之外以解决此问题。