0

私のプログラムの目的1.5〜6個の円がそれぞれ青い色の私のサイトに表示されます。2.円をクリックすると、永久に赤または緑に変わります。

これが私のコードです:

<?php session_start(); ?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Let's see !</title>
</head>
<body>
<?php 
define("SIZE", 5);


for ( $i = 0 ; $i < SIZE ; $i++ ) //Initializes all Color Blocks to BLUE if not clicked
    {
        //If Image has been clicked, it takes a Color RED or GREEN
            if ( isset($_POST[$i."form"]) ) 
        {
            if($i % 2 == 0)
            $_SESSION[$i] = "green.jpg";
            else
            $_SESSION[$i] = "red.jpg";
        }
        else
        {   //to check if image was previously clicked.
            if ( $_SESSION[$i] == "green.jpg")
                $_SESSION[$i] = "green.jpg";

            elseif ( $_SESSION[$i] == "red.jpg")
                $_SESSION[$i] = "red.jpg";  
            else    //if never clicked it will be made blue.
                $_SESSION[$i] = "blue.jpg";  
        }
    }

for ( $i = 0 ; $i < SIZE ; $i++ )
{
?>
<form method="POST" action="index.php">
<input type="image" width=120 src="<?php echo $_SESSION[$i]; ?>" name="mainin"/> 
<input type="hidden" name="<?php echo $i."form"; ?>" value="" /> 
</form>
<?php }
echo session_id(); //Sessions are working correctly. No issue with them.
?>
</body>
</html>

このプログラムで何が起こりますか? 円をクリックすると、赤に変わります。2番目の円をクリックすると、緑に変わり、最初の円が青で表示されます。一方、2番目の円をクリックすると、最初の円は赤で、2番目の円は緑で表示されます。

私が感じる限り、このプログラムには論理的または概念的なエラーがあります。誰かが私がどこで間違ったのか教えてくれれば、私は素晴らしいでしょう。私はこれを何時間も理解しようとしてきました。

4

2 に答える 2

2

$ SESSIONは数字キーで始めることはできず、円のようなものを追加します。例:

$_SESSION['circle_'.$i]

お役に立てば幸いです。私は自分のシステムでそれをテストしました、そしてこれは問題を修正します。

于 2012-09-23T17:41:42.723 に答える
1

一度に送信されるフォームは1つだけです。最初の画像をクリックすると、他の画像のコードがelseブランチに入り(「画像が以前にクリックされたかどうかを確認する」)、色が青にリセットされます。ところで:上記のブランチの「青い」行だけが何もしません。残りは削除できます。また、「青」に設定する前に、セッションフィールドが空かどうかを確認する必要があります。

于 2012-09-23T17:44:36.747 に答える