Bonjour
J'aurai plusieurs questions à vous poser ! Donc déjà, voici ma situation : j'ai créé une liste déroulante me permettant de récupérer les imprimantes répertoriées dans ma base de données. Le voici :
Puis, depuis cette liste déroulante, lorsque je choisis une imprimante, et que je clique sur le bouton, cela m'affiche mon graphique. Voici le code (ne faites pas attention, certains commentaires sont des essais de ma part) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Liste déroulante</title> </head> <body> <form action="graph_histo_impr_copie.php" method="POST"> <table> <tr> <td> <?php // Connexion à MySQL mysql_connect("localhost", "root", "a" ); mysql_select_db("imprimantes_test" ); // Requête sur la table choisie $reponse = mysql_query("SELECT * FROM imprimantes" ); echo'<select name="imprimante">'; while ($donnees = mysql_fetch_array($reponse)) { ?> <option value="<?php echo $donnees['id_imprimante']; ?>"><?php echo $donnees['nom_imprimante']; ?></option> <?php } echo'</select>'; // Déconnexion de la base mysql_close(); ?> </td> </tr> <tr> <td> <input type="submit" value="Afficher le graphique" /> </td> </tr> </table> </form> </body> </html>
Et voici ce que ça me donne (en exemple) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121 <?php include ("../jpgraph/src/jpgraph.php"); include ("../jpgraph/src/jpgraph_bar.php"); define('MYSQL_HOST', 'localhost'); define('MYSQL_USER', 'root'); define('MYSQL_PASS', 'a'); define('MYSQL_DATABASE', 'imprimantes_test'); $tableauDate = array(); $tableauCompteurs = array(); // ************************************************ // Extraction des données dans la base de données * // ************************************************ $id_impr = $_POST['imprimante']; $sql = <<<EOF SELECT compteur AS COMPT, date_releve AS JOUR FROM compteurs WHERE id_imprimante = '$id_impr' ORDER BY date_releve DESC LIMIT 0,30 EOF; /*$nom = <<<EOF SELECT nom_imprimante, FROM imprimantes EOF;*/ $mysqlCnx = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Problème de connexion mysql'); @mysql_select_db(MYSQL_DATABASE) or die('Problème de sélection de la base'); $mysqlQuery = @mysql_query($sql, $mysqlCnx) or die('Problème de requête'); //$nom_impr = @mysql_query($nom, $mysqlCnx) or die('Problème de requête'); //echo $nom_impr; while ($row = mysql_fetch_array($mysqlQuery, MYSQL_ASSOC)) { $tableauDate[] = ' ' . $row['JOUR']; $tableauCompteurs[] = $row['COMPT']; $i++; } // Calcul de la différence entre les compteurs $i = 1; $j = array(); while ($i < (count($tableauCompteurs)-1)) { $j[$i] = $tableauCompteurs[$i] - $tableauCompteurs[$i+1]; $i++; } // *********************** // Création du graphique * // *********************** // Construction du conteneur // Spécification largeur et hauteur $graph = new Graph(800,500); // Réprésentation linéaire $graph->SetScale("textlin"); // Ajouter une ombre au conteneur $graph->SetShadow(); // Fixer les marges $graph->img->SetMargin(40,30,25,100); // Gauche, droit, haut, bas // Création du graphique histogramme $bplot = new BarPlot($j); // Spécification des couleurs des barres //$bplot->SetFillColor(array('red')); $bplot->SetFillGradient('#088A08', '#F5FBEF', GRAD_LEFT_REFLECTION); // Une ombre pour chaque barre $bplot->SetShadow(); // Afficher les valeurs pour chaque barre $bplot->value->Show(); // Fixer l'aspect de la police $bplot->value->SetFont(FF_ARIAL,FS_NORMAL,9); // Modifier le rendu de chaque valeur //$bplot->value->SetFormat('%d ventes'); // Ajouter les barres au conteneur $graph->Add($bplot); // Le titre $graph->title->Set("Compteurs de l'imprimante"); $graph->title->SetFont(FF_FONT1,FS_BOLD); // Titre pour l'axe horizontal(axe x) et vertical (axe y) $graph->xaxis->title->Set("Date"); $graph->yaxis->title->Set("Impressions par jour"); $graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD); $graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD); // Légende pour l'axe horizontal $graph->xaxis->SetTickLabels($tableauDate); $graph->xaxis->SetLabelAngle(45); // Change l'inclinaison de la date // Afficher le graphique $graph->Stroke(); ?>
J'ai donc plusieurs questions, que voici :
- Je voudrais afficher dans le titre de mon graphique, le nom de l'imprimante sélectionnée dans la liste déroulante. Je me doute qu'il faut le mettre dans une variable, j'ai fais des tests avec une requête (ce qu'on peut voir en commentaire), mais je n'arrive pas à intégrer le nom de mon imprimante choisie dans ma variable...
- Je souhaiterai modifier le format date de mon graphique. Pour le moment il est en format américain, et j'aimerai pouvoir le mettre en format français. Comment faire cela facilement ? De la même façon, j'aimerai pouvoir "retourner" mon graphique. Il se lit de droite à gauche, et j'aimerai qu'il se lise de gauche à droite.
- Mon graphique affiche le nombre d'impression qu'il y a eu en une journée. Je souhaiterai qu'au dessus de chaque barre s'inscrive la valeur qu'elle représente. Est-ce possible ? Si oui, comment faire ?
- Enfin, je souhaiterai que tout ceci se trouve sur une seule page web. Avec, par exemple, la liste déroulante à gauche, et que lorsque je choisis mon imprimante, le graphique apparaisse dans un cadre au centre du site. Pour le moment, je n'arrive pas à le faire sur la même page, il m'ouvre une nouvelle page à chaque fois.
- Petit bonus (plus en rapport avec le HTML/CSS): y'a-t-il possibilité de modifier l'apparence de la liste déroulante pour qu'elle apparaisse façon "menu" ?
Voilà, ce sera tout xD
J'ai bien conscience que je demande beaucoup de choses, et j'en suis désolée, mais je débute avec JpGraph et j'ai encore du mal à bien m'en servir...
Je vous remercie donc d'avance pour l'aide que vous pourrez me fournir !
Ju'
Partager