IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

recuperation de champs Radio et comparaison avec BD [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 114
    Par défaut recuperation de champs Radio et comparaison avec BD
    Bonjour
    j'affiche une questions et des boutons radios qui sont les reponses probables, le user doit choisir la bonne reponse, et soummettre vers la fin...

    les questions et les reponses, je les prends d'une base de données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     $sql7="SELECT id, id*0 + rand() AS ordre, question, propo1, propo2, propo3, propo4, coef, categorie FROM quiz WHERE categorie LIKE '%$catego%' ORDER BY ordre limit 0, $nbquestion";
    $res4=mysql_db_query($db, $sql7);
     
    // afficher les questions
    echo "<p class='titre'>";
    echo "Voici la liste des questions<br>";
    echo "</p>\n";
    while($row = mysql_fetch_Array($res4)){
      echo "<br>\n";
      echo "<b>";
      echo "<span class='soustitre'>";
      echo "$row[question]";
      echo "</span>\n";
      echo "</b>";
      if($row[coef]>1){
      echo "<font size=2>";
      echo " (coef. $row[coef])";
      echo "</font>";
      }
      echo "<br>\n";
      echo "<input type=\"radio\" name=\"$row[id]\" value=\"$row[propo1]\">";
      echo "$row[propo1]";
      echo "<br>\n";
      echo "<input type=\"radio\" name=\"$row[id]\" value=\"$row[propo2]\">";
      echo "$row[propo2]";
      echo "<br>\n";
      if($row[propo3]==TRUE){
      echo "<input type=\"radio\" name=\"$row[id]\" value=\"$row[propo3]\">";
      echo "$row[propo3]";
      echo "<br>\n";
      }
      echo "<input type=\"hidden\" name=\"idrow[]\" value=\"$row[id]\">";
    }
     
    // Envoyer le formulaire
    print ("<p><center><input type=\"submit\" name=\"Valider\" value=\"Soumettre les resultats\"></center>\n");
     
    // Fermer le formulaire
    print ("</form>\n");
    j'utilise un champ hidden idrow[] pour lui faire passer les reponses, pour le parcourer dans le fichier qui traite les reponses

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
            for ($i = 1; $i < count($idrow); $i++) {
                echo "<br>";
     
                // Reafficher les questions et les réponses
                $sql = "Select question, reponse, id, coef FROM quiz WHERE id=$idrow[$i]";
                $res = mysql_db_query($db, $sql);
                $row = mysql_fetch_array($res);
                print "Question : ";
                print "<b>";
                print $row["question"];
                print "</b>";
                print "<br>";
                print "Vous avez répondu : ";
                print "<b><i>";
                print $_POST[$idrow[$i]];
                print "</b></i>";
                print "<br>";
     
                // Vérifier si la réponse est correcte et afficher le message de félicitation
                // si la réponse du participant est juste
                if ($_POST[$idrow[$i]] == $row["reponse"]) {
                    print "Bravo c'est la bonne réponse !";
     
                    // Comptabiliser le point attribueé à la bonne réponse
                    $total = $total + $row["coef"];
                }
     
                // Vérifier si la réponse est correcte et afficher la bonne réponse en cas
                // de mauvaise réponse du participant
                if ($_POST[$idrow[$i]] != $row["reponse"]) {
                    print "La bonne réponse est : ";
                    print "<b>";
                    print $row["reponse"];
                    print "</b>";
                }
                print "<br>";
     
            }
    je prend la reponse depuis le tableau idrow[], je la teste en utilisant $id avec la bonne reponse deja stocké dans la bd row['reponse'] et si c'est vrai je fais un traitement, sinon un autre.... enfin, c'est ce qu'il me semble ici, parceque ça ne marche pas, mon programme ne boucle meme pas une premiere fois....

  2. #2
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 195
    Par défaut
    Alors si ton programme ne boucle pas une première fois le meilleur moyen avant de tester un programme en entier est de mettre un
    Tu le décale au fur et à mesure dans ton code jusqu'à trouver où se situe ton erreur.
    Je fonctionne ainsi et sa me permet bien souvent de trouver seul des réponses à mes problèmes
    A bon entendeur Salut

  3. #3
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    Dans ton champ hidden tu mets name à idrow[], celui ci sera forcement vide donc ton for ne bouclera même pas une fois.

    Dans ton cas, le champ hidden ne sert à rien ... utilises juste les boutons radios. Une fois ton code fait et si tu as encore des problèmes, nous regarderons

    bon courage

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 114
    Par défaut
    @French, mais je lui donne comme value, le $row[id] à mon champ hidden, je pensais que ça devrait suffir...

    @DjLow, oui, j'ai fais pas mal de tests pour arrivre à résoudre ça...

    Et puisque j'etais convaincu que ce c'etait un truc banale que je n'ai pas arrivé à voir, je me suis decidé de refaire le tout, autrement, voila comment j'ai procedé ....
    listing:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
         while($row = mysql_fetch_Array($res4)){
                echo "<fieldset>";
                    echo "<legend> $row[question] </legend>";
     
                          echo "<input type=\"radio\" name='rep".$row['id']."' value=\"$row[propo1]\">";
                          echo "$row[propo1]";
                          echo "<br>\n";
                            echo "<input type=\"radio\" name='rep".$row['id']."' value=\"$row[propo2]\">";
                          echo "$row[propo2]";
                          echo "<br>\n";
                          if($row[propo3]==TRUE){
                          echo "<input type=\"radio\" name='rep".$row['id']."' value=\"$row[propo3]\">";
                          echo "$row[propo3]";
                          echo "<br>\n";
                          }
                          if($row[propo4]==TRUE){
                          echo "<input type=\"radio\" name='rep".$row['id']."' value=\"$row[propo4]\">";
                          echo "$row[propo4]";
                          echo "<br>\n";
                          }
                          echo "<input type=\"hidden\" name=\"idrow[]\" value=\"$row[id]\">";
     
                echo "</fieldset>";           
         }
    et la boucle d'affichage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    foreach($_POST['idrow'] as $id) {
                echo "<br>";
     
                // Reafficher les questions et les réponses
                $sql = "Select question, reponse, id, coef, ps_reponse FROM quiz WHERE id=".intval($id);
                $res = mysql_db_query($db, $sql);
                $row = mysql_fetch_array($res);
                print "Question : ";
                print "<b>";
                print $row["question"];
                print "</b>";
                print "<br>";
                print "Vous avez répondu : ";
                print "<b><i>";
     
                //print htmlspecialchars($_POST['rep'.$id]);
                print stripcslashes($_POST['rep'.$id]);
     
                print "</b></i>";
                print "<br>";
    }
    ce qui fonctionne très bien maintenant...
    merci pour votre temps.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/02/2012, 14h02
  2. Réponses: 3
    Dernier message: 17/07/2009, 18h06
  3. Réponses: 8
    Dernier message: 12/07/2007, 15h57
  4. [SQL-VBA]Recuperer valeur champ avec requete
    Par docky dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 05/04/2007, 13h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo