Récupérer la valeur d'un radio bouton choisi

Résolu
Mickael86480 Messages postés 698 Statut Membre -  
Mickael86480 Messages postés 698 Statut Membre -
Bonjour, je suis en train de mettre en place un quizz sur un site de géographie. Pour la première partie du quizz, la question est de savoir à quelle pays correspond le drapeau affiché. Pour que l'utilisateur choisisse un pays il a, à sa disposition, 4 radio bouton avec en valeur le nom des pays. Le problème est pour la vérification de la réponse par rapport à la bonne réponse. Comment savoir quel est le radio bouton choisi et s'il s'agit de la bonne réponse?

Voici le code que j'ai réalisé jusque là :

//création d'une array contenant les réponses et la bonne réponse à la question
$reponses = array(''.$data['nom_pays'].'',''.$data1['nom_pays'].'',''.$data2['nom_pays'].'',''.$data3['nom_pays'].'');
$solution = ''.$data['nom_pays'].'';

echo'<center><img src=img/drapeau/'.$data['id'].'.png border=2 ></center><br><br>';

//on mélange le tableau
if(shuffle($reponses))
{
foreach($reponses as $value)
{
echo '<center><input type="radio" name="reponses" value='.$value.'>'.$value.'</center><br>';
}
}

echo'<center><form action="drapeau.php" method="post" />
<input type="submit" name="valider" value="Valider">
</form></center>';

merci de bien vouloir m'aider

