Répéter un while dans un while

Fermé
thomas - 11 avril 2012 à 16:39
 thomas - 12 avril 2012 à 10:15
Bonjour,
Je suis en train de me faire un site qui me permet de gérer des élèves (note absence etc...)plus facilement que sur papier,
Pour faire simple, j'ai des taches, chaque tache correspond a des compétences, et chaque élève est noté sur chaque compétence.
Ce qui nous donne pour exemple, la tache 1 possède la compétence 1, 2, 3 et 4.
Donc l'élève 1 sera noté par A, B, C ou D (les lettre correspondent à des points ) sur caque compétence.
donc ce que je cherche a obtenir:
Tache 1 :
Compétence 1:
Elève Note
eleve1 A B C D (bouton radio)
eleve 2 A B C D

Compétence 2:
Elève Note
eleve1 A B C D (bouton radio)
eleve 2 A B C D

Compétence 3:
....Etc....

Coté php, je compte récupérer bien entedu les note (a,b,c,d) a chaque élève.
Je n'ai pas encore développé le code pour ça car je suis actuellement bloqué à la partie supérieur, en effet, j'ai bien toutes mes compétence voulu qui s'affiche mais les élève qui devrait se trouver dnas chaque compétence ne sont présent que dans la première compétence, les autres sont vides.

Mon code :
if($liste1 != -1){ //si un choix à dèjà été fait

$requete1 = "select comp, nomcomp, souscomp from competence, tache where competence.idtache=tache.idtache AND nomtache='".$liste1."'";
$result1 = mysql_query($requete1);
$nbr_comp = mysql_num_rows($result1);
$requete2 = "select * from eleve where idclasse=".$idclasse.";";
$result2 = mysql_query($requete2);
echo 'Vous avez choisi la tache '.$liste1.'';
echo '<table align=center width=400><tr align=center>';
for($i=0;$i != $nbr_comp;$i++) {
while ($data = mysql_fetch_array($result1)) {
echo '<td colspan=5>';
echo '<h4>Compétence '.$data['souscomp']. ' :</h4></td></tr>';
echo '<tr><td>Elève</td><td colspan=4>Note</td></tr>';

while ($ligne = mysql_fetch_array($result2)) {
echo '<td>';
echo $ligne['nom']. '</td>';
echo '<td><input type="radio" name="note" value="a"> A</td>';
echo '<td><input type="radio" name="note" value="b"> B</td>';
echo '<td><input type="radio" name="note" value="c"> C</td>';
echo '<td><input type="radio" name="note" value="d"> D</td></tr>';

}
}
}
echo '</tr><table>';
}

J'ai tenté de répéter la boucle grace a for mais rien y fait elle ne se repete pas à chaque compétence.
Une idée du problème ? et pensez vous que mon système est réalisable niveau note a récuprer par élève ?
D'avance merci à ceux qui se pencheront à mon problème =)

3 réponses

Bonsoir,
j'ai pas lu votre code mais c'est tout à fait possible d'avoir une boucle dans une autre boucle, while ou autre. Ce n'est pas recommandé pour autant(risque d'erreur dans le programme, de gestion de la mémoire défaillante, complexité de modification/correction). Il vaut mieux utiliser d'autres méthodes comme les tableaux de variables.

Tant que vos conditions de 'bouclage' fonctionnent et le font indépendamment pas de soucis. Si vous postez un sujet c'est que ça ne doit pas être le cas.

donc ce que je cherche a obtenir:
Tache 1 :
Compétence 1:
Elève Note
eleve1 A B C D (bouton radio)
eleve 2 A B C D
Compétence 2:
Elève Note
eleve1 A B C D (bouton radio)
eleve 2 A B C D
Compétence 3:


Donc un tableau à plusieurs dimensions:

tableau['eleve']['tache']['note'], bien qu'une base de données ou autre système d'archivage soit vivement recommandé dans votre cas.
0
j'utilise une base de donnée pour retenir toute les données, je vais essayé avec des tableaux a plusieurs dimension, pas encore testé.
A coté si quelqu'un à plus d'info ou une proposition, je prends !
0
bon, j'ai essayé de mettre en place un tableau multidimensionnel, c'est en cours... =)
Par contre, je comprends pas pourquoi dans mon exemple au dessus mon second ne s'exécute qu'une seule fois.
Mon for devrait faire que la boucle se répète jusqu'à ce que le compteur soit égale au nombre de compétence trouvé.
C'est juste pour bien comprendre vu que ça me parait plus qu'intéressant.
0