Page 1 sur 1

donnees pour jpgraph

Posté : 05 mars 2014, 18:33
par touf2638
Bonjour,
J'utilise un camembert de jpgraph et celui fonctionne bien quand je renseigne directement le tableau dans le code php que j'appelle dans ma balise image en html.
Par contre je travaille sur un modele MVC et mes données sont en dehors de la balise image qui récupère le code php généré par le code php du camembert.
Comment dois je faire pour passer mon tableau de données ?

Ici mon fichier camembert
<?php
	include('../Classes/Camembert/jpgraph.php');
	include('../Classes/Camembert/jpgraph_pie.php');
		
	// Initialisation du graphique
	$graphe = new PieGraph(250, 250);
	
	// Creation du camembert
	$camembert = new PiePlot($Test);

	// Valeurs absolues	
	$camembert->SetValueType(PIE_VALUE_ABS);
	
	// Ajout du camembert au graphique
	$graphe->add($camembert);
	
	// Ajout des couleurs
	//$camembert->SetSliceColors(array('red', 'blue'));
	
	// Affichage du graphique
	$graphe->stroke();
			
?>
Ici la balise et par exemple le tableau de données test au dessus

Code : Tout sélectionner

<?php $Test=array(40,60); ?> <div> <img src="../View/PieDepenses.php"></img> </div>

Re: donnees pour jpgraph

Posté : 05 mars 2014, 19:06
par moogli
salut,

sérialisation+ passage de variable par l'url.

tu peux aussi utiliser du json si tu veux le résultat final est le même.

Je ne pense pas que cela soit une super idée mais si tu ne peux pas faire autrement c'est une solution.


@+

Re: donnees pour jpgraph

Posté : 05 mars 2014, 21:22
par yann18
tu peux générer l'image du graphique et la stocker dans un répertoire donnée. L'image generée sera affichée dans la vue à l'aide de la balise img:

<?php
        include('../Classes/Camembert/jpgraph.php');
        include('../Classes/Camembert/jpgraph_pie.php');
               
        // Initialisation du graphique
        $graphe = new PieGraph(250, 250);
       
        // Creation du camembert
        $camembert = new PiePlot($Test);

        // Valeurs absolues    
        $camembert->SetValueType(PIE_VALUE_ABS);
       
        // Ajout du camembert au graphique
        $graphe->add($camembert);
       
        // Ajout des couleurs
        //$camembert->SetSliceColors(array('red', 'blue'));
       
        // Affichage du graphique
        $graphe->stroke("path/graphique.png");
                       
?>
 
et dans la vue tu fais appel à l'image à l'aide d'une balise img:
<div>
      <img src="path/graphique.png" />
   </div>

Re: donnees pour jpgraph

Posté : 06 mars 2014, 15:23
par touf2638
Merci bien.
Les deux solutions marchent par contre la deuxième me met "JpGraph Error: 25111 Can't delete cached image ../Images/Camembert.png. Permission problem?"
Je recherche donc comment supprimer le fichier avant de le recréer. L'avantage de la deuxième c'est que je peux bosser en objets.
Re merci

Re: donnees pour jpgraph

Posté : 06 mars 2014, 15:56
par touf2638
Pour finir je remets le code qui marche
<?php
	//ini_set("display_errors",0);error_reporting(0); permet de desactiver les erreurs

	include('../Classes/Camembert/jpgraph.php');
	include('../Classes/Camembert/jpgraph_pie.php');
			
	class GenerateurCamembert
	{
		public function SetCamembert($Datas,$Hauteur,$Largeur) 
		{
		
			// Initialisation du graphique
			$graphe = new PieGraph($Hauteur, $Largeur);
			
			// Creation du camembert
			$camembert = new PiePlot($Datas);

			// Valeurs absolues	
			$camembert->SetValueType(PIE_VALUE_ABS);
			
			// Ajout du camembert au graphique
			$graphe->add($camembert);
			
			// Ajout des couleurs
			//$camembert->SetSliceColors(array('red', 'blue'));

			// Suppression du fichier
			$filename='../Images/CamembertFraisFixes.png';
			if (file_exists($filename)) 
			{
				unlink($filename);
			} 
				
			// Sauvegarde du graphique
			$graphe->stroke($filename);
		}
	}		
?>
l'appel
	// Generation camembert
	$GenerateurCamembert = new GenerateurCamembert();
	$GenerateurCamembert->SetCamembert($Depenses_Annee,250,250);
et la balise
	<div>
		<img src="../Images/CamembertFraisFixes.png"></img>
	</div>