如何防止多个表单具有相同的输入类型=隐藏值?

时间:2015-01-14 15:26:29

标签: php html5 forms

我开发了一个搜索表单,使用PHP搜索大型SQL数据库并将结果显示给最终用户。

有一个GET请求正在进行,然后URL如下所示:

http://localhost/search.php?value1=x&value2=y

现在,除了向用户显示搜索结果外,我还想展示一些可以选择的选项 适用于显示的结果。

例如,我将在结果的顶部导出excel按钮,以及删除按钮以便 从数据库中删除结果。在我的服务器中,这2个动作将由2个不同的文件管理,比方说 deleteEntries.php和excelExport.php。

所以,在我的html中,我将有2个表单,一个指向deleteEntries.php,另一个指向excelExport.php。

问题是每个表单都需要有自己的输入类型=隐藏重复。

代码

<input name="value1" value="x" type="hidden">
<input name="value2" value="y" type="hidden">

,这是通过PHP动态生成的,必须为每个表单重复一次(每个服务器端文件如何知道什么是 用户需要导出还是删除?)。代码是动态生成的,因为搜索条件及其值会有所不同 在搜索之间。

然后,如果用户选择删除数据,则URL将变为

http://localhost/deleteEntries.php?value1=x&value2=y

在我的具体场合,我有3种形式,最多11种价值观。所以这意味着我重复了11行HTML 3次,但事实并非如此 因此有很多原因。

一个明显的解决方案是组合框,我让用户选择操作(例如导出数据,删除数据,选项3) 并通过确定所选操作来管理单个表单和单个服务器端文件的所有操作。 但我不想这样做,因为它不太方便用户而且对开发人员不太友好。

编辑:为什么我没有为Export导出excel的原因,如

<a href="http://localhost/excelExport.php?value1=x&value2=y">Export to excel</a>

是因为实际上用户需要从表单中选择更多选项。

3 个答案:

答案 0 :(得分:0)

您可以在提交按钮上定义表单操作,如下所示:

<form method="post">
  <input name="value1" value="x" type="hidden">
  <input name="value2" value="y" type="hidden">
  <button type="submit" formaction="deleteEntries.php">Delete Entries</button>
  <button type="submit" formaction="excelExport.php">Excel Export</button>
</form>

每个提交按钮都会发布到不同的php脚本

这在IE9及更早版本中不起作用,但我不知道这是否是一个问题

答案 1 :(得分:0)

您可以将隐藏输入列表移动到单独的文件中,并将该文件包含在每个表单模板中。

或者你可以在php中的数组中列出你的参数名称。然后从中生成隐藏的输入。这样你就可以在每个表单中调用一个函数来添加隐藏的输入。您还可以在表单处理程序中循环遍历相同的数组,以在使用它们之前读取和验证接收到的值。

答案 2 :(得分:0)

您可以为按钮定义onclick函数而不是发送表单,在onclick函数上,您可以为您喜欢的表单定义2个或更多隐藏的隐藏字段,这意味着您没有在页面加载上声明这些输入但是定义它当onclick功能。

var y = document.createElement('value1');    
document.form1.appendChild(y);


<form name = "form1" id = "form1" action = "deleteEntries.php" method = "post">
 <button type = "submit" name="submit1" onclick="addinput()">DELETE</button
</form>

隐藏输入不需要包含在所有3个表单中,这些字段可以在特定表单按钮上动态生成。