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>

这个程序会发生什么? 每当单击一个圆圈时,它就会变成红色。单击第二个圆圈时,它变为绿色,第一个圆圈显示为蓝色。然而,当单击第二个圆圈时,第一个圆圈应显示为红色,第二个圆圈应显示为绿色。

据我所知,这个程序存在逻辑或概念上的错误。如果有人能告诉我哪里出错了,我将不胜感激。几个小时以来,我一直试图弄清楚这一点。

4

2 回答 2

2

$ SESSION 不能以数字键开头,请在它们后面加上 circle 之类的东西,例如:

$_SESSION['circle_'.$i]

希望有帮助。我在我的系统上对其进行了测试,这解决了这个问题。

于 2012-09-23T17:41:42.723 回答
1

一次只能提交一个表单。如果您单击您的第一张图片,其他图片的代码将进入 else 分支(“检查之前是否点击过图片”),并且颜色将重置为蓝色。顺便说一句:只有所述分支中的“蓝色”行有任何作用,您可以删除其余部分。此外,您应该在将会话字段设置为“蓝色”之前检查它是否为空。

于 2012-09-23T17:44:36.747 回答