2013-04-29 100 views
0

如何保存以下表单?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的查询将加载数据和动态创建文字区域:

<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和不同的$ ids。我无法想象这个表格很酷。

谢谢。

+0

您可以使用'foreach'来遍历$ _POST找到名为'formfieldxx'的字段,并使用一些文本处理将'formfieldxx'的内容写入数据库,其中'id = xx'。 – andrewsi 2013-04-29 19:55:14

回答

3

什么你可能需要做的是看使用数组符号在你的表单字段的名字,像这样使用IDS:

<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 
} 

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

0

在“while”中创建textarea时保存一个带有这些textarea的id的数组。

然后折回数组当你需要它

相关问题