Do ... While : problème ?

Eléphant du PHP | 95 Messages

28 févr. 2007, 15:33

J'ai dans ma page deux requêtes $Recordset1 et $Recordset2.
La 1re va "taper" dans une table principale et la 2e dans une table secondaire qui permet de gérer pour une personne plusieurs choix.

J'appelle la 2e requête dans ma page pour, dans la fiche de la personne, indiquer tous ses choix. Jusque là tout va bien :

Code : Tout sélectionner

<?php do { ?> <?php echo $row_Recordset2['FONCTION']; ?><br> <?php } while ($row_Recordset2 = mysql_fetch_assoc($Recordset2)); ?>
Ces lignes de codes fonctionnent parfaitement.

Maintenant quand je veux plus bas dans la page afficher l'information suivante de la 2e table au milieu d'autres infos de la table principale :

Code : Tout sélectionner

<? echo $row_Recordset2['CODE_FONC']; ?>
là ça ne fonctionne plus du tout. C'est comme si le do ... while avait "annulé" le $Recordset2 et plus rien ne s'affiche.

Avez-vous une explication ? Je suis perdue !!!!
Je veux apprendre !!

Eléphant du PHP | 95 Messages

28 févr. 2007, 16:33

Je viens de passer les lignes 1 et 3 de la boucle do ... while et c'est bien elles qui posent problème pour l'affichage du champ CODE_FONC puisqu'àlors l'intruction echo fonctionne parfaitement.

J'ai essayé de trouver de l'info sur le web mais rien qui ne mentionne ce problème...
Faut-il réécrire la requête (ce qui me semble assez bancal comme solution !!) ou manque-t-il une instruction dans mes 3 premières lignes ?
Je veux apprendre !!

Eléphant du PHP | 95 Messages

28 févr. 2007, 16:38

Je viens de rajouter ma requête une 2e fois pour exécuter mon echo. Ca fonctionne parfaitement !!!

Ce serait bien d'avoir une documentation sur les effets de do ... while sur les requêtes SQL.
Je veux apprendre !!

ViPHP
ViPHP | 4674 Messages

28 févr. 2007, 17:39

Bonjour :)

Tu sais qu'on peut faire tout simplement :
<?php

do {
    echo $row_recordSet2['FONCTION'].'<br />'."\n";
} while($row_recordSet2 = mysql_fetch_assoc($recordSet2));

?>
au lieu de :
<?php do { ?> 
<?php echo $row_Recordset2['FONCTION']; ?><br> 
<?php } while ($row_Recordset2 = mysql_fetch_assoc($Recordset2)); ?>
C'est quand même beaucoup plus lisible, plus compréhensible et moins lourd non ?

Et -- sauf erreur de ma part -- tu vas avoir une erreur, car la première fois, $row_recordSet2 n'est pas définie. Tu devrais peut être préférer la structure while() { } à do { } while();, ce qui te donnerait :
<?php

while($row_recordSet2 = mysql_fetch_assoc($recordSet2))
    echo $row_recordSet2['FONCTION'].'<br />'."\n";

?>
Petit rappel (car tu veux apprendre non ? :P), lorsqu'on a une seule intruction, on n'est pas obligé de mettre des accolades. Par exemple, ici pour mon while, je ne met pas d'accolades pour la fonction echo. Alors que si j'avais un echo, plus une incrémentation (par exemple hein), je devrais mettre des accolades.
Ça permet d'alléger le code.


Bonne journée :)
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).