Action d'une liste déroulante, ou comment faire le lien entre une liste et un script
Bonjour,
Voilà, j'ai une liste déroulante qui récupère ses différents choix dans ma base de données:
Code:
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:
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:
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'