Création d'archives sur un tableau de données

Optimus
Invité n'ayant pas de compte PHPfrance

15 déc. 2008, 16:48

Bonjour à tous,

On rentre dans le vif du sujet, voici mon code :

Code : Tout sélectionner

<?php $nom = isset($_GET['nom'])? $_GET['nom'] : ''; $type = $_GET['type']; if(empty($type)) { $type = "$nom"; } $lignes = file("$nom"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Menu</title> <style> body { font-family : Verdana,Arial; background-color : #A8D3ED; } td { font-family : Verdana,Arial; font-size : 8pt; } a { text-decoration : none; } </style> </head> <body> <table border="1"> <CAPTION>Compteur</CAPTION> <tbody> <tr> <th colspan="12" rowspan="1">Type : <?php echo $type?></th> </tr> <tr> <th colspan="1" rowspan="2">date</th> <th colspan="1" rowspan="2">total</th> <th colspan="3" rowspan="1">A</th> <th colspan="6" rowspan="1">I</th> <th colspan="1" rowspan="2">E</th> </tr> <tr> <th>T.A</th> <th>E.P</th> <th>E.T</th> <th>T.I</th> <th>E.Pa</th> <th>E.Pr</th> <th>E.D</th> <th>E.C</th> <th>E.T</th> </tr> <?php for ($i=0; $i<count($lignes); $i++) { $couleur_ligne = ($i % 2)? '#B8C8FE' : '#EEEEEE'; $statistiques = explode(" ",$lignes[$i]); echo '<tr>'; for ($a=0; $a<count($statistiques); $a++) { echo '<td bgcolor="'.$couleur_ligne.'">'.$statistiques[$a].'</td>'; } echo '</tr>'; }?> </tbody> </table> <br /> <a href="export.php"><u>Exporter le tableau</u></a> </body> </html>

Il y a donc une ligne par jour dans le tableau.

Je souhaite que chaque ligne avec les données correspondantes au mois se retrouve dans une arborescence.

+2008
++janvier
++février
++mars
etc.

Comment cela est possible ?

Je n'ai pas trouvé la fonction ou le moyen approprié.

Merci.

ViPHP
ViPHP | 4674 Messages

15 déc. 2008, 18:34

Hey :),

Je crois que c'est clair, il faut travailler sur les dates. À toi de voir comment les dates sont stockées chez toi. (Le mieux est de travailler via un format Timestamp).

Ensuite, l'algorithme est très simple :

Code : Tout sélectionner

pour chaque année faire afficher l'année pour chaque mois faire afficher le mois fin pour fin pour
Si tu travailles sur une base SQL, il est préférable d'effectuer tous les traitements en une seule requête et de lire les résultats dans une boucle. Remarque, je dirais la même chose si tu exploites un fichier …

Ta question est très vague et on a aucune information. Je te demande donc plus de précisions :).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Invité
Invité n'ayant pas de compte PHPfrance

17 déc. 2008, 12:26

Salut et merci pour la réponse.

Alors les données sont stockés dans un fichier.

Des quelles informations as-tu besoin ?

ViPHP
ViPHP | 4674 Messages

17 déc. 2008, 14:39

Par exemple le format du fichier. Mais je ne vais pas te faire ton script hein, seulement te donner des pistes.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Invité
Invité n'ayant pas de compte PHPfrance

18 déc. 2008, 15:54

Je cherche une piste en effet mais complètement novice en php, je ne vois pas.

Voici un exemple d'un des fichiers :

Code : Tout sélectionner

