Problème dans une fonction en JavaScript

Résolu
Bonjour, je suis en train de développer un système de quizz sur un site de géographie. Pour les réponses, j'ai mis en place des radio-bouton que l'utilisateur doit utilisé pour donner sa réponse. Voici le code JS :

<script type="text/javascript"> 
function Radio(question, point) {
    if (document.getElementById('<?php echo $bonnereponse['capitale']; ?>').checked == true) { 
        document.getElementById('Choix').innerHTML = '<br><b>Bonne réponse <?php echo $bonnereponse['capitale']; ?></b><br><br><form action="capitale.php" method="POST"><input type="hidden" value="toto" name="toto"><input type="hidden" value="' + question + '" name="qts"><input type="hidden" value="' + point + '" name="pts"><input type="submit" value="Capitale suivante" name="boutonquestion"></form>';
    } 
    else {
        var passage = passage + 1
        if(passage == 1){
         point = point - 10
         document.getElementById('Reponse').innerHTML = '<center><b>Total des points : ' + point +'</b></center>';
        }
        if(passage == 2){
         point = point - 20
         document.getElementById('Reponse').innerHTML = '<center><b>Total des points : ' + point +'</b></center>';
        }
        if(passage == 3){
         point = point - 30
         document.getElementById('Reponse').innerHTML = '<center><b>Total des points : ' + point +'</b></center>';
        }
        if(passage == 4){
         location.reload();
        }
    } 
} 
</script>


La partie 'if' fonction car la fonction détecte la bonne réponse, par contre la partie 'else' ne fonctionne pas, lorsqu'on choisit une mauvaise réponse rien ne se passe, or sauf erreur de ma part, le code devrait faire perdre à l'utilisateur 10, 20, 30 points ou recharger la page.

Merci de votre aide.

4 réponses

Résumé de la discussion

Un système de quiz géographique utilise des radio-boutons et une logique de points en JavaScript, mais la branche « else » ne déduit pas les points pour les mauvaises réponses. Le constat central est que la variable de progression, nommée passage, n'est pas correctement initialisée ou gérée, ce qui empêche l'incrément et l’application des pénalités. Plusieurs pistes évoquées visent à corriger l'initialisation de passage et à assurer l'incrémentation conditionnelle, ainsi que la gestion des valeurs via URL ou variable globale pour retirer 10, 20 ou 30 points. En outre, certaines propositions suggèrent de remplacer la logique par une recharge conditionnelle ou de clarifier la séparation PHP/JS afin d'éviter les conflits et les erreurs de syntaxe.

Bobot (l’IA à votre service)
  1. Le problème des points est résolut, c'est plus simple en réceptionnant en php. Maintenant j'aimerais savoir comment faire pour envoyer deux valeurs

    J'ai fais ceci mais ça ne fonctionne pas :

    document.location="http://mickael.bernaudeau.free.fr/capitale.php?point2=point&question2=question
    


    J'ai également pensé à ceci mais toujours pas de résultat :

    document.location="http://mickael.bernaudeau.free.fr/capitale.php?point2="+point"&question2="+question 
    
    0
    1. document.location="http://mickael.bernaudeau.free.fr/capitale.php?point2="+point+"&question2="+question
      0
    2. Merci à vous deux Vincent et vordano pour aide et votre patience, problème résolu
      0
  2. essaye -->

    <script type="text/javascript">

    <?php
    if (isset($_GET['point2'])
    {echo "var point3 = ".$_GET['point2']." ; var point = ".$_GET['point2'];

    }
    else
    {echo "var point3 = 100 ; var point =100";}

    function Radio(question, point) {
    if (document.getElementById('Alger').checked == true) {
    document.getElementById('Choix').innerHTML = '<br><b>Bonne réponse Alger</b><br><br><form action="capitale.php" method="POST"><input type="hidden" value="' + question + '" name="qts"><input type="hidden" value="' + point + '" name="pts"><input type="submit" value="Capitale suivante" name="boutonquestion"></form>';
    }
    else {
    passage = passage + 1
    if (document.location.href!=document.location.href.split("point2=")[0])
    { point3=document.location.search.split("point2=")[1];}
    if(passage == 1){
    if(point3!="" && point3 != 100){
    point3 = point3 - 10
    document.getElementById('Reponse').innerHTML = '<center><b>Total des points : ' + point3 +'</b></center>';
    }
    point = point - 10
    document.getElementById('Reponse').innerHTML = '<center><b>Total des points : ' + point +'</b></center>';
    }
    if(passage == 2){
    if(point3 && point3 != 100){
    point3 = point3 - 20
    document.getElementById('Reponse').innerHTML = '<center><b>Total des points : ' + point3 +'</b></center>';
    }
    point = point - 20
    document.getElementById('Reponse').innerHTML = '<center><b>Total des points : ' + point +'</b></center>';
    }
    if(passage == 3){
    if(point3 && point3 != 100){
    point3 = point3 - 30
    document.getElementById('Reponse').innerHTML = '<center><b>Total des points : ' + point3 +'</b></center>';
    }
    point = point - 30
    document.getElementById('Reponse').innerHTML = '<center><b>Total des points : ' + point +'</b></center>';
    }
    if(passage == 4){
    if(point3 && point3 != 100){
    point3 = point3 - 40
    document.getElementById('Reponse').innerHTML = '<center><b>Total des points : ' + point3 +'</b></center>';
    }
    point = point - 40
    question = question + 1
    document.location="http://mickael.bernaudeau.free.fr/capitale.php?point2="+point
    }
    }
    }
    </script>
    0
    1. du code qui pourrait t'être utile:
      /**
       * Retourne la valeur d'un paramètre d'une url
       * 
       * @param string param
       * nom du paramètre dont on souhaite avoir la valeur
       * @param url
       * url dans laquel on souhaite récupérer le paramètre ou rien si l'on souhaite travailler sur l'url courante
       * @return String
       * @author Labsmedia
       * @see http://www.labsmedia.com/index.html
       * @licence GPL
       */
      function getParamValue(param,url)
      {
      	var u = url == undefined ? document.location.href : url;
      	var reg = new RegExp('(\\?|&|^)'+param+'=(.*?)(&|$)');
      	matches = u.match(reg);
      	return matches[2] != undefined ? decodeURIComponent(matches[2]).replace(/\+/g,' ') : '';
      }
      0
      1. la variable passage n'est égal à rien, donc on ne peut pas l'incrémenter au début du else :)
        1
        1. Ok merci vordano, c'est vraiment très facile, :)
          0
        2. connaîtrais-tu une fonction comme reload() mais dans laquelle on peut envoyé un paramètre (ici le nombre de point restant de l'utilisateur)?
          0
        3. il y as document.location je crois, après tu met les paramètres en get
          0
        4. ok ça ferait quelque chose comme ceci?

          if(passage == 4){
                   document.location = point;
                  }


          Si oui comment je fais pour le récupérer au début de la page, sachant que le reste de la page est en php?
          0
        5. est ce que tu as cherché sur google pour utiliser la méthode location et la récupération de paramètres d'une url ?
          0