1

ユーザーがアップロードされた画像を評価できる Web サイトを作成しています。現在、ラジオボタンと送信ボタンを使用して、ユーザーの評価を取得し、システム内に保存しています。コードが画像のクリックを使用してユーザーの評価を取得するように、これを変更したいと思います。これまでのところ、次のコードがありますが、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 を array に変更し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.';
        }
    }
?>

あなたの場合、送信する値は気にしません。気にする必要があるのは、フォームの送信に使用されたキーだけです。キーセットは常に 1 つしかないためです。

于 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
        )

)

2 番目の画像をクリックすると、次のようになります。

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

)

これは、Opera、IE、および Mozilla で動作します。

于 2013-02-07T11:25:47.903 に答える
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 に答える