Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 28/01/2010, 03h36   #1
Membre régulier
 
Date d'inscription: novembre 2006
Âge: 21
Messages: 112
Envoyer un message via MSN à vladimire
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 :
 $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 :
        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....
vladimire est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/01/2010, 08h59   #2
Membre à l'essai
 
Date d'inscription: avril 2009
Localisation: 69
Messages: 40
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
Code :
echo "test";
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
DjiLow est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/01/2010, 09h20   #3
Expert Confirmé
 
Avatar de Fench
 
Date d'inscription: mai 2002
Localisation: Auvergne
Messages: 1 567
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
__________________
Actuellement AI à l'INRA
fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)
Fench est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/01/2010, 17h44   #4
Membre régulier
 
Date d'inscription: novembre 2006
Âge: 21
Messages: 112
Envoyer un message via MSN à vladimire
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 :
     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 :
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.
vladimire est déconnecté   Envoyer un message privé Réponse avec citation
NEWS PHPFAQ PHPCours PHPSources PHPLivres PHPScripts PHPOutils PHPComparatifsZend Framework

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 17h49.


Vos questions techniques : forum d'entraide PHP - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.