2012-05-24 122 views
3

我已经开始为关于生物的游戏编写一个PHP脚本,有4个是/否问题,我想要做的是编写一个函数,它将显示2个按钮是和否,然后每次运行该函数时给出不同的名称,例如yes1和no1,然后在下次运行该函数时,按钮的名称将是yes2和no2。每次增加变量1的PHP函数

我已经试图做到这一点,但它不能正常工作,下面是我迄今为止所做的代码,任何帮助将不胜感激。

<?php 
session_set_cookie_params(2592000); 
session_start(); 
?> 

<html> 
<head> 
<title>Creature Guessing Game</title> 
</head> 
<body> 
<h1>Creature Guessing Game</h1> 
<p> Welcome to the creature guessing game! </p> 
<p>Click the button below to start or restart the game </p> 

<form method="post" action="Creatures.php"> 
<input type="submit" name="start" value="Start Game" /> 
</form> 
<?php 
$questions = array('Does the creature live on land?', 'Does it have wings?', 'Does it live near water?', 'Can it fly?'); 
function repeat() 
{ 
$number = 0; 
$number++; 
echo "<form method ='post' action='Creatures.php'> 
<input type='submit' name='yes'.$number value='Yes' /> 
<input type='submit' name='no'.$number value='No' /> 
</form>"; 

} 
//If form not submitted, display form. 
if (!isset($_POST['start'])){ 
?> 
<?php 
} //If form is submitted, process input 
else{ 
switch($_POST) 
{ 
case yes1: 
echo $questions[0]; 
repeat(); 
break; 
case no1: 
echo $questions[1]; 
repeat(); 
break; 
case yes2: 
echo $questions[2]; 
repeat(); 
break; 
case no2: 
$questions[3]; 
repeat(); 
} 
} 
?> 
</body> 
</html> 
+0

每次通话时间'重复()'你将'$ number'设置为'0',然后递增。如果在设置'$ questions'之后但在定义'repeat()'之前设置了'$ number'? – robert

+0

我刚刚尝试过,但出于某种原因$数字始终设置为0,因为我试图回显它,无论多少次我称为函数$数字仍然是0 – Harry12345

回答

4

要做到这一点,你需要保持请求之间的状态。

function repeat() { 
     $number = $_SESSION['number']; 
     $number++; 
     echo "<form method ='post' action='Creatures.php'> 
    <input type='submit' name='answer' value='Yes' /> 
    <input type='submit' name='answer' value='No' /> 
    </form>"; 
    $_SESSION['number'] = $number; 
} 

开关

if($_POST['answer']=='Yes') { 
     switch($_SESSION['number']) { 
      case 1: 
      break; 
      case 2: 
      break; 
     } 
    } else { 
     switch($_SESSION['number']) { 
      case 1: 
      break; 
      case 2: 
      break; 
     } 
    } 
+0

谢谢!该函数像我现在想要的那样工作,switch语句仍然不起作用,但我现在可能只是尝试一些东西而不是开关。 – Harry12345

+0

修复你的开关在答案 – ShaaD

+0

这仍然不起作用,我希望开关语句做不同的事情取决于按下什么按钮(无论是或不是),也许有一些方法来使开关条件是1,并使第一种情况如果它是真的(例如$ _POST ='yes1'),第二种情况如果它不是真的。不知道你是否明白?如果你这样做可能吗? – Harry12345

0

您必须在会话中存储'号码',因为每次提交页面时都会丢失其值。

2

我不是在与接受的答案一致: 下面是一个更简单的方法去了解它没有会话:

function repeat() { 
     static $number = 0; 
     $number++; 
     echo "<form method ='post' action='Creatures.php'> 
    <input type='submit' name='answer' value='Yes' /> 
    <input type='submit' name='answer' value='No' /> 
    </form>"; 
}