[PHP] Array + variables dynamiques

Résolu
Kalamya Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   -  
Kalamya Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   -
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 :

...

$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 :)
A voir également:

4 réponses

Alain42
 
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
0
A.Nonyme
 
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`"
0
Kalamya Messages postés 47 Date d'inscription   Statut Membre Dernière intervention  
 
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 ;)
0
Kalamya Messages postés 47 Date d'inscription   Statut Membre Dernière intervention  
 
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++; }
}
0