如何创建基于ID的PHP表单?

时间:2010-12-27 11:14:45

标签: php forms webforms survey

我想基本上创建一个PHP表单,根据你输入的内容将数据存储到数据库中 - 这当然是基本的。

然而,有一个怪癖:

这个php表单必须是基于id的 - 给出一个链接。

让我们说mywebsite.com/form.php=id446之类的内容会产生与mywebsite.com/form.php=id447类似的形式。

两种形式的差异大约是3-4个表格字段(无论它们是否出现),其余部分相同

现在,我可以蛮力这个,只是制作form446.phpform447.php等等 - 但我不愿意。

那么有什么功能可以让我这样做吗?

此外,是否有任何模板可用于制作美观且令人赏心悦目的PHP表单 - 这些模板可以让它们更容易填充?

谢谢你们, XOXO

4 个答案:

答案 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 尼克拉斯