两个图像按钮或两个提交

时间:2011-01-19 19:55:56

标签: php image forms button submit

我是一名.NET开发人员,几乎放弃了使用PHP的个人项目。

我想要以下PHP页面:

带有两个随机图像(由代码标识)的表单,用户在它们之间选择,然后表单刷新,负责选择。简单。

我已经完成了随机图像部分(存储在一个表中的URL。我打算将来改变它,但现在这不是问题),所以我必须做出“选择”部分。我想要让两个图像都可以点击,或者在它们下面放两个带有相同文字的按钮。

在PHP中,我无法想象这种“提交”的工作方式,主要是因为我已经习惯了ASP.NET。

我尝试过使用两个普通的提交按钮,但我不希望它们都有不同的文本,但用于区分这两个按钮的相同属性也用于编写按钮的文本:值。更不用说整个PHP_SELF以及在页面加载开始时检查值似乎太过于hacky。

然后我考虑制作两个表单,每个表单都有一个通过查询字符串发送代码的操作,但我不希望这样。我不希望(常规)用户只需键入URL即可执行操作。

请记住:因为在刷新页面时我丢失了变量值,所以我必须发送所选图像的代码(而不是通过查询字符串)。

这种冲突让我考虑放弃这个项目。当我自己学习ASP.NET时,这非常简单,直观,我很快就想到了。

4 个答案:

答案 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数组中。这样,您可以区分值,但仍然具有相同的文本/值。