requette & Dtas

:)
Invité n'ayant pas de compte PHPfrance

01 juil. 2005, 10:15

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 :)

Mammouth du PHP | 19672 Messages

01 juil. 2005, 10:21

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"
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

VaN
Mammouth du PHP | 1107 Messages

01 juil. 2005, 10:22

un msg d'erreur spécial qui apparait ?

:)
Invité n'ayant pas de compte PHPfrance

01 juil. 2005, 10:32

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 ??

Mammouth du PHP | 19672 Messages

01 juil. 2005, 13:11

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."'");
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: