带有多个提交选项的HTML表单

时间:2010-04-23 12:03:26

标签: php html forms submit

我正在尝试创建一个用于从MySQL表中删除项目的小型Web应用程序。它只显示HTML表格中的项目,并为每个项目显示按钮[delete]

item_1 [delete]
item_2 [delete]
...
item_N [delete]

为实现这一目标,我通过PHP动态生成表格为HTML表单。这个表单显然有N [delete] - 按钮。表单应使用POST方法传输数据。

对于删除,我想将相应项目的ID(MySQL表中的主键)提交给正在执行的php skript。因此,我介绍了hidden个字段(所有这些字段都有name='ID',用于存储相应项目的ID

然而,当按下任意[delete]时,它似乎总是只提交最后一个ID(即最后ID隐藏字段的值。)

有没有办法只提交相应项目的ID字段而不使用多个表单?或者只用一个提交按钮就可以从多个表单提交数据?或者我应该选择任何完全不同的方式?

我想用一种形式表达的原因是,有一些“全局”参数不能放在每个项目的旁边,而是整个表格只放一次。

3 个答案:

答案 0 :(得分:5)

<input type="submit" name="delete[1]" value="delete">

if (isset($_POST['delete'])) $id=key($_POST['delete']);

答案 1 :(得分:3)

  

似乎总是提交最后一个ID

它提交了所有这些内容,但由于名称不以[]结尾,因此PHP最后会丢弃所有内容。

  

有没有办法只提交相应项目的ID字段而不使用多个表格?

没有。至少没有一些不幸的JavaScript。所有(非禁用)隐藏输入(带名称和值)都将成功。您无法根据与单击的输入元素的接近程度进行限制。

如果我理解你的目标,你有两个主要选择。

  1. 每行放一张表格(带有删除按钮的单元格)
  2. Encode the id value into the name of the submit button

答案 2 :(得分:1)

您可以删除隐藏的字段并将提交按钮命名为:

<input type="submit" name="delete[1]" />
<input type="submit" name="delete[2]" />
<input type="submit" name="delete[3]" />

然后

<?php

if (isset($_POST['delete'])) {
   $toDeleteId = key($_POST['delete']);
}