如何使用两个提交按钮,并区分用于提交表单的按钮?

时间:2012-08-13 06:56:25

标签: php forms submit action

目前,我有一个HTML表单,用户可以在其中输入文章的标题和文字。在提交时,它们会显示两个按钮。一种是在不发布文章的情况下“保存”他们的文章,另一种是“发布”文章并将其公之于众。

我正在使用PHP,我正在试图找出如何判断使用了哪个按钮,以便在数据库中存储相应的相应值。

<td>
<input type="submit" class="noborder" id="save" value="" alt="Save" tabindex="4" />
</td>
<td>
<input type="submit" class="noborder" id="publish" value="" alt="Publish" tabindex="5" />
</td>

可能之前应该提到这一点,但我无法分配按钮值,因为按钮是图像,所以文本会显示在它上面。

4 个答案:

答案 0 :(得分:71)

为每个input提供name属性。只有点击的input name属性才会发送到服务器。

<input type="submit" name="publish" value="Publish">
<input type="submit" name="save" value="Save">

然后

<?php
    if (isset($_POST['publish'])) {
        # Publish-button was clicked
    }
    elseif (isset($_POST['save'])) {
        # Save-button was clicked
    }
?>

修改:将value属性更改为alt。不确定这是图像按钮的最佳方法,但是您不想使用input[type=image]的任何特殊原因?

编辑:由于这一点不断上升,我继续将奇怪的alt / value代码更改为实际提交输入。我相信最初的问题需要某种图像按钮,但现在有更好的方法来实现,而不是使用input[type=image]

答案 1 :(得分:8)

为这些提交按钮指定名称和值,如:

    <td>
    <input type="submit" name='mybutton' class="noborder" id="save" value="save" alt="Save" tabindex="4" />
    </td>
    <td>
    <input type="submit" name='mybutton' class="noborder" id="publish" value="publish" alt="Publish" tabindex="5" />
    </td>

然后在你的php脚本中你可以检查

if($_POST['mybutton'] == 'save')
{
  ///do save processing
}
elseif($_POST['mybutton'] == 'publish')
{
  ///do publish processing here
}

答案 2 :(得分:2)

如果你不能把价值放在按钮上。我只是一个粗略的解决方案。放一个隐藏的领域。当在提交之前单击其中一个按钮时,在单击第一个按钮时填充隐藏字段的值,例如填充2,如果单击第二个按钮则填充2。并在提交页面中检查此隐藏字段的值,以确定单击哪一个。

答案 3 :(得分:1)

您可以按照以下方式使用它,

<td>

<input type="submit" name="save" class="noborder" id="save" value="Save" alt="Save" 
tabindex="4" />

</td>

<td>

<input type="submit" name="publish" class="noborder" id="publish" value="Publish" 
alt="Publish" tabindex="5" />

</td>

在PHP中,

<?php
if($_POST['save'])
{
   //Save Code
}
else if($_POST['publish'])
{
   //Publish Code
}
?>