jpgraph et cakephp

61 views
Skip to first unread message

xeno77

unread,
Dec 27, 2006, 7:14:05 AM12/27/06
to Cakephp-fr
bonjour à tous,

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.

Message has been deleted

CraZyLeGs

unread,
Dec 27, 2006, 11:06:58 PM12/27/06
to Cakephp-fr
Ce genre de choses serai à sa place quand les Behaviors ( versions 1.2
) , qui sont pour les Modèles ce que les composants et helpers sont
pour les contrôleurs et les vues.
En attendant, oui un Modèle sans table serai adéquat.
Just évite de faire des include et autre '../', principalement ce que
cake offre est une architecture et donc une organisation basée sur les
conventions.

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

xeno77

unread,
Dec 28, 2006, 3:12:30 AM12/28/06
to Cakephp-fr
Merci de tes conseils,

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.

Olivier Percebois-Garve

unread,
Dec 28, 2006, 4:01:57 AM12/28/06
to cakep...@googlegroups.com
Tu as un blog ?
Si tu pouvais décrir ta solution quelque part une fois que tu l'as finalisée...
 
Je pense que c'est le cas général que jpgraph soit partagé entre differentes applis.
Je m'y met parce que je suis en train d'installer phpOpenTracker pour un site non-cake.
Néanmoins j'aimerais plus tard le faire fonctionner avec cake, et comme jpgraph est necessaire pour
phpOpenTracker, je pourrai me baser sur ce que tu aura écrit.

olivvv

xeno77

unread,
Jan 4, 2007, 11:40:45 AM1/4/07
to Cakephp-fr
J'ai trouvé une solution plus élégante sous linux, c'est de créer
un lien par la commande (ln -s rép_lib_jpgraph_partagé
cake/monapp/vendors/jpgraph.

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.

Jean

unread,
Feb 13, 2007, 5:03:27 AM2/13/07
to Cakephp-fr
Que pensez-vous d'utiliser <a href=http://groups.google.com/group/cake-
php/browse_thread/thread/f5f5faf9edd894bb/fa19088cda9769eb?
lnk=gst&q=bootstrap+vendor&rnum=3#" target="_blank">bootstrap</a> pour
déclarer vendor ?
Jean

Reply all
Reply to author
Forward
0 new messages