Page 1 sur 1

php/mysql: faire un tableau complexe qui calcule des totaux

Posté : 11 mai 2011, 17:09
par rafiki14
Bonjour,

Je voudrai créer un tableau qui calcule de totaux d'après les informations contenues dans ma base de données.
J'ai une base de données contenant des informations sur des participants à un stage.
Je voudrais donc créer ceci:
semaine_______________sexe_____93____94___95______total____total/semaine
1ere semaine___________F________5_____8____1_______14_________19
1ere semaine___________M_______2______3____0_______5______
2semaine______________F________7______1____6______14__________28
2semaine______________M________4______2____8______14
total/année____________F________12_____9_____7_____
total/année____________M________6______5_____8_____

Etc..
je ne sais pas si vous comprenez mais j'ai besoin de votre aide.
j'ai essayé avec un foreach de parcours de tableau mais je n'obtient pas ce que je souhaite.
Mon plus gros problème c'est de mettre le bon calcul (avec la bonne requête) au bon endroit!

Si quelqu'un veut bien m'aider, merci d'avance.

Re: php/mysql: faire un tableau complexe qui calcule des totaux

Posté : 11 mai 2011, 18:35
par dunbar
Donne nous la structure de ta base.
Dis nous aussi à quoi correspond le total année, et le total/semaine

A+

Re: php/mysql: faire un tableau complexe qui calcule des totaux

Posté : 11 mai 2011, 21:53
par Cyrano
Ce serait surtout beaucoup plus clair avec deux tableaux pour ta sortie, quelque chose comme ceci par exemple :
+--------------+------+----+----+----+
| semaine      | sexe | 93 | 94 | 95 |
+--------------+------+----+----+----+
| 1ere semaine | F    |  5 |  8 |  1 |
| 1ere semaine | M    |  2 |  3 |  0 |
| 2nde semaine | F    |  7 |  1 |  6 |
| 2nde semaine | M    |  4 |  2 |  8 |
+--------------+------+----+----+----+

+-------------+---------+---------+---------------+
|     semaine | total_F | total_M | total/semaine |
+-------------+---------+---------+---------------+
|           1 |      14 |       5 |            19 |
|           2 |      14 |      14 |            28 |
+-------------+---------+---------+---------------+
| total année |      28 |      19 |            47 |
+-------------+---------+---------+---------------+
Non ? :-k

Re: php/mysql: faire un tableau complexe qui calcule des totaux

Posté : 12 mai 2011, 00:08
par dunbar
Et en suivant l'exemple de CYRANO cette requête devrait faire l'affaire :)
SELECT SEXE,R_93, R_94, R_95, SEMAINE,
	         SUM( IF( SEXE ='F', R_93, 0))AS F1,
	         SUM( IF( SEXE ='F', R_94, 0))AS F2,
	         SUM( IF( SEXE ='F', R_95, 0))AS F3,
	         SUM( IF( SEXE ='M', R_93, 0))AS M1,
	         SUM( IF( SEXE ='M', R_94, 0))AS M2,
	         SUM( IF( SEXE ='M', R_95, 0))AS M3,
	         SUM( R_93 + R_94 + R_95 )AS total
           FROM CALCUL
           GROUP BY SEXE, SEMAINE 
Exemple de ma table

Code : Tout sélectionner

CREATE TABLE IF NOT EXISTS `calcul` ( `ID` int(5) NOT NULL AUTO_INCREMENT, `SEXE` varchar(2) NOT NULL, `R_93` int(5) NOT NULL, `R_94` int(5) NOT NULL, `R_95` int(5) NOT NULL, `SEMAINE` int(11) NOT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

Re: php/mysql: faire un tableau complexe qui calcule des totaux

Posté : 12 mai 2011, 15:12
par rafiki14
Merci pour vos réponses

Je crois que j'ai réussi à gérer ça en construisant un tableau à 2 dimensions et en faisant des boucles for!
je galère juste un peu au niveau de l'affichage des dernières colonnes de totaux, ma boucle fonctionne quand je fais un print j'ai le bon resultat, mais quand je veux afficher mon tableau j'ai une erreur du type Notice: Undefined offset: 4..

Re: php/mysql: faire un tableau complexe qui calcule des totaux

Posté : 12 mai 2011, 15:28
par moogli
salut,

ce type d'erreur est principalement dû a une mauvaise gestion d'un index, tu fait appel à l'index 4 qui n'existe pas dans ton tableaux, c'est pour cela qu'il est préférable d'utiliser foreach plutôt que for pour parcourir des tableaux ;)


@+

Re: php/mysql: faire un tableau complexe qui calcule des totaux

Posté : 12 mai 2011, 16:10
par dunbar
Merci pour vos réponses

Je crois que j'ai réussi à gérer ça en construisant un tableau à 2 dimensions et en faisant des boucles for!
je galère juste un peu au niveau de l'affichage des dernières colonnes de totaux, ma boucle fonctionne quand je fais un print j'ai le bon resultat, mais quand je veux afficher mon tableau j'ai une erreur du type Notice: Undefined offset: 4..
Avec ton code il serait plus simple de t'apporter notre aide :wink:

Re: php/mysql: faire un tableau complexe qui calcule des totaux

Posté : 16 mai 2011, 12:31
par rafiki14
j'ai trouvé mon erreur j'avais mal défini certaines variables !
tout fonctionne maintenant !
Merci.