Des 'while' imbriquées... galère, galère !

nougitch Messages postés 431 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 17 novembre 2008 - 23 mars 2005 à 11:59
nougitch Messages postés 431 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 17 novembre 2008 - 24 mars 2005 à 10:16
Bonjour,



Alors voilà, j'ai ce que j'appelerai arbitrairement un tableau à 4 dimensions :

1 : Une association (qui correspond en gros à une langue) ;

2 : Une application ;

3 : Un module ;

4 : Une note.



Le principe est que quand je séléctionne une 'association' dans un liste déroulante, la matrice propre à cette langue s'affiche.



Ma est constitue de 4 champs qui sont respectivement : ce_application
(la clé étrangère de l'application), ce_module (la clé étrangère du
module), ce_association (la clé étrangère de la langue) et scoring (qui
correspond donc à la note de telle application pour tel module dans
telle langue)... Vous me suivez ? :-)



Mon problème est le suivant : je veux que quand j'ajoute une nouvelle
langue, cela compte le nombre d'applications et de modules, et que je
'clone' ceci pour y ajouter la clé de la nouvelle langue saisie.



J'ai essayé avec des while mais galère galère... je n'arrive pas à les imbriquer.



Voici mon code :


$req_ce_asso=mysql_query("SELECT MAX(id_association) AS id_association
FROM associations",$link);

$table_ce_asso=mysql_fetch_array($req_ce_asso,MYSQL_ASSOC);

$ce_asso = $table_ce_asso[id_association];

$req_ce_mod=mysql_query("SELECT id_module FROM module",$link);

while($table_ce_mod=mysql_fetch_array($req_ce_mod,MYSQL_ASSOC)) {

$ce_mod = $table_ce_mod[id_module];


$req_ce_app=mysql_query("SELECT id_application FROM
application",$link);



while($table_ce_app=mysql_fetch_array($req_ce_app,MYSQL_ASSOC)) {


$ce_app =
$table_ce_app[id_application];


mysql_query("INSERT INTO matams
VALUES ('$ce_app', '$ce_mod', '$ce_asso', '0')",$link);

}

}



Merci à tous ceux qui auront le courage de lire ce pavé !

12 réponses

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
23 mars 2005 à 12:13
Salut,



"Vous me suivez ? :-)"


Non lol
<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
nougitch Messages postés 431 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 17 novembre 2008
23 mars 2005 à 12:21
:o)



En gros c'est comme si j'avais des 'classes' avec des 'elèves' qui ont des 'notes' dans des 'matières'.



Application = élève

Module = matière

Langue = classe

Note = note



Fonctionnement :

Lorsque je sélectionne une classe dans la liste déroulante, j'ai un
tableau qui s'affiche avec horizontalement les élèves et verticalement
les matières.

A chacune des cellules correspond une note pour un élève dans une matière dans telle classe.



Oui, c'est mieux comme ça :-)



Mon problème donc :

En gros, je veux que quand j'ajoute une classe, il recrée un tableau.

Pour cela il faut que lors de mon INSERT INTO, je boulce pour chaque élève et chaque matière.



J'espère que ça ira mieux...
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 mars 2005 à 12:24
Hello,



moi pas vraiment non plus...

ceci dit, il faut mettre des quotes pour tes tableaux associatifs : $ce_app=$table_ce_app['id_application'];
0
ehmarc Messages postés 393 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 29 septembre 2008
23 mars 2005 à 13:53
Salut
Jai pas tout compris non plus.....

Mais j'ai pas l'impression que tu as un tableau a 4 dimensions de la forme $tableau[][][][] (au dessus de la dimension 3 ca commence a etre dur a representer sur un bout de papier!!!!!)

mais plutot un tableau normal qui donne un truc de la forme :

Une association | Une application | Un module | Une note

xxxxx | xxxx |...........

Mais bon tout ca ne resoud pas le problème.....
++

"Aucun de nous ne sait ce que nous savons tous, ensemble."
Lao Tseu inventeur du "copier coller"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ehmarc Messages postés 393 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 29 septembre 2008
23 mars 2005 à 14:17
bon pour etre plus clair (moi aussi)
un tableau unidimensionnel c'est une liste (1 ligne plusieurs colones)
un tableau bidimensionnel c'est un carre (plusieurs lignes plusieurs colonnes)
un tableau tridimensionnel c'est un cube (plusieurs lignes plusieurs colonnes plus une notion de profondeur de donnée on a plusieurs données possible pour une ligne et une colonne)
un tableau quadridimensionel c'est un hypercube http://www.mathematische-basteleien.de/hypercube.htm aille......

++

"Aucun de nous ne sait ce que nous savons tous, ensemble."
Lao Tseu inventeur du "copier coller"
0
nougitch Messages postés 431 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 17 novembre 2008
23 mars 2005 à 15:03
Re,



Si je devais schématiser la base avec l'exemple de l'écolé, cela me donnerait :



eleve | matiere | classe | note

---------------------------------

jacky | anglais | CE1 | 1

corbier | anglais | CE1 | 0

jacky | maths | CE1 | 3


corbier | maths | CE1 | 2



Bien que dans la réalité ce ne soit pas possible (puisq'un élève ne
peut pas être dans 2 classes à la fois), si je rajoute une classe (CE2
par example), je oudrais avoir le résultats suivant :



eleve | matiere | classe | note


---------------------------------


jacky | anglais | CE1 | 1


corbier | anglais | CE1 | 0


jacky | maths | CE1 | 3



corbier | maths | CE1 | 2


jacky | anglais | CE2 | 0



corbier | anglais | CE2 | 1



jacky | maths | CE2 | 2




corbier | maths | CE2 | 3



C'est mieux :-) ?



Merci pour votre aide...
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
23 mars 2005 à 15:15
Là c'est clair ! T'es fan des Musclés ?
1./ Si tu affiches une table avec les élèves, les matières et les classes existantes peut-être peux-tu stocker l'existant dans des variables afin d'éviter de faire des select avant tes inserrt.
2./
foreach($matieres as $cleMatiere=>$tablElevesMatiere)
{
foreach($tablElevesMatiere as $cleEleve=>note)
{
mysql_query("INSERT INTO matams VALUES ('$cleEleve', '$cleMatiere', '$nouvClass', '0')",$link);
}
}

isn't it ?

Arno
0
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
23 mars 2005 à 15:18
...En partant du principe que tu es une table contenant les élèves qui suivent une matière, du genre
$matières=array('anglais'=>array(0=>'Jacky', 1=>'Corbier'), 'math'=>array(0=>'Corbier',1=>'Framboisier',...)...)
0
nougitch Messages postés 431 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 17 novembre 2008
23 mars 2005 à 17:29
Je suis d'accord mais... Bernard Minet, on le fout où ? :o)



Plus sérieusement, je pense que je répondrai "yes" à ta question "isnt't it ?".



Je mets ça au point et je vous tiens au courant !



Thanks all !
0
ehmarc Messages postés 393 Date d'inscription mardi 2 décembre 2003 Statut Membre Dernière intervention 29 septembre 2008
23 mars 2005 à 18:05
lol
en tout cas les eleves sont pas terrible vu les notes !!!!!!

++

"Aucun de nous ne sait ce que nous savons tous, ensemble."
Lao Tseu inventeur du "copier coller"
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
23 mars 2005 à 18:13
mdr...c'est po faux !
0
nougitch Messages postés 431 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 17 novembre 2008
24 mars 2005 à 10:16
Hello !



Ce sont leurs notes officielles ! Voilà pourquoi ils en sont arrivés là
(ou plutôt où ils en étaient arrivés... mais au fait, que deviennent
ils ?)



Je suis désolé mais il faut que je revois une grosse partie de mon code
alors je mets ceci en stand by aujourd'hui. Je vais m'y replonger avant
la fin de la semaine.



Quoi qu'il en soit, je vous tient au courant !



Merci encore !

@ très vite !
0
Rejoignez-nous