3 réponses

  1. Utilisateur anonyme
     
    J'ai testé sous EasyPHP ça fonctionne :

    <?php  
    # Réponce récupéré dans la base de donnée : 
    $Reponse = '3'; 
    ?> 
    
    <script type="text/javascript"> 
    function Radio() {  
     if (document.getElementById('Radio<?php echo $Reponse; ?>').checked == true) {  
      document.getElementById('Reponse').innerHTML = 'Bravo !';  
      }  
      
     else { document.getElementById('Reponse').innerHTML = ''; }  
      
    }  
    </script> 
    
    
    <img src="http://www.orca-sejours.fr/fr/images/ALLEMAGNE%20drapeau.jpg"> 
    
    <!-- Ici c'est une boucle PHP (while) qui rajoute le numero dans chaque id --> 
    <form action="#"> 
    <input type="radio" id="Radio1" name="France" value="France" onClick="Radio();"> France 
    <input type="radio" id="Radio2" name="Belgique" value="Belgique" onClick="Radio();"> Belgique 
    <input type="radio" id="Radio3" name="Allemagne" value="Allemagne" onClick="Radio();"> Allemagne 
    </form> 
    
    <div id="Reponse"> </div>


    Copie dans ton colorateur de syntaxe !
    1
    1. Mickael86480 Messages postés 698 Statut Membre 41
       
      Ok merci mais est-ce qu'avec ce code, on a un message si la réponse choisie est bonne ou non? Car j'en ai aucun
      0
    2. Utilisateur anonyme
       
      Bin oui, si tu choisi Allemagne sa te met un message "bravo !" enfin chez moi sa fonctionne.
      0
    3. Mickael86480 Messages postés 698 Statut Membre 41
       
      Okey c'est vrai ça fonctionne, mais je ne sais pas où le mettre dans mon code, voici l'intégralité de ma page :

      <?php
      include ('connection.php') ;

      // On prépare la requète
      $sql = "SELECT id FROM pays WHERE niveau_quizz LIKE 0";
      $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

      // Calcul du nombre de résultats
      $nb = mysql_num_rows($req);

      // On place les résultats dans un tableau
      while($data = mysql_fetch_array($req))
      {
      $resultats[] = $data['id'];
      }

      // On prépare un nombre aléatoire entre 0 et le nombre de résultats
      $nb_min = 0;
      $nb_max = $nb-1;
      $nombre = mt_rand($nb_min,$nb_max);

      // On affiche le résultat aléatoire
      $id = $resultats[$nombre];
      $sql = 'SELECT * FROM pays WHERE id="'.mysql_real_escape_string($id).'"';
      $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
      $data = mysql_fetch_array($req);

      $nb_min = 0;
      $nb_max = $nb-1;
      $rep1 = mt_rand($nb_min,$nb_max);
      $rep2 = mt_rand($nb_min,$nb_max);
      $rep3 = mt_rand($nb_min,$nb_max);

      while($nombre == $rep1){
      $rep1 = mt_rand($nb_min,$nb_max);
      }

      while($nombre == $rep1){
      $rep2 = mt_rand($nb_min,$nb_max);
      }

      while($nombre == $rep1){
      $rep3 = mt_rand($nb_min,$nb_max);
      }

      $id1 = $resultats[$rep1];
      $id2 = $resultats[$rep2];
      $id3 = $resultats[$rep3];

      $requetesql = 'SELECT * FROM pays WHERE id="'.mysql_real_escape_string($id1).'"';
      $req = mysql_query($requetesql) or die('Erreur SQL !<br />'.$requetesql.'<br />'.mysql_error());
      $data1 = mysql_fetch_array($req);

      $requetesql2 = 'SELECT * FROM pays WHERE id="'.mysql_real_escape_string($id2).'"';
      $req2 = mysql_query($requetesql2) or die('Erreur SQL !<br />'.$requetesql2.'<br />'.mysql_error());
      $data2 = mysql_fetch_array($req2);

      $requetesql3 = 'SELECT * FROM pays WHERE id="'.mysql_real_escape_string($id3).'"';
      $req3 = mysql_query($requetesql3) or die('Erreur SQL !<br />'.$requetesql3.'<br />'.mysql_error());
      $data3 = mysql_fetch_array($req3);

      while(($data['nom_pays'] == $data1['nom_pays']) || ($data1['nom_pays'] == $data2['nom_pays']) || ($data1['nom_pays'] == $data3['nom_pays'])){
      $requetesql = 'SELECT * FROM pays WHERE id="'.mysql_real_escape_string($id1).'"';
      $req = mysql_query($requetesql) or die('Erreur SQL !<br />'.$requetesql.'<br />'.mysql_error());
      $data1 = mysql_fetch_array($req);
      }

      while(($data['nom_pays'] == $data2['nom_pays']) || ($data2['nom_pays'] == $data3['nom_pays'])){
      $requetesql2 = 'SELECT * FROM pays WHERE id="'.mysql_real_escape_string($id2).'"';
      $req2 = mysql_query($requetesql2) or die('Erreur SQL !<br />'.$requetesql2.'<br />'.mysql_error());
      $data2 = mysql_fetch_array($req2);
      }

      while($data['nom_pays'] == $data3['nom_pays']){
      $requetesql3 = 'SELECT * FROM pays WHERE id="'.mysql_real_escape_string($id3).'"';
      $req3 = mysql_query($requetesql3) or die('Erreur SQL !<br />'.$requetesql3.'<br />'.mysql_error());
      $data3 = mysql_fetch_array($req3);
      }

      //création d'une array contenant les réponses et la bonne réponse à la question
      $reponses = array(''.$data['nom_pays'].'',''.$data1['nom_pays'].'',''.$data2['nom_pays'].'',''.$data3['nom_pays'].'');
      $solution = ''.$data['nom_pays'].'';

      echo'<center><img src=img/drapeau/'.$data['id'].'.png border=2 ></center><br><br>';
      ?>

      <?php
      //on mélange le tableau
      if(shuffle($reponses))
      {
      foreach($reponses as $value)
      {
      echo '<center><input type="radio" name="reponses" value='.$value.'>'.$value.'</center><br>';
      }
      }

      echo'<center><form action="drapeau.php" method="post" />
      <input type="submit" onclick="verification();" name="valider" value="Valider">
      </form></center>';

      ?>
      0
    4. Utilisateur anonyme
       
      Je suis pas a l'aise avec ton code alors je t'en fait un de A a Z (en adméttant que la base de donnée est u fichier texte).
      0
    5. Mickael86480 Messages postés 698 Statut Membre 41
       
      Si je commente ça serai mieux peut-être?
      0
  2. Utilisateur anonyme
     
    Voila c'est sa que tu veut :
    http://alien06.free.fr/pays/index.php

    Le script choisi un drapeau au hasard

    J'ai mis un select à la place d'un radio, je trouve que c'est plus pratique mais sa reviens au même !
    1
    1. Mickael86480 Messages postés 698 Statut Membre 41
       
      Oui mais il s'agit d'un quizz, je suis pas sur que se soit pratique, est-ce possible par radio bouton?
      0
    2. Utilisateur anonyme
       
      Oui regarde sur le meme lien j'ai mis des radio a la place
      0
    3. Mickael86480 Messages postés 698 Statut Membre 41
       
      petit bug, je peux selectionné plusieurs radio bouton :)
      0
    4. Utilisateur anonyme
       
      Oui enfin ça c'est pas grave, tu peut télécharger le script la : http://dl.dropbox.com/u/39569085/pays.zip

      T'as plus qu'a l'adapter a ton site.
      0
    5. Mickael86480 Messages postés 698 Statut Membre 41
       
      merci pour ton aide Alien41
      0
  3. Utilisateur anonyme
     
    Le mieu c'est en Java Script avec un id pour chaque radio :

    <script type="text/javascript">  
    function Radio() {  
    if (document.getElementById('Radio1').cheked == true) {  
    document.getElementById('Reponse').innerHTML = 'Bravo !';  
    }  
    else {  
    document.getElementById('Reponse').innerHTML = '';  
    }  
    }  
    </script>  
    
    <div id="Reponse"></div>  
    
    
    <script type="text/javascript">  
    setInterval('Radio()', 500);  
    </script> 


    PS : je suis pas sur pour le "cheked"
    http://www.gmoreau.user.fr
    0
    1. Mickael86480 Messages postés 698 Statut Membre 41
       
      Okey je crois que ça s'écrit checked. Est-il possible d'expliquer le code que tu m'as donné stp.

      Car voici ce que j'ai fais, le code suivant est mis dans un fichier js :

      function Radio() {
      if (document.getElementById('Radio1').checked == true) {
      document.getElementById('Reponse').innerHTML = 'Bravo !';
      }
      else {
      document.getElementById('Reponse').innerHTML = '';
      }
      }

      ensuite dans la page courante php, j'ai mis cela :

      echo'<center><form action="drapeau.php" method="post" />
      <input type="submit" OnClick="Radio();" name="valider" value="Valider">
      </form></center>';

      la page n'affiche rien pas de "bravo" ou "mauvais" (ni d'erreur).

      PS: je débute en prog
      0
    2. Utilisateur anonyme
       
      Je te fait un code attend
      0