我想基本上创建一个PHP表单,根据你输入的内容将数据存储到数据库中 - 这当然是基本的。
然而,有一个怪癖:
这个php表单必须是基于id的 - 给出一个链接。
让我们说mywebsite.com/form.php=id446
之类的内容会产生与mywebsite.com/form.php=id447
类似的形式。
两种形式的差异大约是3-4个表格字段(无论它们是否出现),其余部分相同
现在,我可以蛮力这个,只是制作form446.php
,form447.php
等等 - 但我不愿意。
那么有什么功能可以让我这样做吗?
此外,是否有任何模板可用于制作美观且令人赏心悦目的PHP表单 - 这些模板可以让它们更容易填充?
谢谢你们, XOXO
答案 0 :(得分:1)
你的问题对我来说有点模糊。例如446和447之间有什么不同?它必须是完全随机的吗?或者您是否有第一手的字段/表格?
答案 1 :(得分:0)
代码可能无法正常运行,没有检查,但它提供了一些想法。
$formTypes = array();
$formTypes["type1"] = array("var1" => "string", "var2" => "textarea");
$formTypes["type2"] = array("var1" => "string");
$forms = array();
$forms["446"] = "type1";
$forms["447"] = "type2";
foreach ($formTypes[$id] as $varname => $vartype) {
switch ($vartype){
case "string":
print "<input name='" . $varname . "'>";
break;
case "textarea":
print "<textarea name='" . $varname . "'></textarea>";
break;
}
}
答案 2 :(得分:0)
您可以使用单个form.php,但使用代码中的if结构来包含/排除各个部分 - 如下所示:
<form action="doForm" method="post">
Input 1: <input type="text" id="input1"/>
Input 2: <input type="text" id="input1"/>
<?php
//This field only appears if you hit the url form.php?formid=123
if($_GET['formid'] == 123):
echo 'Input 3: <input type="text" id="input3"/>';
endif;
?>
<input type="submit" id="submit" value="submit" />
</form>
作为一种服务器端脚本语言,PHP不是制作漂亮,可用的表单所需要的 - 它只关心它们的功能处理。对于漂亮的表单,你可能想要一些不错的HTML / CSS和javascript。有一个谷歌的“可用表格”,并查看像这个jQuery插件列表的想法:http://www.queness.com/post/204/25-jquery-plugins-that-enhance-and-beautify-html-form-elements
---编辑---- 我是否应该假设你还需要大约10000种具有独特元素的不同形式?我希望(为了你自己的理智!)事实并非如此。如果你可以减少它,那么你可能想尝试添加formType作为url参数而不仅仅是ID,这样你就可以在组中解析那些。
老实说,无论如何,这是我使用数据库的那种工作 - 我设置了一个表来保存每个表单的ID号,并为其关联的元数据设置另一个字段(可能是在一个数组中,甚至是一个序列化的数组)。然后,您可以在应用程序中提取它,您仍然可以使用formId作为唯一的url参数。从你的其他评论我想,保存数据的表不是formId特定的,所以这应该可行。
答案 3 :(得分:0)
喂
为了完成这项工作,你必须正确地思考问题。您应该从数据库部分开始。
当你自己总结时,你不能在php中硬编码每个id。
您应该使用数据库。
讨论的一些假设: 变化的形式名为question1,question2,question3
您应首先创建一个表,每个ID包含一行,并且可能还有一些关于该ID的其他信息。
然后,就像我现在看到的那样,最简单的方法就是非常难看和糟糕的数据库设计。每个问题为此id表添加一个字段,因此该表将类似于:
id|question1|question2|question3
446|1|1|0
447|0|1|1
然后,在php中你只需要从id_table中选择“SELECT *”,其中id =“|| id ||”;“
我不知道在不搜索网络的情况下php中的语法,但是你只需检查每个不同的问题,如果id应该有这个问题,用伪代码:
if(question1)
{
the question 1
}
if(question2)
{
the question 2
}
HTH 尼克拉斯