我的任务是设计一个具有mysql后端的自定义表单管理器。
我在设置所有前端后遇到的问题是如何处理动态表单。
对于E.G
表单1可以包含6个字段,所有字段在输入标记中都具有不同的名称属性。 表单2可以包含20个字段,所有字段在输入标记中都具有不同的名称属性。
如何在不耗尽大量资源的情况下处理表单。
最终答案
基于Arda Xi的接受答案
function processForm($form_id) {
$rows = "";
$values = "";
foreach($_POST as $key => $value) {
$rows = mysql_real_escape_string($key);
$values = mysql_real_escape_string($value);
$entry .= "[".$rows . "::".$values."]";
}
// clean up the array
$entry = preg_replace('/^\[|\d+|\:\:\]/', '', $entry);
$query = mysql_query("INSERT INTO `forms_form_data` (`id`, `form_id`, `entry`, `manager_id`, `status`, `created_at`) VALUES (NULL, '".$form_id."', '".$entry."', '".$_SESSION['manager_id']."', '0', NOW())");
}
答案 0 :(得分:3)
从字面上看,唯一的方法是使用循环。如果您想尽可能少地使用资源,可以将它们连接起来。
$columns = "";
$values = "";
foreach($_POST as $key => $value) {
$columns .= "`" . mysql_real_escape_string($key) . "`, ";
$values .= "`" . mysql_real_escape_string($value) . "`, ";
}
$columns = substr($columns, 0, -2);
$values = substr($values, 0, -2);
$query = "INSERT INTO `table` (".$colums.") VALUES (".$values.")";
这将为表单中的所有值创建一个查询。
答案 1 :(得分:1)
为什么不按原样存储$ _POST的序列化值?当然逃避它以使其数据库安全。像:
$value=serialize($_POST);