我是一名.NET开发人员,几乎放弃了使用PHP的个人项目。
我想要以下PHP页面:
带有两个随机图像(由代码标识)的表单,用户在它们之间选择,然后表单刷新,负责选择。简单。
我已经完成了随机图像部分(存储在一个表中的URL。我打算将来改变它,但现在这不是问题),所以我必须做出“选择”部分。我想要让两个图像都可以点击,或者在它们下面放两个带有相同文字的按钮。
在PHP中,我无法想象这种“提交”的工作方式,主要是因为我已经习惯了ASP.NET。
我尝试过使用两个普通的提交按钮,但我不希望它们都有不同的文本,但用于区分这两个按钮的相同属性也用于编写按钮的文本:值。更不用说整个PHP_SELF以及在页面加载开始时检查值似乎太过于hacky。
然后我考虑制作两个表单,每个表单都有一个通过查询字符串发送代码的操作,但我不希望这样。我不希望(常规)用户只需键入URL即可执行操作。
请记住:因为在刷新页面时我丢失了变量值,所以我必须发送所选图像的代码(而不是通过查询字符串)。
这种冲突让我考虑放弃这个项目。当我自己学习ASP.NET时,这非常简单,直观,我很快就想到了。
答案 0 :(得分:4)
如何为提交按钮提供两个不同的名称:
<input type="submit" name="submit1" value="submit" />
<input type="submit" name="submit2" value="submit" />
然后你可以用php检查以下内容:
if (isset($_REQUEST['submit1']) && $_REQUEST['submit1'] == "submit") {
//its image 1
} else if (isset($_REQUEST['submit2']) && $_REQUEST['submit2'] == "submit") {
//its image 2
}
顺便说一句,您不必使用$ _REQUEST数组,您可以使用$ _GET或$ _POST,具体取决于您的表单操作。我不确定你使用的是哪一个,所以我把$ _REQUEST放在这里,涵盖了两个。
答案 1 :(得分:1)
首先,您需要创建要通过POST而不是GET提交的表单:
<form name="myform" action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
<button type="submit" name="submitButton" value="image1"><img src="xxx"></button>
<button type="submit" name="submitButton" value="image2"><img src="xxx"></button>
</form>
现在在PHP方面:
if(isset($_POST['submitButton'])) {
$image = $_POST['submitButton'];
}
如果用户点击按钮,则会触发该段代码。
以下是tis如何组合在一起的完整示例:
<?php
if(isset($_POST['submitButton'])) {
echo $_POST['submitButton'];
}
?>
<html>
<body>
<form name="myform" action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
<button type="submit" name="submitButton" value="image1"><img src="xxx"></button>
<button type="submit" name="submitButton" value="image2"><img src="xxx"></button>
</form>
</body>
</html>
答案 2 :(得分:0)
只有一个表格。这真的是你所需要的一切。
为提交按钮指定相同的名称和不同的值。
<input type="submit" name="submit" value="Option1" />
<input type="submit" name="submit" value="Option2" />
发布表单后,您可以针对每个值检查$_POST['your_submit_value_name']
。
此外,如果您将<form action="" method="post" enctype="multipart/form-data">
留空,则会将其发布给自己。因此,当您加载页面时,只需检查:
if (!empty($_POST)) {
if ($_POST['submit'] == 'value1') {
// Do A
} else if ($_POST['submit'] == 'value2') {
// Do B
}
}
别忘了验证用户数据!
答案 3 :(得分:0)
对于提交按钮问题,您可以使用提交按钮的name属性来确定单击了哪个按钮。
这个单击的按钮将激活一个键出现在$ _POST数组中。这样,您可以区分值,但仍然具有相同的文本/值。