[RESOLU] Trier par GROUP BY avec resultat total par date

gdc
Eléphant du PHP | 101 Messages

18 févr. 2014, 12:42

Bonjour a tous,
J'ai une table history_visite avec champ: date et un champ visite_log

Date = Le jour de la connection
Visite_log = Qte de connection Positive qui est numerique.

J'aimerai avoir dans ma fonction un listing des 30 derniere jour avec le nombre de connection relier par journée,
exemple: Si le membre X c'est connecté 3 fois dans la journée du 10 février et 6 fois le 2 Fevrier jaimerai faire afficher:

10 fevrier (3)
2 fevrier (6)

ainsi de suite pour tout les jour dans le delais de 30 jours, J'ai essayer avec un GROUP BY date , mais cela me donne une liste complete des journée avec (1) au bout de la journée, je veux que le total des connection journaliere sois grouper par le jour afficher...

Je ne sais pas si ma question est claire, voila ma fonction que je vous ais mis pour avoir une idée ....


function history_visite_date() {
$delai_date = date("Y-m-d", strtotime("-30day"));

$ats = mysql_query("SELECT SUM(visite_log) AS cnt, date FROM history_visite WHERE user = '".$_SESSION['login']."' AND date>='".$delai_date."' GROUP BY date ") or die (mysql_error());
while($row = mysql_fetch_array($ats)) {
if($row['cnt']==0) {$qte = '0';} else {$qte = $row['cnt'];}

echo 'Jour '.$row['date'].' Quantite '.$qte.' Connection<br />';
}
}


Merci beaucoup de votre aide,
Modifié en dernier par gdc le 18 févr. 2014, 13:26, modifié 1 fois.

gdc
Eléphant du PHP | 101 Messages

18 févr. 2014, 13:25

Je vien de m'apercevoir ce qui me cause probleme de GROUPAGE est le champ date car il est enregistrer avec la date et l'heure,

2014-02-11 23:23:03 quand je met tout les champs avec la meme heure a 00:00:00 cela fonctionne bien, donc mon prob est sur la valeur que je dois reussir a extraire seulement les date et nom les heure relier au coté de la date...

Comment faire?

Merci ...

ViPHP
xTG
ViPHP | 7331 Messages

18 févr. 2014, 14:20


Mammouth du PHP | 571 Messages

18 févr. 2014, 14:23

Je vien de m'apercevoir ce qui me cause probleme de GROUPAGE est le champ date car il est enregistrer avec la date et l'heure,

2014-02-11 23:23:03 quand je met tout les champs avec la meme heure a 00:00:00 cela fonctionne bien, donc mon prob est sur la valeur que je dois reussir a extraire seulement les date et nom les heure relier au coté de la date...

Comment faire?

Merci ...
$ats = mysql_query("SELECT SUM(visite_log) AS cnt,  YEAR(date) , MONTH(date), DAY(date) FROM history_visite WHERE user = '".$_SESSION['login']."' AND date>='".$delai_date."' GROUP BY YEAR(date) , MONTH(date), DAY(date)  ") or die (mysql_error()); 

Petit nouveau ! | 3 Messages

18 févr. 2014, 21:47

Comme l'indique Yann18 au dessus tu peux focaliser le regroupement sur la date en précisant que tu te focalise sur l'année, le mois et le jour.
Le langage SQL est assez flexible de ce coté mais fait juste attention a une chose c'est le format d'ecriture dans ta base pour ce qui est de la date.

ViPHP
xTG
ViPHP | 7331 Messages

18 févr. 2014, 22:00

Le langage SQL est assez flexible de ce coté mais fait juste attention a une chose c'est le format d'ecriture dans ta base pour ce qui est de la date.
Je ne vois pas le problème, une date est une date.
Autrement dit un timestamp non formaté.
La seule erreur qui pourrait occasionner ce que tu désignes serait de stocker une chaîne de caractère(VARCHAR/STRING/ect) et non une date.

gdc
Eléphant du PHP | 101 Messages

18 févr. 2014, 22:58

Bonsoir,

Merci a yann18 pour m'avoir apporter la solution a ma fonction.


Pour les autres, Mon champs date en mode datetime donc ca fonctionne très bien,

Merci encore Yann18.

Bonne soirée a tous ...