0

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

但是,有一个怪癖:

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

假设类似的东西mywebsite.com/form.php=id446会产生与类似的东西截然不同的形式mywebsite.com/form.php=id447

两种形式的区别大约是3-4个表单域(无论是否出现),其余相同

现在,我可以强行执行此操作,只需 make form446.php,form447.php等 - 但我宁愿不这样做。

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

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

谢谢大家,xoxo

4

4 回答 4

1

你的问题对我来说有点模糊。例如 446 和 447 有什么不同?它必须是完全随机的吗?或者您是否有第一手可用的一组字段/表格?

于 2010-12-27T11:17:50.133 回答
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;
   }
}
于 2010-12-27T11:24:09.073 回答
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 -表单元素

--- 编辑 ---- 我是否应该假设您还需要大约 10000 种具有自己独特元素的不同形式?我希望(为了你自己的理智!)情况并非如此。如果您可以完全减少它,那么您可能想尝试将 formType 添加为 url 参数而不仅仅是 ID,这样您就可以将它们分组解析。

老实说,这是我无论如何都会使用数据库的那种工作——我会设置一个表来保存每个表单的 ID 号和另一个字段用于其关联的元数据(可能在一个数组甚至序列化数组中)。然后,您可以在应用程序中将其提取出来,您仍然可以使用 formId 作为唯一的 url 参数。从您的其他评论中,我猜想保存保存数据的表不是特定于 formId 的,所以这应该可以工作。

于 2010-12-27T11:26:30.297 回答
0

你好

要完成这项工作,您必须仔细考虑问题。您应该从数据库部分开始。

当您得出结论时,您不能在 php.ini 中对每个 id 进行硬编码。

您应该为此使用数据库。

讨论的一些假设:不同的形式被命名为 question1, question2, question3

您应该首先创建一个表,其中每个 id 有一行,也许还有一些关于该 id 的附加信息。

然后,我现在看到的最简单的方法是非常丑陋和糟糕的数据库设计。每个问题向此 id 表添加一个字段,因此该表将如下所示:

id|question1|question2|question3
446|1|1|0
447|0|1|1

然后,在 php 中,您只需创建一个“SELECT * from id_table where id="||id||";”

如果不搜索网络,我不知道 php 中的语法,但是如果 id 应该有这个问题,你只需检查每个不同的问题,用伪代码:

    if(question1)
    {
      the question 1
    }

   if(question2)
    {
      the question 2
    }

HTH 尼克拉斯

于 2010-12-29T08:13:54.037 回答