Jpgraphe avec des paramétres
fatyinfo
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
fatyinfo Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
fatyinfo Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai besoin de créer des graphes avec des paramètres, c'est à dire lorsque l'utilisateur saisie les données dans un formulaire, il clique sur une bouton puis le graphe apparaît,
Voila les codes de mes fichiers, mais j'ai pas réussi à afficher le graphe,
Merci bien pour votre aide.
code formulaire.php
Code afficheur.php
Code testgraphe.php
J'ai besoin de créer des graphes avec des paramètres, c'est à dire lorsque l'utilisateur saisie les données dans un formulaire, il clique sur une bouton puis le graphe apparaît,
Voila les codes de mes fichiers, mais j'ai pas réussi à afficher le graphe,
Merci bien pour votre aide.
code formulaire.php
<?php
define('MYSQL_HOST', 'localhost');
define('MYSQL_USER', 'root');
define('MYSQL_PASS', '');
define('MYSQL_DATABASE', 'ventes');
?>
<form action="afficheur.php" method="post">
<select name="mois">
<?php
// Récupération des informations triées par ordre alphabétique
$sql = 'SELECT MONTH(DTHR_VENTE) as mois FROM ventes GROUP BY MONTH(DTHR_VENTE)';
// Connexion à la BDD
$mysqlCnx = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Pb de connxion mysql');
// Sélection de la base de données
@mysql_select_db(MYSQL_DATABASE) or die('Pb de sélection de la base');
// Requête
$mysqlQuery = @mysql_query($sql, $mysqlCnx) or die('Pb de requête');
while($data = mysql_fetch_array($mysqlQuery)){
// on affiche chaque champ
echo '<option name="'.$data['mois'].'">'.$data['mois'].'</option>';
}
//On libère mysql de cette première requête
mysql_free_result ($req);
//On ferme le select
?>
</SELECT>
<select name="annee">
<?php
// Récupération des informations triées par ordre alphabétique
$sql = 'SELECT YEAR(DTHR_VENTE) as annee FROM ventes GROUP BY YEAR(DTHR_VENTE)';
// Connexion à la BDD
$mysqlCnx = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Pb de connxion mysql');
// Sélection de la base de données
@mysql_select_db(MYSQL_DATABASE) or die('Pb de sélection de la base');
// Requête
$mysqlQuery = @mysql_query($sql, $mysqlCnx) or die('Pb de requête');
while($data = mysql_fetch_array($mysqlQuery)){
// on affiche chaque champ
echo '<option name="'.$data['annee'].'">'.$data['annee'].'</option>';
}
//On libère mysql de cette première requête
mysql_free_result ($req);
//On ferme le select
?>
</SELECT>
<input type="submit" name="Valider" value="OK"/>
</form>
Code afficheur.php
<?php
include ("formulaire.php");
$m=$_POST['mois'];
$a=$_POST['annee'];
echo "<img id='Graphe' src='testgraphe.php?mois=".$m."&annee=".$a."' alt='Le graphe' />";
?>
Code testgraphe.php
<?php
include ("jpgraph/src/jpgraph.php");
include ("jpgraph/src/jpgraph_bar.php");
define('MYSQL_HOST', 'localhost');
define('MYSQL_USER', 'root');
define('MYSQL_PASS', '');
define('MYSQL_DATABASE', 'ventes');
$tableauVente = array();
$tableauPrix = array();
$mois="";
$annee="";
// **********************************************
// Extraction des données dans la base de données
// *************************************************
// formulaire
if(isset($_POST['mois'])) && (isset($_POST['annee']))
{
$mois=$_REQUEST['mois'];
$annee=$_REQUEST['annee'];
}
$sql =
'SELECT
ID AS vente,
sum(PRIX) AS PRIX
FROM 'ventes'
where YEAR('DTHR_VENTE')='.$annee.' AND MONTH(DTHR_VENTE) ='.$mois.'
GROUP BY ID'
;
$mysqlCnx = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Pb de connxion mysql');
@mysql_select_db(MYSQL_DATABASE) or die('Pb de sélection de la base');
$mysqlQuery = @mysql_query($sql, $mysqlCnx) or die('Pb de requête');
while ($row = mysql_fetch_array($mysqlQuery, MYSQL_ASSOC)) {
$tableauVente[] = 'vente ' . $row['vente'];
$tableauPrix[] = $row['PRIX'];
}
/*
printf('<pre>%s</pre>', print_r($tableauAnnees,1));
printf('<pre>%s</pre>', print_r($tableauNombreVentes,1));
*/
// *******************
// Création du graphique
// *******************
// Construction du conteneur
// Spécification largeur et hauteur
$graph = new Graph(400,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);
// Création du graphique histogramme
$bplot = new BarPlot($tableauPrix);
// Spécification des couleurs des barres
$bplot->SetFillColor(array('red', 'green', 'blue'));
// 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' : ventes par années");
$graph->title->SetFont(FF_FONT1,FS_BOLD);
// Titre pour l'axe horizontal(axe x) et vertical (axe y)
$graph->xaxis->title->Set("ID");
$graph->yaxis->title->Set("Nombre de ventes");
$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($tableauVente);
// Afficher le graphique
$graph->Stroke();
?>
A voir également:
- Jpgraphe avec des paramétres
- Parametres de mon ordinateur - Guide
- Paramètres dns - Guide
- Paramètres de confidentialité - Guide
- Le bon coin mon compte parametres - Guide
- Paramètres iphone - Guide
2 réponses
Bonjour,
Avez-vous un message d'erreur? si oui, lequel?
Sinon, - c'est juste mon avis - JPGRAPH est assez contraignant et oblige à génerer le graphe coté serveur.
Personnellement, j'ai choisi une solution plus légère en reportant la génération de graphe vers RGRAPH:
https://html5.immo-scope.com/article/rgraph_debuter
RGRAPH est une librairie javascript qui s'exécute coté client. Avec RGRAPH la description d'un graphe tient en quelques lignes, exemple:
Les données
var data = [12,22,14,4,10,17,8];
(en gras) sont injectables par PHP au moment de créer la page WEB. Exemple:
Résultat:
- extraction simple des données vers RGRAPH
- génération du graphe coté client final, ça allège la charge serveur
- code très compact, beaucoup plus qu'une image
- image récupérable par le client sur son PC: clic-droit et "enregistrer sous"
A+
public function meilleurProgrammeurDuMonde() { return "MOI"; } // humour
Avez-vous un message d'erreur? si oui, lequel?
Sinon, - c'est juste mon avis - JPGRAPH est assez contraignant et oblige à génerer le graphe coté serveur.
Personnellement, j'ai choisi une solution plus légère en reportant la génération de graphe vers RGRAPH:
https://html5.immo-scope.com/article/rgraph_debuter
RGRAPH est une librairie javascript qui s'exécute coté client. Avec RGRAPH la description d'un graphe tient en quelques lignes, exemple:
<canvas id="myCanvas" width="500" height="250" style="border:1px solid grey;background-color:#cfcfff;">[canvas non supporté]</canvas> <script> window.onload = function () { var data = [12,22,14,4,10,17,8]; var bar = new RGraph.Bar('myCanvas', data) .Set('labels', ['lun','mar','mer','jeu','ven','sam','dim']) .Set('gutter', 45) .Set('colors', ['#ffa640']) .Draw(); } </script>
Les données
var data = [12,22,14,4,10,17,8];
(en gras) sont injectables par PHP au moment de créer la page WEB. Exemple:
<?php $datasGraphe = "[12,22,14,4,10,17,8]"; ?> <script> window.onload = function () { var data = <?php echo $datasGraphe; ?>; var bar = new RGraph.Bar('myCanvas', data) .Set('labels', ['lun','mar','mer','jeu','ven','sam','dim']) .Set('gutter', 45) .Set('colors', ['#ffa640']) .Draw(); } </script>
Résultat:
- extraction simple des données vers RGRAPH
- génération du graphe coté client final, ça allège la charge serveur
- code très compact, beaucoup plus qu'une image
- image récupérable par le client sur son PC: clic-droit et "enregistrer sous"
A+
public function meilleurProgrammeurDuMonde() { return "MOI"; } // humour