2012-02-03 64 views
3

我试图使用动态创建的表单来编辑页面上的内容。我从数据库表(在这种情况下是图像标题)中检索信息,并将其显示在准备编辑的文本区域中,并将其保存回数据库。从动态生成的表格中检索数据

这似乎做组织和显示形式的工作:

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>"; 

可是,我从这里出了问题。当我在edit.php中输入:

$caption=$_POST['caption']; 
echo $caption; 

而且我只从最后一个字段获得标题。当我在表格中添加复选框时,它一切正常,只要我检查1,但如果我检查了2或更多,它只会给我最后一个值。

我也试过这样:

$caption[$x]=$_POST['caption']; 
foreach ($caption as $key => $value) {echo $key.$value.'<br>';} 

,但得到了同样的结果。

回答

3

在您的形式

name='caption' 

必须

name='caption[]' 

而且以后你可以这样做:

foreach ($_POST['caption'] as $key => $value) {echo $key.'=>'.$value.'<br>';} 
+0

够简单,谢谢。 – spacitron 2012-02-03 02:08:33

+0

出于好奇。有没有办法我也可以更新已保存的字段?假设我在图库中有1000张图片和标题,并且仅使用了编辑1标题,让脚本更新所有标题是否有意义?或者是否有办法让它只能编辑已编辑的文件? – spacitron 2012-02-03 02:12:14

+0

然后你必须找出哪些真的改变了。因此,您必须阅读表单中显示的所有项目,并在提交时检查$ _POST值。 – djot 2012-02-03 02:18:31

0

你不能为所有字段使用相同的名称。你必须制作它们。试试这个

name='caption[]'