使用MySQLi处理复选框时的PHP未定义索引

时间:2014-02-19 15:23:50

标签: php html arrays forms mysqli

我有一些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

绝对检查了复选框,那么可能导致此错误的原因是什么?

2 个答案:

答案 0 :(得分:2)

如果您尚未检查是否已执行POST操作,则会在分配时发出警告/通知。 尝试

$stock = isset($_POST['stock']) ? $_POST['stock'] : '';
$amount = isset($_POST['amount']) ? $_POST['amount'] : '';

答案 1 :(得分:2)

您的表单标记位于循环内部。这会在您的页面上创建无效的打开表单。这几乎肯定会导致您的表单提交无效数据或根本没有提交任何内容。将该开头<form>标记移到您的循环之外以解决此问题。