1

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

代码:

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 代码中检测按下了哪个图像按钮?

4

5 回答 5

3
  1. 将名称更改为数组name="flag_submit[1]"。为每个图像分配一个不同的值,你就知道了。

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

或者更好的是,遍历 if$_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.';
        }
    }
?>

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

于 2013-02-07T11:19:57.500 回答
1

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

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

代码

<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 内容如下:

代码

<?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。

于 2013-02-07T11:25:47.903 回答
1

第一个代码对我来说很好,将名称更改为数组名称 =“flag_submit[1]”。为每个图像分配一个不同的值,你就知道了。

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

if (isset($_POST['flag_submit'][1]))
于 2015-04-15T13:08:39.587 回答
0

您可以有多个具有相同名称但值不同的 <button type="submit"> 元素可以包含图像,只会发送已单击的元素的值。

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

于 2013-02-07T11:22:19.603 回答
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>
于 2013-02-07T11:58:29.347 回答