comment implementer jpgraph pour faire des graphiques sur une base de
donnée (postgresql) ?
J'ai pensé à cela, qu'en penser vous ?
models/graphe.php
var $useTable = false;
// centralise l'acces aux donnees ici
function data_pies_Origine() {
renvoie les data par un
this->query();
formatage $data comme attendue dans la vue.
}
graphes_controller.php
// liste des graphes de l'applicaiton
function graph_nbclient_par_origine(largeur=300,hauteur=250) {
set ($title, "nb client par origine" );
set ($data, $this->Graph->data_pies_Origine() );
}
view/graphes/graph_nbclient_par_origine.thtml
// code (pies) jpgraph pour chaque graphique (permet de
personnaliser chaque graphe)
include (ROOT_SRC_JPGRAPH . "jpgraph.php");
include (ROOT_SRC_JPGRAPH . "jpgraph_pie.php");
include (ROOT_SRC_JPGRAPH . "jpgraph_pie3d.php");
$data['legende'] => { Initiative , sollicitation }
$data['valeur'] =>
$data['valeur'][0] => { 25 , 20 }
....
$data['valeur'][1] => { 25 , 20 }
utilisation dans Report.thtml (pouvant contenir plusieurs graphs) :
// appel au controleur de creation du graphe pour l'affichage
de chaque graph.
echo $html->image('../graphes/graph_nbclient_par_origine/400/250',
array('alt'=>"MonAppli", 'border'=>"0"));
Merci de vos conseils.
include (ROOT_SRC_JPGRAPH . "jpgraph_pie3d.php");
=>
vendor('jpgraph/jpgraph_pie3d');
echo $html->image('../graphes/graph_nbclient_par_origine/400/250');
=>
echo $html->image('graphes/graph_nbclient_par_origine/400/250');
en supposant que jpgraph est installé dans ton répertoire vendors
et que ce que tu veux afficher avec image est dans un sous-répertoire
de 'img' qui s'appel 'graphes'
Amicalement
include (ROOT_SRC_JPGRAPH . "jpgraph_pie3d.php");
=>
mais malheureusement jpgraph est une brique partagée par d'autre
application sur le serveur (à la racine du serveur Web), c'est pour
cela que je suis passé par un fichier de config qui inclut des
constantes du type ROOT_SRC_JPGRAPH.
Ta solution aurait été de dupliquer jpgraph dans le répertoire
vendors, en effet cela respect l'architecture de cake, et cela évite
les dépendances d'une appli sur une librairie extérieur (il faut
peser le pour et le contre : mutualisation des libs entre appli ou
indépendance).
echo $html->image('../graphes/graph_nbclient_par_origine/400/250');
=>
J'avoue que ce n'est pas très élégants mais comme je me sers du
helper html->image; il pointe dans le répertoire webroot/img, alors
que je veux appeler mon controller graphes qui lui me crée l'image à
la volée par le biais de jpgraph, donc je reviens grâce au ../ dans
le répertoire webroot (le mod_rewrite me retrouvant mon controller
graphes). Si tu as plus simple, je suis preneur.
Merci encore,
Et vivement que la communauté cake francophone s'agrandisse.
ensuite je peux utiliser la librairie de cette manière :
graphes_controller.php
// liste des graphes de l'applicaiton
function graph_nbclient_par_origine(largeur=300,hauteur=250) {
vendor('jpgraph/src/jpgraph');
vendor('jpgraph/src/jpgraph_pie');
set ($title, "nb client par origine" );
set ($data, $this->Graph->data_pies_Origine() );
}
voila, j'espère que cela profitera à d'autres.
Nota : Sinon olivvv, la solution elle est décrite dans ce topic (je
n'ai pas grand chose à ajouter). Si tu as des pb de mises en oeuvre,
pose tes questions ici.
Amicalement.