简而言之:是否可以在页面上设置多个提交按钮,并在接收页面上检测单击了哪个提交按钮?
例如,想象一个显示随机电影海报的页面。有两个按钮:“我喜欢它”,“我讨厌它。”单击任一按钮时,表单将通过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") ...
所以我不知道该怎么做。任何人都可以给我一个提示吗?
答案 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'];
}
?>