Somme dans un tableau

matos_deluxe Messages postés 15 Date d'inscription dimanche 9 mai 2004 Statut Membre Dernière intervention 30 juin 2005 - 24 juin 2004 à 18:08
cs_jeca Messages postés 341 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 14 juillet 2011 - 25 juin 2004 à 10:43
Chalut, voila le probleme; j'ai une table "conso", un champ "date_conso_mois" et des champs de consommable ( CD/DVD etc) ; à chaque fois que je consomme qlq chose la variable correspondant au type de consommable s'increment.

Ce que je veux, c'est connaitre la consommation en fonction du mois, or ma date enregistrée dans le champ "date_conso_mois" est du type JJ/MM/AA.

comment faire?

function totalmois($selection)
{
$somme=0;
for ($cmois=01;$cmois<13;$cmois++)
{
$sql = mysql_query (" SELECT $selection FROM conso")
// comparaison avec date_conso_mois possible???? style WHERE....
$num = mysql_num_rows ($sql);
for ($c=0;$c<$num;$c++)
{
$somme=$somme+ mysql_result ($sql,$c);
}
echo $cmois."°mois somme ".$selection." =".$somme;
}
}
include('../connect.inc.php');
echo totalmois("CD");

4 réponses

cs_lotr Messages postés 128 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 12 août 2005
24 juin 2004 à 22:21
Salut,
Jette un coup d'oeil la :
http://www.nexen.net/docs/mysql/annotee/date-calculations.php
Ca devrait repondre a ta question ;-)
0
cs_jeca Messages postés 341 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 14 juillet 2011 14
25 juin 2004 à 08:19
Bonjour,

"le champ "date_conso_mois" est du type JJ/MM/AA." => très mauvaise idée, car aucun tri sur les dates n'est possible. Ton champ doit être de type "date", soit au format AAAA-MM-JJ. Une fonction mysql permet dans une requête de changer ce format pour un affichage français : "date_format". Ensuite, tu peux faire tout tes calculs avec une seule requête :

select date_format(date_conso_mois, '%m/%Y') as mois, sum(cd), sum(dvd), ...
from conso
where ....
group by date_format(date_conso_mois, '%Y-%m')
0
matos_deluxe Messages postés 15 Date d'inscription dimanche 9 mai 2004 Statut Membre Dernière intervention 30 juin 2005
25 juin 2004 à 10:30
Super ça marche, merci beaucoup!

c 'est peut être à optimiser mais voila:

function totalmois($selection)
{
$somme= 0;
for ($cmois=01;$cmois<13;$cmois++)
{$somme=0;

$sql = mysql_query (" SELECT $selection FROM conso WHERE MONTH(date_conso_mois)=$cmois")
or die (" Erreur n° : ".mysql_errno()."
Message : ".mysql_error() );
$num = mysql_num_rows ($sql);
for ($c=0;$c<$num;$c++)
{
$somme=$somme+ mysql_result ($sql,$c);
}
echo $cmois."° mois somme ".$selection." =".$somme; ?>
<?php
}
}
include('../connect.inc.php');
echo totalmois("laser_a4");
0
cs_jeca Messages postés 341 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 14 juillet 2011 14
25 juin 2004 à 10:43
super, et dès que tu as plus d'un an de données dans ta table, ça ne marche plus
0
Rejoignez-nous