php - 无法在数组的下一个循环中存储数据
问题描述
我不知道这段代码有什么问题,但是每当我选择要填写的多个表格时,只会显示数据的最后一部分。例如,我会选择 3 个表格并用仅存储最后一个表格的数据填充它。我使用这段代码来显示应该在数组中的数据。
echo "<pre>";
print_r($_POST);
echo "</pre>";
这是我的代码,请帮助我
<?php
// $_POST['countEmp'] is a variable from another page that would determine
// how many loops that it should execute
$count = $_POST['countEmp'];
$sql = "SELECT * FROM position";
$res = mysqli_query($conn,$sql);
$flag = 0;
for ($i=0; $i < $count; $i++) {
echo " <form method='POST' action=insertProject1.php> ";
echo " <input type='text' name='employee[]' placeholder='employee's name'> ";
echo "<select name='position[]'>";
echo "<option selected='selected'>POSITION</option>";
while ($data = mysqli_fetch_assoc($res)) {
echo "<option value=".$data['position_id'].">".$data['position']."</option>";
}
echo "</select>";
echo "<br>";
$flag++;
if ($flag== $count) {
echo "<input type='submit' value='SUBMIT' name='insert'>";
}
mysqli_data_seek($res,0);
echo " </form> ";
}
?>
解决方案
因为您有单独的表单和自己的提交按钮,所以提交的数据将只属于单击提交按钮的表单。您将需要重组/合并您的表格以生成您想要的结果。
这是我在本地主机上测试的方式:
<?php
var_export($_POST);
?>
<br>
<form method='POST' action=''>
<input type='text' name='employee[]' placeholder='employee's name'>
<select name='position[]'>
<option>POSITION</option>
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
</select>
<br>
<input type='submit' value='SUBMIT' name='insert1'>";
</form>
<br>
<form method='POST' action=''>
<input type='text' name='employee[]' placeholder='employee's name'>
<select name='position[]'>
<option>POSITION</option>
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
</select>
<br>
<input type='submit' value='SUBMIT' name='insert2'>";
</form>
<br>
<form method='POST' action=''>
<input type='text' name='employee[]' placeholder='employee's name'>
<select name='position[]'>
<option>POSITION</option>
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
</select>
<br>
<input type='submit' value='SUBMIT' name='insert3'>";
</form>
除了employee[]
和position[]
值,当我单击第二个提交按钮时,我看到了$_POST['insert2'] = "SUBMIT"
.
如果你想要这样的结构:
array (
'employee' => array ( 0 => 'Frank', 1 => 'Jim', 2 => 'Earl', ),
'position' => array ( 0 => '2', 1 => '1', 2 => '3', ),
'insert' => 'SUBMIT',
)
然后使用单个提交按钮将所有字段包装在一个表单中。
或者,如果您想要这样的结构:
array (
'set' => array (
0 => array ( 'employee' => 'Candice', 'position' => '3', ),
1 => array ( 'employee' => 'Bert', 'position' => '2', ),
2 => array ( 'employee' => 'Abe', 'position' => '1', ),
),
'insert' => 'SUBMIT',
)
然后你可以构建你的单一表单,如下所示:
<form method='POST' action=''>
<?php
for ($i = 0; $i < 3; ++$i) {
echo "<input type='text' name='set[$i][employee]' placeholder='employee's name'>";
echo "<select name='set[$i][position]'>";
echo "<option>POSITION</option>";
echo "<option value='1'>A</option>";
echo "<option value='2'>B</option>";
echo "<option value='3'>C</option>";
echo "</select>";
echo "<br>";
}
?>
<input type='submit' value='SUBMIT' name='insert'>
</form>
推荐阅读
- amazon-web-services - 在 AWS Amplify 控制台上部署为 SPA 后,Nuxtjs 动态路由在页面重新加载时不起作用
- mysql - 使用包含时,Sequilize 查询仅返回一行
- python - 如何通过restful api循环查询列表?
- java - 如何在 java 文本文件中找到最大和最小的数字?
- swift - 如何快速为神经网络中的神经元编写 sigmoid 函数?
- python - 复杂的正则表达式模式
- javascript - 我的 useEffect 正在到达调用堆栈,并且在文本更改后,我不知道为什么?
- javascript - 如何在三个 JS 中显示球形网格助手
- sql - 如何比较数据库中的一个大数据集和电子表格上的一个大数据集?
- python - (python) 实现来自用户的多个输入的最佳方式