PHP多图像按钮提交表单

时间:2013-02-07 11:13:03

标签: php html submit imagebutton

我一直在创建一个网站,我的用户可以对已上传的图片进行评分。目前,我使用单选按钮和提交按钮来获取用户评级并将其保存在系统中。我想更改此设置,以便代码使用图片点击来获得用户评分。到目前为止,我有以下代码,但它只适用于一个图像按钮。是否有任何方法可以根据单击的图像来更改此结果以获得结果。

代码:

HTML

<form>
<input
        type="image"
        name="flag_submit"
        src="img/Flag.png"
        onmouseover="this.src='img/Flag_Click.png'"
        onmouseout="this.src='img/Flag.png'"
        height="30"
        width="30"
        />
</form>

PHP

if (isset($_POST['flag_submit_x']))
{
    //Do process of rating.
}   

有什么方法可以创建多个图像按钮,并且在PHP代码中检测到按下了什么图像按钮?

5 个答案:

答案 0 :(得分:3)

  1. 将名称更改为数组name="flag_submit[1]"。为每个图像分配不同的值,然后就可以了。

  2. 在php端将其作为数组读取:if (isset($_POST['flag_submit'][1]))

  3. 或者更好的是,如果$_POST['flag_submit']循环,并找到所有值:

    foreach ( $_POST['flag_submit'] as $value )  {
        echo $value . ' has been clicked.';
    }
    

    <form method="post">
    <input type="image" name="rateButton[1]" src="img/Rate1.png" height="40" width="40" value="1"/> T
    <input type="image" name="rateButton[2]" src="img/Rate1.png" height="40" width="40" value="1"/> T
    <input type="image" name="rateButton[3]" src="img/Rate1.png" height="40" width="40" value="1"/> T
    <input type="image" name="rateButton[4]" src="img/Rate1.png" height="40" width="40" value="1"/> T
    </form>
    <pre>
    <?php
        if ( isset( $_POST['rateButton'] ) ) {
            foreach ( $_POST['rateButton'] as $key => $value ) {
                echo 'Image number '.$key.' was clicked.';
            }
        }
    ?>
    

    在您的情况下,您不关心,它发送什么价值,您需要关心的是用于提交表单的密钥,因为始终只有一个密钥集。

答案 1 :(得分:1)

这是一个可能有帮助的技巧:

我创建了一个表格的HTML页面:

CODE

<html><body><form method="post" action="show_post.php">
<input type="image" name="stamp[1134118800]" src="redstar.gif" value="red">
<input type="image" name="stamp[1134140400]" src="greenstar.gif" value="green">
</form></body></html>

表单提交的脚本show_post.php读取:

CODE

<?php
print '<html><body><pre>';

print_r ($_POST);

print '</pre></body></html>';
?>

当我点击第一张图片时,我得到:

Array
(
    [stamp] => Array
        (
            [1134118800] => 21
        )

)

当我点击第二张图片时,我得到:

Array
(
    [stamp] => Array
        (
            [1134140400] => 15
        )

)

这适用于Opera,IE和Mozilla。

答案 2 :(得分:1)

第一个代码对我来说很好,对 将名称更改为数组名称=&#34; flag_submit [1]&#34;。为每个图像分配不同的值,然后就可以了。

在php端将其作为数组读取:

if (isset($_POST['flag_submit'][1]))

答案 3 :(得分:0)

您可以有多个&lt; button type =“submit”&gt;具有相同名称但可以包含图像的不同值的元素,只会发送已点击的元素的值。

有关详细信息,请参阅规范:http://www.w3.org/html/wg/drafts/html/master/forms.html#the-button-element

答案 4 :(得分:0)

这可能会对你有所帮助

<?php
if($_POST['button'])
{
    echo "you have pressed button ".$_POST['button'];
}
?>
<style>
    input.overridecss {
    background-color: transparent;
    border: 0px;
    background-position: center;
    background-repeat: no-repeat;
    background-image: url(http://i49.tinypic.com/rm2w0i.png);
}
</style>
<form method="POST">
    <input type="submit" name="button" value="1" class="overridecss"/>
    <input type="submit" name="button" value="2" class="overridecss"/>
    <input type="submit" name="button" value="3" class="overridecss"/>
    <input type="submit" name="button" value="4" class="overridecss"/>
    <input type="submit" name="button" value="5" class="overridecss"/>
</form>