Page 1 sur 1

requette & Dtas

Posté : 01 juil. 2005, 10:15
par :)
Bonjour a tous

voila je voudrai afficher le total d'un champs d'une base par rapport a une date (juste l'année (requette1)ou le moi(requette2)) , mais ma requette n'est a priori pas bonne :

$date=date("Y-md");
$Y= date("Y");
$m= date("m");
$d= date("d");
$requete=mysql_query("SELECT SUM(fini) AS totgen FROM comdet where etatf!='a' and date='$Y'"); 
$resu=mysql_fetch_array($requete);
$totgen=$resu['totgen'];
echo "$totgen €";

$requete=mysql_query("SELECT SUM(fini) AS totgen FROM comdet where etatf!='a' and date='$Y-$m'"); 
$resu=mysql_fetch_array($requete);
$totgen=$resu['totgen'];
echo "$totgen €";
Le champs "date" est en type date dans ma bdd

Merci a vous :)

Posté : 01 juil. 2005, 10:21
par Cyrano
Pour ta première requête, tu peux ne travailller que sur la date dans MySQL... à condition de l'isoler avec la fonction SQL appropriée. Modifie comme ceci:
$requete=mysql_query("SELECT SUM(fini) AS totgen FROM comdet where etatf <> 'a' and YEAR(date) = '". $Y ."'");
Pour la seconde, je comprends moins, on dirait que tu soustrais un mois à l'année ce que me semble beaucoup moins cohérent, ça devrait plutôt être :
$requete=mysql_query("SELECT SUM(fini) AS totgen FROM comdet where etatf <> 'a' and MONTH(date) = '". $m ."'");
Ceci sous-entend que ton champ se nomme "date"

Posté : 01 juil. 2005, 10:22
par VaN
un msg d'erreur spécial qui apparait ?

Posté : 01 juil. 2005, 10:32
par :)
Pour ta première requête, tu peux ne travailller que sur la date dans MySQL... à condition de l'isoler avec la fonction SQL appropriée. Modifie comme ceci:
$requete=mysql_query("SELECT SUM(fini) AS totgen FROM comdet where etatf <> 'a' and YEAR(date) = '". $Y ."'");
Pour la seconde, je comprends moins, on dirait que tu soustrais un mois à l'année ce que me semble beaucoup moins cohérent, ça devrait plutôt être :
$requete=mysql_query("SELECT SUM(fini) AS totgen FROM comdet where etatf <> 'a' and MONTH(date) = '". $m ."'");
Ceci sous-entend que ton champ se nomme "date"
C'est exactement ce que je voulais, ça marche, mais si dans la base il y a deux mois identique mais a une année d'interval
2005-02-01
2004-02-04

par ex il va me clucler les deux ??

Posté : 01 juil. 2005, 13:11
par Cyrano
Qu'est-ce qui t'empèche de rajouter une clause WHERE en plus ?
$requete=mysql_query("SELECT SUM(fini) AS totgen FROM comdet where etatf <> 'a' AND MONTH(date) = '". $m ."' AND YEAR(date) = '".  $Y."'");