嘿,我是网络编程的新手。我过去几天一直在学习PHP,但我坚持一件事。
我的代码中有一个表单标记,它有两个提交按钮来操作数据。 由于我的表单标签上只能有一个操作定义,因此它只能引导我访问一个页面。 (不太确定)
现在,根据单击表单上的按钮,我想加载一个不同的页面。 一种方法是检查在if-else构造中单击的按钮,然后在分支中使用echo'...'并显示它就像是不同的页面。但出于某种原因,这似乎并不合适。有人可以给我一个更好的解决方案吗?感谢。
答案 0 :(得分:2)
一种方法是使用Javascript根据单击的控件切换表单的操作。以下示例使用jQuery库:
<form id="theForm" action="foo.php">
...
<input id="first" type="submit"/>
<input id="second" type="submit"/>
</form>
$(document).ready(function() {
$("#theForm input").click(function(e) {
e.preventDefault();
if(e.target.id == 'first') {
$("#theForm").attr("action", "somePage.php");
} else {
$("#theForm").attr("action", "anotherPage.php");
}
alert($("#theForm").attr("action"));
$("#theForm").submit();
});
});
答案 1 :(得分:1)
但出于某种原因,这似乎不对。
这是错误的假设 任何其他解决方案都会更糟糕。
检查服务器端是唯一可靠的解决方案
但是,分支中的echo
不是必需的。还有很多其他方法
使用include
语句是最明显的一个。
答案 2 :(得分:0)
仅作为参考... int HTML5按钮可以为我重新定义表单的动作,方法,类型等http://w3schools.com/html5/tag_button.asp,这是控制表单的好方法:)
答案 3 :(得分:-2)
添加基于@ karim79的另一个解决方案,因为它用PHP标记:
<form id="theForm" action="foo.php">
...
<input id="first" name="button" value="first" type="submit"/>
<input id="second" name="button" value="second" type="submit"/>
</form>
在你的foo.php中,做一下这样的事情:
<?php
$submit = isset($_GET['button']) ? trim($_GET['button']) : '';
if($submit == 'first')
{
header('Location: somePage.php');
}
else if($submit == 'second')
{
header('Location: anotherPage.php');
}
?>
要点:
为了能够阅读你的按钮(2个提交按钮),你需要在每个按钮上添加name
。为简单起见,只需在两者上使用相同的名称即可。然后,添加不同的value
。接下来,您需要通过检查该特定按钮上发送的值来了解所点击的按钮。