Bonjour,

Je rencontre un petit problème avec mon code.

Ce que je fais

Je cherche à mettre en place un petit jeu Juste Prix avec tableau de score. Les choses prisent indépendamment les unes des autres, je n'ai pas de problème, mais là où je coince c'est dès que je dois les imbriquer les unes aux autres.

<?php

require 'pdo.php';
/*
- On demande un nom de joueur --- FAIT
- On détermine le chiffre qu'on doit deviner --- FAIT
- On débute le timer --- FAIT
- Si pas de post on affiche le formulaire de base --- FAIT
- Tant réponse fausse on indique si c'est plus ou si c'est moins et on incrémente les essaie --- FAIT
- Une fois la réponse juste on le félicite, on stop le timer, on stop l'incrémentation --- FAIT
- On inscrit les nouveaux résultat dans la BDD
- On affiche le tableau des scores
*/

$randnum = (int)rand(10000, 100000);
$findnum = (int)rand(1, $randnum);
$time1 = time();
$i = (int)1;

if(!isset($_POST['username']) && !isset($_POST['answer'])):?>
    <form action="" method="POST">
    <label for="username">Quel est votre pseudo: <br/>
        <input type="text" name="username" placeholder="Pseudo">
    </label>
    <br/>
    <button type="submit">Valider</button>
    </form>
<?php elseif (isset($_POST['username']) && !isset($_POST['answer'])):?>
    <em>Vous devez trouver un chiffre entre 1 et <?= $randnum?></em>
    <form action="" method="POST">
        <label for="answer">Votre réponse: <br/>
            <input type="text" name="answer" placeholder="Votre réponse">
        </label>
        <br/>
        <button type="submit">Valider</button>
    </form>
<?php else:
    $answers = $_POST['answer'];
    while ($answers != $findnum) {
            if($answers === $findnum):
                $time2 = time();
                $time3 = date('H:i:s', ($time2-$time1));
                echo "Bravo tu as trouvé le bon chiffre en $time3 et $i essaies";
                break;
            elseif ($answers <= $findnum):
                echo "C'est plus!";
                echo $findnum;
                $i++;?>
                <em>Vous devez trouver un chiffre entre 1 et <?= $randnum?></em>
                <form action="" method="POST">
                    <label for="answer">Votre réponse: <br/>
                        <input type="text" name="answer" placeholder="Votre réponse">
                    </label>
                    <br/>
                    <button type="submit">Valider</button>
                </form>
                <?php break;
            elseif ($answers >= $findnum):
                echo "C'est moins!";
                echo $findnum;
                $i++;?>
                <em>Vous devez trouver un chiffre entre 1 et <?= $randnum?></em>
                <form action="" method="POST">
                    <label for="answer">Votre réponse: <br/>
                        <input type="text" name="answer" placeholder="Votre réponse">
                    </label>
                    <br/>
                    <button type="submit">Valider</button>
                </form>
                <?php break;
            else:
                echo "Veuillez entrer une valeur valide!";?>
                <em>Vous devez trouver un chiffre entre 1 et <?= $randnum?></em>
                <form action="" method="POST">
                    <label for="answer">Votre réponse: <br/>
                        <input type="text" name="answer" placeholder="Votre réponse">
                    </label>
                    <br/>
                    <button type="submit">Valider</button>
                </form>
                <?php break;
            endif;
            break;

    };
endif;

Ce que je veux

Je souhaite faire en sorte que la variable $randnum et $findnum ne change pas. Je souhaite également simplifier mon code afin d'appeler mon formulaire conditionné au $_Post['username'] ainsi je pourrais inseré le nom du joueur et son score.

Ce que j'obtiens

J'en suis arrivée au point où la boucle s'éxecute, mais la variable $randnum et $findnum change à chaque $_POST et ce peu importe ce que je fais.

2 réponses


Carouge10
Réponse acceptée

Bonsoir,
Il faut stocker ces valeurs dans une sessions par exemple afin de ne pas les générer à chaque fois que tu appelles la page.
Si la session existe alors je fais le jeu (ou autre), si elle n'existe pas, je les génères

Je te remercie j'ai pu résoudre les différents problèmes.