我正在尝试创建一个用于从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
字段而不使用多个表单?或者只用一个提交按钮就可以从多个表单提交数据?或者我应该选择任何完全不同的方式?
我想用一种形式表达的原因是,有一些“全局”参数不能放在每个项目的旁边,而是整个表格只放一次。
答案 0 :(得分:5)
<input type="submit" name="delete[1]" value="delete">
if (isset($_POST['delete'])) $id=key($_POST['delete']);
答案 1 :(得分:3)
似乎总是提交最后一个ID
它提交了所有这些内容,但由于名称不以[]
结尾,因此PHP最后会丢弃所有内容。
有没有办法只提交相应项目的ID字段而不使用多个表格?
没有。至少没有一些不幸的JavaScript。所有(非禁用)隐藏输入(带名称和值)都将成功。您无法根据与单击的输入元素的接近程度进行限制。
如果我理解你的目标,你有两个主要选择。
答案 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']);
}