11
votes

Fonction PHP pour augmenter la variable de 1 à chaque fois

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'essaie de faire est d'écrire une fonction qui affiche 2 boutons qui disent oui et non et donnent des noms différents chacun Temps i Exécution de la fonction, par exemple Oui1 et NO1, puis la prochaine fois que la fonction est exécutée, les noms des boutons seront YES2 et NO2.

J'ai essayé de le faire déjà, mais cela ne fonctionne pas correctement, ci-dessous Le code que j'ai fait jusqu'à présent, toute aide serait très appréciée. P>

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


2 commentaires

Chaque fois que vous appelez répéter () vous définissez $ numéro à 0 puis incrémentation. Et si vous définissez $ numéro après avoir défini $ questions mais avant répéter () est défini?


Je viens d'essayer que, puis pour une raison quelconque, le numéro de $ est toujours réglé sur 0 comme je l'ai essayé de l'écho et que peu importe combien de fois j'ai appelé la fonction $ Nombre resté 0


3 Réponses :


1
votes

Vous devez stocker le "numéro" dans la session ou la cookie car il perdra la valeur à chaque page d'heure soumise (rechargée).


0 commentaires

11
votes

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

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


2 commentaires

Merci! La fonction fonctionne comme si je le voulais maintenant, l'instruction de commutation ne fonctionne toujours pas mais je pourrais juste essayer quelque chose au lieu d'un commutateur maintenant.


Cela ne fonctionne toujours pas, je souhaite que la déclaration de commutation effectue différentes choses en fonction de l'appuyage de quel bouton (oui ou non), peut-être qu'il y a un moyen de faire la condition de commutation Yes1 et de faire le premier cas si c'est vrai ( c'est-à-dire $ _Post = 'YES1') et le second cas si ce n'est pas vrai. Je ne sais pas si tu comprends ?? Si vous faites, c'est cela possible?



6
votes

Je ne suis pas en accord avec la réponse acceptée: Voici un moyen plus facile d'y aller sans session: xxx


0 commentaires