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

Signaler
Messages postés
431
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2008
-
Messages postés
431
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2008
-
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

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,



"Vous me suivez ? :-)"


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




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
431
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2008

: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...
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Hello,



moi pas vraiment non plus...

ceci dit, il faut mettre des quotes pour tes tableaux associatifs : $ce_app=$table_ce_app['id_application'];
Messages postés
393
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
29 septembre 2008

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"
Messages postés
393
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
29 septembre 2008

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"
Messages postés
431
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2008

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...
Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
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
Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
...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',...)...)
Messages postés
431
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2008

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 !
Messages postés
393
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
29 septembre 2008

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"
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
mdr...c'est po faux !
Messages postés
431
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
17 novembre 2008

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 !