Bonjour,

Voilà, j'ai une liste déroulante qui récupère ses différents choix dans ma base de données:


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
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<title>Liste déroulante</title>
	</head>
 
	<body>
		<form action="" 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="reponse">';
 
						while ($donnees = mysql_fetch_array($reponse))
						{
						?>
 
						<option value="<?php echo $donnees['nom_imprimante']; ?>"><?php echo $donnees['nom_imprimante']; ?></option>
 
						<?php
						}
 
						echo'</select>';
 
						// Déconnexion de la base
						mysql_close();
						?>
					</td>
					<td>
						<input type="submit" value="Afficher le graphique" />
					</td>
				</tr>
			</table>
		</form>
	</body>
</html>
Puis, j'ai le script de mon graphique fait avec JpGraph:

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
<?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 = ; //Doit prendre pour valeur l'identifiant de l'imprimante choisie dans la liste
 
$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;
 
$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');
 
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(2000,250);
 
// Réprésentation linéaire
$graph->SetScale("textlin");
 
// Ajouter une ombre au conteneur
$graph->SetShadow();
 
// Fixer les marges
$graph->img->SetMargin(40,30,25,40); // 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('#440000', '#FF9090', 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("Graphique 'HISTOGRAMME' : Compteurs");
$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);
 
 
// Afficher le graphique
$graph->Stroke();
 
?>

Il faudrait que quand je clique sur "afficher le graphique" dans ma liste déroulante, il m'affiche, en dessous de la liste déroulante, le graphique qui correspond à l'imprimante choisie dans la liste.

La liste déroulante prend ses valeurs dans la table "imprimantes" qui se compose des champs : id_imprimante, nom_imprimante, adresse_ip, etc.

Et le script de mon graphique prend pour valeur les identifiants d'imprimante de ma table "compteurs" qui se compose des champs : id_compteur, id_imprimante, compteur.

J'ai donc écris une requête qui fait la jointure entre les deux tables:
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT compteurs.compteur, imprimantes.nom_imprimante
FROM compteurs
INNER JOIN imprimantes ON compteurs.id_imprimante = imprimantes.id_imprimante

Mais après ça, je ne vois pas comment faire le lien entre mes deux scripts. Je suppose qu'il faudrait mettre quelque chose dans l'action de mon formulaire, mais si je mets le script du graphique, il me renverra seulement le graphique de l'imprimante que j'aurai indiqué dans le script... Je n'arrive pas à faire le lien entre la liste et le graph.

J'espère que j'ai réussi à me faire comprendre ^^'

Merci d'avance pour votre aide !

Ju'