Php 表单中有多个提交按钮

Php 表单中有多个提交按钮,php,html,forms,Php,Html,Forms,我有一个购物车,想从购物车中删除项目的选项。我不想使用javascript。购物车中的项目通过抓取会话变量在php中循环,并显示在一个表中,其中包含删除项目的选项。到目前为止,我已经为“remvove item”链接提交了多个输入,在我的for循环中,我有这些输入标记,它们是用项目的ID生成的 <input type="hidden" name="id[]" value="<?php echo $uniqueid; ?> <input type="submit" name

我有一个购物车,想从购物车中删除项目的选项。我不想使用javascript。购物车中的项目通过抓取会话变量在php中循环,并显示在一个表中,其中包含删除项目的选项。到目前为止,我已经为“remvove item”链接提交了多个输入,在我的for循环中,我有这些输入标记,它们是用项目的ID生成的

<input type="hidden" name="id[]" value="<?php echo $uniqueid; ?>
<input type="submit" name="remove" value="removeitem" class="otherbtns" />

您是否可以制作多个表单,每个表单的操作属性值不同?

如果您不介意将
id
值公开给用户,一种快速修复方法是更改每个提交按钮的
属性:

<input type="submit" ... value="removeitem <?php echo $uniqueid ?>" />

…理论上,这将为您提供所需的ID。

您可以通过指向同一页面的简单链接来处理此问题,但在$\u中,获取信息并通过脚本运行:

<a href="cart.php?remove=yes&item_to_remove=<?php echo item_id; ?>">Remove</a>

使用多种形式。脚本中可以有任意多个表单,每个表单提交一个表单。不要使用js提交表单->如果这样做,小猫会死。

从数据库中读取
$id[$i]
,并将记录量保存到
$count
然后检查是否需要删除某些内容:

for ($i = 0; $i <= $count; $i++) {
  if (isset($_POST[$id[$i]])) { 
    remove your $id[$i] from database
  }
}

我认为没有Javascript是无法实现您想要的功能的,另一种方法是使用复选框和“删除项目”按钮,这样您就无法获得购物车的整体表单。表单不能在表单中。如果正确配置会话变量,则不需要整个表单。另一种选择是将“从购物车中删除”按钮链接设置为“从购物车中删除”。然后,相应地处理$\u GET变量。不过,会话中的内容不一定就是页面上的内容。可能打开了多个页面,添加了一个新项目,没有刷新它们所在的页面。我认为如果你点击实际的提交按钮,你应该提交你正在看的内容,而不是会话中可能出现的内容。使用链接是一种选择,但与GET应该用于什么的规范背道而驰。“GET方法意味着检索…信息…”谢谢,这将是我这样做的方式,我不认为用户知道我的项目ID有任何风险。当Tyler建议这样做时,我发表了评论,使用GET来做这样的事情是违反HTTP规范的。看看为什么不使用GET。Jacob,我理解你的担忧,但是你提供的链接显示了get如何从数据库中删除你不想要的记录。这种情况是不同的,因为他们使用的是存储购物车中物品的会话。谷歌(从每个链接的问题答案来看)不可能不把东西放进购物车。此外,即使他们这样做了,从会话中删除项目也不会影响数据库,因此在本例中,我不认为这是一个问题。
if ( (isset($_GET['remove']))and($_GET['remove'] == 'yes') ){
   //then remove the item from the session var by removing the $_GET['item_to_remove']
}
for ($i = 0; $i <= $count; $i++) {
  if (isset($_POST[$id[$i]])) { 
    remove your $id[$i] from database
  }
}
for ($i = 0 ; $i <= $count; $i++) {
  echo '<input type="submit" name="'.$id[$i]'." value="removeitem">';
}