20/11/08 6836 5792 5680 112 1017 428 589 0 0 0 27 21/11/08 6831 5823 5702 121 1008 422 586 0 0 0 23 22/11/08 6831 5833 5738 95 998 418 580 0 0 0 34 23/11/08 6831 5832 5737 95 999 418 581 0 0 0 22 24/11/08 6831 5832 5737 95 999 418 581 0 0 0 22 25/11/08 6825 5801 5705 96 1024 393 613 18 0 0 32 26/11/08 6779 5801 5705 96 978 411 555 12 0 0 32 27/11/08 6665 5848 5697 151 817 366 451 0 0 0 32 28/11/08 6708 5876 5745 131 832 368 452 12 0 0 32 29/11/08 6708 6055 5800 255 653 232 421 0 0 0 32 30/11/08 6708 6024 5769 255 684 232 452 0 0 0 32 01/12/08 6708 6024 5769 255 684 232 452 0 0 0 32 02/12/08 6679 6019 5899 120 660 227 420 13 0 0 39 03/12/08 6671 6017 5896 121 654 233 419 2 0 0 41 04/12/08 6675 6022 5908 114 653 230 418 0 1 4 41 05/12/08 6675 6027 5909 118 648 230 418 0 0 0 32 06/12/08 6637 5946 5835 111 691 216 475 0 0 0 33 07/12/08 6638 5946 5835 111 692 216 475 1 0 0 33 08/12/08 6638 5946 5835 111 692 216 475 1 0 0 33 09/12/08 6508 5856 5746 110 652 214 433 5 0 0 36 10/12/08 6443 5805 5690 115 638 218 420 0 0 0 46
Ce que je souhaite c'est avoir l'année que je peux développer puis ensuite avoir les mois, et enfin les jours. Un truc du genre :

Code : Tout sélectionner

+2006 +2007 +2008 ++01 ++02 ++03 ++04 ++05 ++06 ++07 ++08 ++09 ++10 ++11 ++12 +++01/12/08 6708 6024 5769 255 684 232 452 0 0 0 32 +++02/12/08 6679 6019 5899 120 660 227 420 13 0 0 39 +++03/12/08 6671 6017 5896 121 654 233 419 2 0 0 41 +++04/12/08 6675 6022 5908 114 653 230 418 0 1 4 41 +++05/12/08 6675 6027 5909 118 648 230 418 0 0 0 32 +++06/12/08 6637 5946 5835 111 691 216 475 0 0 0 33 +++07/12/08 6638 5946 5835 111 692 216 475 1 0 0 33 +++08/12/08 6638 5946 5835 111 692 216 475 1 0 0 33 +++09/12/08 6508 5856 5746 110 652 214 433 5 0 0 36 +++10/12/08 6443 5805 5690 115 638 218 420 0 0 0 46
Comme une abrosence de fichiers./répertoire.

Eléphanteau du PHP | 45 Messages

18 déc. 2008, 16:47

salut

apres ton
$statistiques = explode(" ",$lignes[$i]);

fait un print_r de $statistique tu comprendra


tu doit te retrouvé avec
$statistique[0]=>"20/11/08"
$statistique[1]=>"6836"
$statistique[2]=>"5792" etc....

a toi de deviné!!!!????

$DateStatistique=explode("/",$statistique[0]);
tu aura
$DateStatistique[0]=>20
$DateStatistique[1]=>11
$DateStatistique[2]=>08

le tout dans les boucle qui vont bien et voila

Invité
Invité n'ayant pas de compte PHPfrance

19 déc. 2008, 16:26

Nickel, merci.

voici mon bout de code :

Code : Tout sélectionner

<?php for ($i=0; $i<count($lignes); $i++) { $couleur_ligne = ($i % 2)? '#B8C8FE' : '#EEEEEE'; $statistiques = explode(" ",$lignes[$i]); $DateStatistique=explode("/",$statistiques[0]); if ( $DateStatistique[1] == $mois ){ echo '<tr>'; for ($a=0; $a<count($statistiques); $a++) { echo '<td bgcolor="'.$couleur_ligne.'">'.$statistiques[$a].'</td>'; } echo '</tr>'; } }?>
Finalement, j'oublie l'arborescence et je veux faire plus simple.

J'ai une frame sur la gauche avec une arborescence qui vient mettre à jour les données dans le tableau en fonction de mon choix (ce sont les valeurs nom et type que je récupére dans ce code).

La nom et le type conditionne le fichier qui est affiché dans le tableau.

Je souhaite donc y ajouter la valeur mois et annee.

en gros comme si j'avais en ordonnée ma valeur nom+type et en abscisse la valeur mois+annee.

Je souhaite donc que lorsque je sélectionne un mois et une année, cette valeur soit "transporté" quelque soit le nom+type.

Merci.