Php 从动态生成的表单检索数据

Php 从动态生成的表单检索数据,php,Php,我正在尝试使用动态创建的表单编辑页面上的内容。我从DB表中检索信息(在本例中为图像标题),并将其显示在文本区域中,以便编辑并保存回DB 这似乎完成了组织和显示表单的工作: echo"<form action='edit.php' method='post'>"; for ($limit;$limit<=$all_values;$limit++) { echo "<textarea cols='15' rows='3' name='caption'

我正在尝试使用动态创建的表单编辑页面上的内容。我从DB表中检索信息(在本例中为图像标题),并将其显示在文本区域中,以便编辑并保存回DB

这似乎完成了组织和显示表单的工作:

echo"<form action='edit.php' method='post'>";
 for ($limit;$limit<=$all_values;$limit++)
     {
      echo "<textarea cols='15' rows='3' name='caption' value='$caption_arr[$limit]'>
             $caption_arr[$limit]</textarea><br>
      }
      echo "<br><input type='submit' value='Edit' name='pictureEedit'></form>";
我只从最后一个字段得到标题。当我在表单中添加复选框时,如果我只选择了1,那么一切都很好,但是如果我选择了2或更多,它只会给我最后一个的值

我也试过:

 $caption[$x]=$_POST['caption'];
 foreach ($caption as $key => $value) {echo $key.$value.'<br>';}
$caption[$x]=$\u POST['caption'];
foreach($key=>$value){echo$key.$value.'
';}
但是得到了同样的结果。

在你的表格中

name='caption'
一定是

name='caption[]'
以后你可以做:

foreach ($_POST['caption'] as $key => $value) {echo $key.'=>'.$value.'<br>';}
foreach($_POST['caption']as$key=>$value){echo$key.=>'.$value.
'}
不能对所有字段使用相同的名称。你必须把它们组合成一个数组。试试这个

 name='caption[]'

出于好奇。是否有一种方法可以更新已保存的字段?假设我在一个图库中有1000个图像和标题,并且只使用一个标题,那么让我的脚本更新所有的标题有意义吗?或者有没有办法让它只改变被编辑的那一个?然后你必须找出,哪些真正改变了。因此,您必须阅读表单中显示的所有项目,并在提交时对照$\u POST值进行检查。我是否需要在我的edit.php页面中重新查询数据库以比较条目?或者我可以添加一个带有原始标题的隐藏表单字段,以便在edit.php中进行比较吗?是的,您可以添加一个隐藏字段,如name=“value\u orig[]”,然后比较所有的$\u POST[]['value\u edit']和$\u POST['value\u orig']。无论如何,我不是隐藏字段的朋友-从不显示用户输出,他并不真正需要。所以我最好还是继续读下去。(MHO)你这是什么意思?完成后,我会将用户重定向到他来自的页面,并应用所有更改。他怎么能看到隐藏领域里的东西?
 name='caption[]'