problème php mysql

problème php mysql - PHP - Programmation

Marsh Posté le 24-01-2009 à 20:07:07    

Bonjour, :)  
Je voudrais faire un qcm avec les question reponse recupére de la base de donnée
J'ai pour le debut recontré un petit problème  :pt1cable:  
Je voudrais affiché :
 
1er question
 1reponse
 2 reponse
2eme question
 1 reponse
 2 reponse
 
 
Le problème est que sa m'affiche
1question
 1reponse
1question
 2reponse
2question
 1reponse
2question
 2eponse
Mon code est le suivant
 
 $req = mysql_query("SELECT  DISTINCT  libelle_reponse,  libelle  
FROM question, reponse
WHERE question.id_question = reponse.id_questionn
 " );
 
 
 
 while($da = mysql_fetch_array($req)) {
  echo '<b>'.$da['libelle'].'<b><br>';
  echo '</b><input type="radio" name="choix" value="'.$da['libelle_reponse'].'"><b>'.$da['libelle_reponse'].'</b><br>';  
 }
 
 
 
Comment faire pour evité que les question soit affiché plusieurs fois  
 
 
Merci pour l'aide

Reply

Marsh Posté le 24-01-2009 à 20:07:07   

Reply

Marsh Posté le 25-01-2009 à 18:54:28    

Il te faut deux requêtes et donc deux boucles, l'une pour les questions, l'autre pour les réponses.


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 26-01-2009 à 09:03:01    

Merci pour ta reponse  
J'ai essayé mais sa m'affiche  tout les question suivit de tout les reponse

Reply

Marsh Posté le 26-01-2009 à 11:57:00    

Essaye de mettre une seconde boucle dans ta premiere:

 
Code :
  1. $req = mysql_query("SELECT   libelle  FROM question " );
  2.  
  3.  
  4.  
  5. while($da = mysql_fetch_array($req)) {
  6.  echo '<b>'.$da['libelle'].'<b><br>';
  7.  
  8. $req2 = mysql_query("SELECT   libelle_reponse  FROM reponse WHERE libelle = $da['libelle'] " );
  9. while($da2 = mysql_fetch_array($req2)) {
  10.  echo '<b>'.$da2['libelle_reponse'].'<b><br>';
  11.    }
  12. }
 

J'ai pas testé mais ca devrait fonctionner


Message édité par aspirateur le 26-01-2009 à 11:58:00
Reply

Marsh Posté le 26-01-2009 à 16:18:50    

Ou plus simplement une seule requête comme au début et tester si on a changé de question.
 
par exemple avec un :

Code :
  1. $req = mysql_query("SELECT  DISTINCT  libelle_reponse,  libelle 
  2. FROM question, reponse
  3. WHERE question.id_question = reponse.id_questionn
  4. " );
  5.   $libelle_question="";
  6.   while($da = mysql_fetch_array($req)) {
  7.   if ($libelle_question<>$da['libelle']) {
  8.     echo '<b>'.$da['libelle'].'<b><br>';
  9.   }
  10.   echo '</b><input type="radio" name="choix" value="'.$da['libelle_reponse'].'"><b>'.$da['libelle_reponse'].'</b><br>'; 
  11. }


C'est une solution qui est 100 fois plus rapide que l'exécution de plusieurs dizaines de requêtes.
 
Et tant qu'à faire, c'est un qcm, ça sert à rien de retourner le texte de la réponse alors qu'il est si simple de retourner son numéro.

Reply

Marsh Posté le 27-01-2009 à 11:26:28    

Bonjour merci pour ta réponse
J'ai remarqué que dans ton code  la variable $libelle_question est vide  
sachant quel sera toujours vide et donc toujours différente de $da['libelle']
sa affichera toujours les question et les réponses sous la même forme  
(Je l'ai testé)
Merci de ton aide

Reply

Marsh Posté le 27-01-2009 à 11:31:09    

En effet il a oublié un petit truc (en ligne 10):

 
Code :
  1. $req = mysql_query("SELECT  DISTINCT  libelle_reponse,  libelle
  2. FROM question, reponse
  3. WHERE question.id_question = reponse.id_questionn
  4. " );
  5.  $libelle_question="";
  6.  while($da = mysql_fetch_array($req)) {
  7.  if ($libelle_question<>$da['libelle']) {
  8.    echo '<b>'.$da['libelle'].'<b><br>';
  9.  }
  10. $libelle_question=$da['libelle'];
  11.  echo '</b><input type="radio" name="choix" value="'.$da['libelle_reponse'].'"><b>'.$da['libelle_reponse'].'</b><br>';
  12. }
 

Et en effet c'est plus efficace que ce que je t'avais proposé  :jap:


Message édité par aspirateur le 27-01-2009 à 11:32:27
Reply

Marsh Posté le 27-01-2009 à 11:41:12    

z


Message édité par dev123 le 23-02-2009 à 15:07:42
Reply

Marsh Posté le 23-02-2009 à 15:07:48    

Bonjour a tout le monde j'essaye d'ameliore mon application en permettant au utilisateur de pouvoir inprimer le formulaire en pdf
J'ai essayé mais je beug un peu:les question reponse ne s'affiche pas comment souhaité
 
ex: question: reponse1
     reponse2
     reponse3
 
     question2:reponse1
     reponse2
     reponse3
 
 
J'utilise fpdf pour génere le pdf
Merci de votre aide
 
 mon code est le suivant:
 
 
 

Code :
  1. $resultat=mysql_query($query);
  2.    
  3.       $pdf->SetXY(0.5,1);
  4.       for($i=0;$i<sizeof($header);$i++)
  5.       $pdf->cell(4,1,$header[$i],1,0,'C',1);
  6.    
  7.       $pdf->SetFillColor(0xdd,0xdd,0xdd);
  8.       $pdf->SetTextColor(0,0,0);
  9.       $pdf->SetFont('Arial','',6);
  10.       $pdf->SetXY(0.5,$pdf->GetY()+1);
  11.       $fond=0;
  12.    while($row=mysql_fetch_array($resultat))
  13. {
  14.   if ($libelle_question<>$row['Libelle_ques'])
  15.    {
  16.      $pdf->cell(4,0.7,$row['Libelle_ques'],1,0,'C',$fond).'<br>';
  17.    }
  18.     $libelle_question=$row['Libelle_ques'];
  19.      $pdf->cell(4,0.7,$row['Libelle_rep'],1,0,'C',$fond);
  20.  $pdf->SetXY(0.5,$pdf->GetY()+0.7);
  21.  $fond=!$fond;
  22. }
  23.       $pdf->output();

Reply

Marsh Posté le 25-02-2009 à 14:11:24    

c bon j'ai reussi  
J'aurai juste voulu savoir si quelqu'un sait comment ajouter de la couleur dans un pdf j'ai essayé avec SetFillColor() mais sa marche pas lol :)
 
Merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed