[PHP] Array + variables dynamiques

Résolu/Fermé
Kalamya Messages postés 47 Date d'inscription mercredi 2 mars 2005 Statut Membre Dernière intervention 19 octobre 2008 - 8 juil. 2007 à 15:11
Kalamya Messages postés 47 Date d'inscription mercredi 2 mars 2005 Statut Membre Dernière intervention 19 octobre 2008 - 9 juil. 2007 à 19:41
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 :)

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
0
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 mercredi 2 mars 2005 Statut Membre Dernière intervention 19 octobre 2008
9 juil. 2007 à 15:42
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 mercredi 2 mars 2005 Statut Membre Dernière intervention 19 octobre 2008
9 juil. 2007 à 19:41
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