[PHP] Array + variables dynamiques
Résolu
Kalamya
Messages postés
47
Statut
Membre
-
Kalamya Messages postés 47 Statut Membre -
Kalamya Messages postés 47 Statut Membre -
Salut tout le monde :)
J'ai un array qui me pose quelques problèmes...
Mon objectif : Récupérer la fréquence des visites selon les jours de la semaine, le tout par an.
$query="SELECT*FROM statistiques WHERE annee=$my_annee";
$result = mysql_query($query);
while ($tableau = mysql_fetch_array($result))
{
$mes_jours=$tableau["jour"];
$mes_mois=$tableau["mois"];
$mon_annee=$tableau["annee"];
$joursem = array('Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam');
$timestamp = mktime (0, 0, 0, $mes_mois, $mes_jours, $mon_annee);
$myday = $joursem[date("w",$timestamp)];
...
// Affiche Lun Dim Lun Mer etc...
Mon problème : Compacter et obtenir Lun 155, Mar 458 etc...
Tentative :
Evidemment, ça ne fonctionne pas ! lol. L'array est de toute évidence mal construit. J'ai essayé également de construire mon array au préalable avec $myday="'$myday',"; mais ce qui donne une virgule de trop à la fin.
Bref, je coince... Une idée ?!
Merci :)
J'ai un array qui me pose quelques problèmes...
Mon objectif : Récupérer la fréquence des visites selon les jours de la semaine, le tout par an.
$query="SELECT*FROM statistiques WHERE annee=$my_annee";
$result = mysql_query($query);
while ($tableau = mysql_fetch_array($result))
{
$mes_jours=$tableau["jour"];
$mes_mois=$tableau["mois"];
$mon_annee=$tableau["annee"];
$joursem = array('Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam');
$timestamp = mktime (0, 0, 0, $mes_mois, $mes_jours, $mon_annee);
$myday = $joursem[date("w",$timestamp)];
...
// Affiche Lun Dim Lun Mer etc...
Mon problème : Compacter et obtenir Lun 155, Mar 458 etc...
Tentative :
... $mytab=array($myday); } $answer = array_count_values($mytab); echo $answer['Lun']; echo $answer['Mar']; etc...
Evidemment, ça ne fonctionne pas ! lol. L'array est de toute évidence mal construit. J'ai essayé également de construire mon array au préalable avec $myday="'$myday',"; mais ce qui donne une virgule de trop à la fin.
Bref, je coince... Une idée ?!
Merci :)
Configuration: Windows XP Internet Explorer 7.0
4 réponses
-
Recherche plutôt du côté de Mysql et de ses possibilités de traitement lors des requettes:
par exemple SELECT SUM('stats') FROM table WHERE annee=$my_annee AND day='LUN'
qui va additionner pour tous les LUNDIS
et tu fais autant de fois que de jours.
A adapter selon les champs de ta base.
Va voir sur google pour plus de détails et la methode d'interrogation -
Préférable en effet de voir du côté de MySQL, mais suivant ce que contient cette table (un enregistrement par jour ou par visite ?)
S'il s'agit d'un enregistrement par visite :
"SELECT COUNT(*) FROM statistiques WHERE annee=$my_annee GROUP BY `jour`" -
Tout d'abord, merci de votre aide :)
En fait dans ma base, j'ai la date des visites "découpées" :
jour ---> 09
mois ----> 07
annee ----> 2007
Le jour de la semaine n'apparait pas. C'est pourquoi j'ai utilisé :
$joursem = array('Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'); $timestamp = mktime (0, 0, 0, $mes_mois, $mes_jours, $mon_annee); $myday = $joursem[date("w",$timestamp)];
Mais pourquoi pas rajouter un champs dans la base avec le jour de la semaine...
en effet, cela serait plus simple.
En tout cas, merci ;) -
J'ai trouvé une solution !!!
Je la poste donc pour ceux que ça pourrait aider..
Il suffit d'incrémenter selon les résultats... Bref, cela donne :
$cpt_lun = 0; $cpt_mar = 0; $cpt_mer = 0; $cpt_jeu = 0; $cpt_ven = 0; $cpt_sam = 0; $cpt_dim = 0; $query="SELECT*FROM statistiques WHERE annee=$my_annee"; $result = mysql_query($query); while ($tableau = mysql_fetch_array($result)) { $mes_jours=$tableau["jour"]; $mes_mois=$tableau["mois"]; $mon_annee=$tableau["annee"]; $joursem = array('Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'); $timestamp = mktime (0, 0, 0, $mes_mois, $mes_jours, $mon_annee); $myday = $joursem[date("w",$timestamp)]; if ($myday=="Lun") { $cpt_lun++; } if ($myday=="Mar") { $cpt_mar++; } if ($myday=="Mer") { $cpt_mer++; } if ($myday=="Jeu") { $cpt_jeu++; } if ($myday=="Ven") { $cpt_ven++; } if ($myday=="Sam") { $cpt_sam++; } if ($myday=="Dim") { $cpt_dim++; } }