(PHP)初学者关于使用多个提交按钮的查询

时间:2014-01-18 22:52:54

标签: php html forms

简而言之:是否可以在页面上设置多个提交按钮,并在接收页面上检测单击了哪个提交按钮?

例如,想象一个显示随机电影海报的页面。有两个按钮:“我喜欢它”,“我讨厌它。”单击任一按钮时,表单将通过POST提交给自身,在显示新的随机海报之前,数据库中会记录用户喜欢/不喜欢的内容。

我的直觉就是写

 <form action="thispage.php" method="post">
      <input type="submit" name="like" value="I liked this." />
      <input type="submit" name="dislike" value="I hated this." />
 </form>

然后,在接收页面上,

if ($_POST['like'] == 1) ...

但那没用。也没有

if ($_POST['submit'] == "like") ...

所以我不知道该怎么做。任何人都可以给我一个提示吗?

3 个答案:

答案 0 :(得分:3)

选项一是典型的初学者方式。检查POST数组是否存在,然后检查存储的值是否存在。 检查它是否存在,并检查确切的值可防止初始页面加载时的输出。

<?php
if(isset($_POST['action']) && $_POST['action']  == 'like') {
echo "You like it!";
} elseif (isset($_POST['action']) && $_POST['action'] == 'hate' {
echo "You hate it :(";
}
?>

<form action="thispage.php" method="post">
  <input type="submit" name="action" value="like" />
  <input type="submit" name="action" value="hate" />
</form>

OR .... 开关/案例允许您针对POST ['action'] var的值运行许多预定的“答案”。 如果不满足任何条件,您也可以使用默认值。 在此处阅读更多内容:http://www.php.net/manual/en/control-structures.switch.php

<?php
switch($_POST['action']) {

case "like":
echo "You like it";
break;

case "hate":
echo "You hate it";
break;

}

?>

<form action="thispage.php" method="post">
  <input type="submit" name="action" value="like" />
  <input type="submit" name="action" value="hate" />
</form>

答案 1 :(得分:1)

是的,有可能。你有正确的想法。但是,您的if语句中的检查是错误的。而不是检查特定值,因为提交按钮具有不同的名称,您只需检查它们在POST数据中的存在。

if (isset($_POST['like'])) {

如果您想检查特定值,可以使用以下内容:

if (isset($_POST['like']) && $_POST['like'] === 'I liked this.') {

正如您刚刚学习的那样,我建议您熟悉调试技巧。在这种情况下,验证从表单中获取的数据最简单的方法是使用print_r($_POST)

答案 2 :(得分:0)

试试这个

<form action="" method="post">
  <input type="submit" name="like" value="I liked this." />
  <input type="submit" name="dislike" value="I hated this." />
</form>



<?php

if(isset($_POST['like']) ){
    echo "User says:  ". $_POST['like'];
    }


if(isset($_POST['dislike']) ){
    echo "User says:  ". $_POST['dislike'];
}
?>