我必须准备一个包含很多字段的表单(大约100个)。我可以使用一个大的HTML \ PHP文件,但为了提高可访问性和访问字段的便利性,宁愿选择标签菜单。原始形式(称为临床评估)可以在3个子表格中进行逻辑碎片化:历史,体格检查和评估。现在,我已经有了3个选项卡,但我不确定这里使用的最佳方法是什么:
a)创建3个PHP文件(history.php,physical.php和assessment.php),将每个文件放在不同的选项卡上,并为每个选项卡提供一个提交按钮。这也将导致MySQL查询的碎片化:当用户完成历史记录时,她将点击“完成历史记录”按钮,并且相对查询(对应于clin_evaluation表中的“历史记录”字段)将开始。当然还有其余两个标签
b)仍然创建3个PHP文件,但仅在末尾(第三个选项卡)插入提交按钮,以便在插入所有数据时只处理一个查询...
你会做什么?我倾向于使用第一个选项,但对此的任何建议都非常感谢!迭戈
答案 0 :(得分:0)
当我有一个表单很重的应用程序时,我使用了一个名为form_display()
的函数。这需要一个像这样的数组:
$form = array(
array(
"type" => "text",
"label" => "Field Label",
"name" => "field_name",
"class" => "optional-classes",
"value" => "Field Value"
),
...
);
然后循环遍历此数组并输出必要的HTML。它使我免于一遍又一遍地编写相同的HTML。另外,如果我在应用程序中更改表单的HTML结构,我会在一个地方进行。
form_display()
返回给定上述类型数组的表单的HTML。如果我需要有多个选项卡,我可以将多个form_display()
调用的输出传递给`form_wrapper(),这会创建创建选项卡式界面所需的HTML和JS。
因此,在您的情况下,将表单分为三个部分,您将有三个数组传递给form_display()
,然后将结果传递给form_wrapper()
,结果其中包含用于制作标签界面表单的所有HTML和JS。此外,您可以将form_wrapper()
传递给您保存的HTML对象按钮。这样,“保存”按钮可以位于选项卡式界面之外(可以从表单中的任何位置访问,而不仅仅是一个特定的选项卡)。
我提供了一些示例代码here,其中包括上述功能,以及我的一个项目中的一些代码片段,演示了如何使用它们。主要功能form_display()
得到了很多评论。