Php:使用动态生成的表单字段中的值更新数据库

时间:2013-04-29 19:52:35

标签: php

如何保存以下表格?

<form name="myform">
<input type="text" name="title" value="title" />

$result = mysql_query("SELECT id, text from details where parent='$parent' 
order by id asc") or die('Error');
while(list($id,$ftext) = mysql_fetch_row($result)) {
?>
<textarea name="formfield<?php echo $id;?>" id="<?php echo $id;?>">
<?php echo $ftext;?>
</textarea>
<?php
}
</form>

如上所示,MySQL查询将加载数据并动态创建textareas:

<textarea name="formfield34" id="34">text</textarea>
<textarea name="formfield56" id="56">more text</textarea>        
<textarea name="formfield78" id="78">anothet text</textarea>   

我需要像这样更新数据库:

$result = mysql_query("UPDATE details SET text='$formfield34' WHERE id ='34'") or die('Error');
$result = mysql_query("UPDATE details SET text='$formfield56' WHERE id ='56'") or die('Error');
$result = mysql_query("UPDATE details SET text='$formfield78' WHERE id ='78'") or die('Error');

问题是每个表单将动态加载不同数量的textareas和不同的$ id。保存这种形式我无法想象。

感谢。

2 个答案:

答案 0 :(得分:3)

您可能需要做的是在表单字段名称中使用数组表示法,如下所示:

<textarea name="formfield[34]" id="34">text</textarea>
<textarea name="formfield[56]" id="56">more text</textarea>        
<textarea name="formfield[78]" id="78">anothet text</textarea>

PHP将自动在$_POST['formfield']中构建一个数组。您可以使用所有这些数据进行访问。这样可以轻松遍历此数组并为更新生成SQL。

foreach($_POST['formfield'] as $key => $value) {
    // write SQL here
}

现在,您可能需要考虑使用REPLACE语法,而不是一堆单独的SQL查询,以便您可以使用单个查询插入/更新数据。

答案 1 :(得分:0)

在创建textarea的“while”中

保存一个具有这些textarea的id的数组。

然后在需要时回溯数组以使用id