donnees pour jpgraph

Petit nouveau ! | 3 Messages

05 mars 2014, 18:33

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>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

05 mars 2014, 19:06

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.


@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 571 Messages

05 mars 2014, 21:22

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>

Petit nouveau ! | 3 Messages

06 mars 2014, 15:23

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

Petit nouveau ! | 3 Messages

06 mars 2014, 15:56

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>