2012-05-24 1 views
3

J'ai commencé à écrire un script PHP pour un jeu sur les créatures, il y a 4 questions oui/non et ce que j'essaye de faire est d'écrire une fonction qui affichera 2 boutons qui disent oui et non et donnez ensuite des noms différents chaque fois que j'exécute la fonction, par exemple yes1 et no1, puis la prochaine fois que la fonction sera exécutée, les noms des boutons seront yes2 et no2.Fonction PHP pour incrémenter la variable de 1 à chaque fois

J'ai déjà essayé de le faire mais ça ne fonctionne pas correctement, voici le code que j'ai fait jusqu'à présent, toute aide serait grandement appréciée.

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

Chaque fois que vous appelez 'répétition() 'vous définissez' $ number' sur '0' et l'incrémentez ensuite. Que faire si vous définissez '$ number' après avoir défini' $ questions' mais avant que 'repeat()' soit défini? – robert

+0

Je viens de l'essayer mais pour une raison quelconque, le nombre $ est toujours mis à 0 comme j'ai essayé de l'écho et peu importe combien de fois j'ai appelé la fonction $ nombre resté 0 – Harry12345

Répondre

4

Pour ce faire, vous devez maintenir l'état entre les demandes.

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; 
} 

interrupteur

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

Merci! La fonction fonctionne comme je le voulais maintenant, l'instruction switch ne fonctionne toujours pas mais je pourrais essayer quelque chose au lieu d'un switch maintenant. – Harry12345

+0

Réparer votre commutateur sur la réponse – ShaaD

+0

Cela ne fonctionne toujours pas, je veux que l'instruction switch fasse des choses différentes selon le bouton pressé (oui ou non), peut-être il y a un moyen de rendre la condition de commutation oui1 et faire premier cas si c'est vrai (ie $ _POST = 'oui1') et le second cas si ce n'est pas vrai. Je ne sais pas si tu comprends? Si c'est le cas, est-ce possible? – Harry12345

0

Vous devez stocker 'nombre' en session car il perdra sa valeur à chaque fois qu'il sera soumis.

2

Je ne suis pas en accord avec la réponse acceptée: est ici un moyen plus facile d'y parvenir sans session:

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>"; 
} 
Questions connexes