Array en PHP

diotquentin Messages postés 6 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 6 novembre 2009 - 24 juil. 2009 à 20:36
nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 - 30 juil. 2009 à 20:46
Bonjour,

j'ai créé un array avec une boucle qui liste les pages vus en récupérant les données de ma bd. Voici le résultat :

[i]0H - 1H : 0 page vue
1H - 2H : 0 page vue
2H - 3H : 0 page vue
3H - 4H : 0 page vue
4H - 5H : 0 page vue
5H - 6H : 0 page vue
6H - 7H : 0 page vue
7H - 8H : 0 page vue
8H - 9H : 0 page vue
9H - 10H : 0 page vue
10H - 11H : 0 page vue
11H - 12H : 0 page vue
12H - 13H : 0 page vue
13H - 14H : 0 page vue
14H - 15H : 0 page vue
15H - 16H : 0 page vue
16H - 17H : 0 page vue
17H - 18H : 0 page vue
18H - 19H : 0 page vue
19H - 20H : 0 page vue
20H - 21H : 0 page vue
21H - 22H : 0 page vue
22H - 23H : 0 page vue
23H - 24H : 0 page vue/i

Voici le code source de mon array :


[i]<?php
if (!isset($_POST['jour']) || !isset($_POST['mois']) || !isset($_POST['annee'])) {

$date_jour = date("Y-m-d");

}

else {

if (empty($_POST['jour']) && empty($_POST['mois']) && empty($_POST['annee'])) {

$date_jour = date("Y-m-d");

}

else {

$date_jour = $_POST['annee'].'-'.$_POST['mois'].'-'.$_POST['jour'];

}

}



// on déclare un tableau ($visite_par_heure) qui aura 24 clés : de 0 à 23, chaque élément du tableau contiendra le nombre de pages vues pendant une tranche horaire (à la clé 0, on aura le nombre de pages vues entre 00:00 et 00:59:59)

$visite_par_heure = array();



$sql = 'SELECT date FROM materiel WHERE date LIKE "'.$date_jour.'%" AND pseudo="'.$_SESSION['pseudo'].'" ORDER BY date ASC';

$result = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());

while ($data = mysql_fetch_array($result)) {

$date=$data['date'];



sscanf($date, "%4s-%2s-%2s %2s:%2s:%2s", $date_Y, $date_m, $date_d, $date_H, $date_i, $date_s);



if ($date_H < "10"){

$date_H = substr($date_H, -1);

}



$visite_par_heure[$date_H]=$visite_par_heure[$date_H]+1;

}

$total_pages_vu = mysql_num_rows($result);

mysql_free_result($result);



sscanf($date_jour, "%4s-%2s-%2s %2s:%2s:%2s", $date_Y, $date_m, $date_d, $date_H, $date_i, $date_s);



// on affiche le nombre de pages vues en fonction des tranches horaires

echo '
Les statistiques du '.$date_d.'/'.$date_m.'/'.$date_Y.' :

';



for($i = 1; $i <= 24; $i++) {

$j = $i-1;

if (!isset($visite_par_heure[$j])) {

?><? echo $j.'H - '.$i.'H : 0 page vue
';

}

else {

?><? echo $j.'H - '.$i.'H : '.$visite_par_heure[$j].' pages vues
';

}

}/i


Comme ce n'est pas très esthétique je voudrais transformer ça en un array de ce genre pour ensuite l'intégrer dans un graphique en flash :


[i]<?php
$chart[ 'chart_data' ] = array (
array ( "", "".0_1.", "1-2h", "2-3h", "4-5h"// etc etc
),
array ( "Pages vues", "".$nb_page_0_1h."", "".$nb_page_0_2."" ) // etc etc
);/i


Je pense qu'il faut une boucle for pour lister les dates mais je n'y arrive pas. Quelqu'un pourrait m'aider ?
Merci d'avance.

2 réponses

syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
25 juil. 2009 à 08:07
Ouh là là.. tu te compliques la vie..
Pourquoi tout d'abord ne pas faire un tableau classique indexé de 0 à 23 ? Inutile de passer par des clés en chaine de caractères.. Ainsi tu verras que ton $chart[] peut être un tableau à 1 seule dimension.
S.
0
nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 1
30 juil. 2009 à 20:46
Bonsoir,

L'art de construire une usine à gaz quand une simple boucle foreach fait l'affaire :)
0
Rejoignez-nous