Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 循环通过多个POST元素_Php_Forms_Loops_Post - Fatal编程技术网

Php 循环通过多个POST元素

Php 循环通过多个POST元素,php,forms,loops,post,Php,Forms,Loops,Post,我试图弄清楚如何循环处理从数据库中动态提取的多个POST表单数据,并将修改后的数据重新提交到另一个表中。由于某种原因(可能是年老),我似乎无法想出一个有效的解决方案 我已经在循环一个表中的所有记录(称为花名册),需要将其提交到另一个表(称为花名册2)。表格类似于此: <form name="name" action="form.php" method="post"> <input type="text" name="name1" value="15"> <i

我试图弄清楚如何循环处理从数据库中动态提取的多个POST表单数据,并将修改后的数据重新提交到另一个表中。由于某种原因(可能是年老),我似乎无法想出一个有效的解决方案

我已经在循环一个表中的所有记录(称为花名册),需要将其提交到另一个表(称为花名册2)。表格类似于此:

    <form name="name" action="form.php" method="post">
<input type="text" name="name1" value="15">
<input type="text" name="attended" value="1">
<input type="checkbox" name="nameid_12" value="12">

<input type="text" name="name2" value="8">
<input type="text" name="attended" value="1">
<input type="checkbox" name="nameid_6" value="6">
</form>

“name”和“nameid”字段将始终更改,并且显示的记录数将始终不同(一天可能是5条,下一天可能是100条)。 通过循环POST数据将其提交到数据库并保持所有关联完整的最佳方法是什么?
我对使用PHP比较陌生,似乎找不到一个好的方法来实现这一点。

您可以在字段中循环并保留它们的键,如下所示:

foreach ($_POST as $field_name => $field_value) {
    // Storage
}

如果要动态生成它们,我建议使用PHP将每个表单的ID放置在该表单的输入中。因此,您的原始表单将以以下名称结尾:

<input type="text" name="name[12]" value="15">
<input type="text" name="attended[12]" value="1">
<input type="checkbox" name="nameid[12]" value="12">

<input type="text" name="name[6]" value="8">
<input type="text" name="attended[6]" value="1">
<input type="checkbox" name="nameid[6]" value="6">
现在我们需要弄清楚今天实际存在哪些ID。函数的作用是:从任意源数组生成一个键数组。这三个元素的键都是相同的,所以我任意地从[name]获取键

$id_array = array_keys($_POST['name']);
然后,为了访问POST数组的每个元素,我们将使用foreach

foreach ($id_array as $id) {

    //assign variables
    $name = $_POST['name'][$id];
    $attended = $_POST['attended'][$id];
    $nameid = $_POST['nameid'][$id];

   //store
   //Using whichever database style you like. I prefer PDO.
}

尝试使用数组来发布例如:我还没有尝试过,但我相信这正是我一直在寻找的。。。非常感谢。
foreach ($id_array as $id) {

    //assign variables
    $name = $_POST['name'][$id];
    $attended = $_POST['attended'][$id];
    $nameid = $_POST['nameid'][$id];

   //store
   //Using whichever database style you like. I prefer PDO.
}