Boucle while

Boucle while - PHP - Programmation

Marsh Posté le 05-04-2005 à 14:24:06    

Bonjour
 
J'aimerai afficher d'abord l'ensemble des questions de ma FAQ avec des liens ancrés qui pointent vers les réponses qui se trouvent plus bas dans la page.
Ex :
Questions
Pourquoi vous aimez le fromage ?
Combien y a t'il de jour dans l'année ?
 
Réponses
Parce que c'est fondant
Il y a 365 jours dans l'année
 
Voici mon code, j'utilise pear. Si quelqu'un pouvait m'aider à mettre ça dans le bonne ordre. J'ai fait des essais pendant toute la matinée mais je n'arrive à afficher que les questions suivies des réponses.
 

Code :
  1. <?
  2. // FAQ
  3. $req = $db->query("SELECT faq_num, faq_question, faq_reponse FROM faq" );
  4. if (!empty ($req))
  5. {
  6. while ($faq = $req->fetchRow(DB_FETCHMODE_ASSOC))
  7.  {
  8.   echo "\t<p><a href=\"#$faq[faq_num]\">
  9.   $faq[faq_question]</a>\n\t<br /><br />\n</p>";
  10.   echo "\t<p class=\"reponse_faq\"><a name=\"$faq[faq_num]\">
  11.   $faq[faq_reponse]</a>\n\t<br /><br />\n</p>";
  12. }
  13. }
  14. else
  15. echo "<p>Il n'y a pas de questions-reponses dans la FAQ</p>";
  16. ?>


Message édité par skynicko le 05-04-2005 à 14:25:34
Reply

Marsh Posté le 05-04-2005 à 14:24:06   

Reply

Marsh Posté le 05-04-2005 à 14:31:30    

ben, simple question de logique, si tu veux afficher d'abord toutes les questions puis seulement toutes les réponses, va falloir 2 boucles :)

Reply

Marsh Posté le 05-04-2005 à 14:46:01    

La logique me fait défaut certe. Mais j'avais testé avec deux boucles mais ça fonctionnait pas. J'ai mis ce code parce que c'est la dessus que je m'étais arreté en attendant.
J'ai un peu de mal avec l'imbrication des boucles.
 
J'ai reussi à faire ça, mais la il ne m'affiche que la 1ere question et la 1ere réponse :
 

Code :
  1. <?
  2. // FAQ
  3. $req = $db->query("SELECT faq_num, faq_question, faq_reponse FROM faq" );
  4. if (!empty ($req))
  5. {
  6. while ($faq = $req->fetchRow(DB_FETCHMODE_ASSOC))
  7.  {
  8.   echo "\t<p><a href=\"#$faq[faq_num]\">
  9.   $faq[faq_question]</a>\n\t<br /><br />\n</p>";
  10. while ($faq = $req->fetchRow(DB_FETCHMODE_ASSOC))
  11.  {
  12.   echo "\t<p class=\"reponse_faq\"><a name=\"$faq[faq_num]\">
  13.   $faq[faq_reponse]</a>\n\t<br /><br />\n</p>";
  14. }
  15. }
  16. }
  17. else
  18. echo "<p>Il n'y a pas de questions-reponses dans la FAQ</p>";
  19. ?>


Message édité par skynicko le 05-04-2005 à 14:48:23
Reply

Marsh Posté le 05-04-2005 à 14:50:47    

Y a pas à les imbriquer non plus, la première boucle liste les questions et une fois la boucle finie, tu en fais une pour les réponses :)
 

Code :
  1. while (encore des lignes){
  2. affichage question
  3. }
  4. retour au début du dataset
  5. while (encore des lignes){
  6. affichage réponse
  7. }

Reply

Marsh Posté le 05-04-2005 à 14:51:26    

un moyen très simple :

Code :
  1. <?
  2. // FAQ
  3. $req = $db->query("SELECT faq_num, faq_question, faq_reponse FROM faq" );
  4. if (!empty ($req))
  5. {
  6. $temp = '';
  7. while ($faq = $req->fetchRow(DB_FETCHMODE_ASSOC))
  8. {
  9.  echo "\t<p><a href=\"#$faq[faq_num]\">
  10.  $faq[faq_question]</a>\n\t<br /><br />\n</p>";
  11.  $temp. = "\t<p class=\"reponse_faq\"><a name=\"$faq[faq_num]\">
  12.  $faq[faq_reponse]</a>\n\t<br /><br />\n</p>";
  13. }
  14. echo $temp;
  15. }


 
PS: si la logique te fait défaut je te souhaite bon courage dans la prog  ;)

Reply

Marsh Posté le 05-04-2005 à 14:55:20    

Merci j'en ferai pas mon métier plus tard. La j'ai pas le choix donc j'essaye de faire au mieux. Mais c'est vrai que j'ai du mal à coder ce que je pense et même parfois à comprendre ce que je code lol

Reply

Sujets relatifs:

Leave a Replay

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