IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[JpGraph] Un débutant et JPgraph


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Etudiant(IUT info)/Stagiaire
    Inscrit en
    Mai 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant(IUT info)/Stagiaire

    Informations forums :
    Inscription : Mai 2013
    Messages : 49
    Points : 47
    Points
    47
    Par défaut [JpGraph] Un débutant et JPgraph
    Bonjour à toutes et à tous !

    Attention, le post est assez long... Mais je vous remercie de bien vouloir prendre le temps de m'aider....

    Je debute totalement avec cette lib pour créer des graphiques pour mon application. Pour commencer à manipuler, j'ai récupéré le code d'un tuto (très clair) de ce site (http://eric-pommereau.developpez.com...age=graphiques). Je m'en suis vraiment servis.
    MON CODE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    if(!empty($_POST['choixGraph'])) //Choix du graphique
    {
    	if($_POST['choixGraph']=="bar")
    	{
    		echo "Vous avez choisi le graphique en : ".$_POST['choixGraph']."<br />";
    		//Mettre le code ici
    	}
    	else if($_POST['choixGraph']=="camembert")
    	{
    		echo "Vous avez choisi le graphique en : ".$_POST['choixGraph']."<br />";
    		//Mettre le code ici
    				// *****************************************
    				// Création du graphique
    				// *****************************************
     
    				// On spécifie la largeur et la hauteur du graph
    				$graph = new PieGraph(800,400);
     
    				// Ajouter une ombre au conteneur
    				$graph->SetShadow();
     
    				// Donner un titre
    				$graph->title->Set("Volume des ventes par années style PIE 3D");
     
    				// Quelle police et quel style pour le titre
    				// Prototype: function SetFont($aFamily,$aStyle=FS_NORMAL,$aSize=10)
    				// 1. famille
    				// 2. style
    				// 3. taille
    				$graph->title->SetFont(FF_GEORGIA,FS_BOLD, 12);
     
    				// Créer un camembert 
    				$pie = new PiePlot3D($arrayCritere);
     
    				// Quelle partie se détache du reste
    				$pie->ExplodeSlice(12);
     
    				// Spécifier des couleurs personnalisées... #FF0000 ok
    				$pie->SetSliceColors(array('red', 'blue', 'green'));
     
    				// Légendes qui accompagnent le graphique, ici chaque année avec sa couleur
    				$pie->SetLegends($arrayAll);
     
    				// Position du graphique (0.5=centré)
    				$pie->SetCenter(0.5);
     
    				// Type de valeur (pourcentage ou valeurs)
    				$pie->SetValueType(PIE_VALUE_ABS);
     
    				// Personnalisation des étiquettes pour chaque partie
    				$pie->value->SetFormat('%d ventes');
     
    				// Personnaliser la police et couleur des étiquettes
    				$pie->value->SetFont(FF_ARIAL,FS_NORMAL, 9);
    				$pie->value->SetColor('blue');
     
    				// ajouter le graphique PIE3D au conteneur 
    				$graph->Add($pie);
     
    				// Provoquer l'affichage
    				$graph->Stroke();
    	}
    $arrayAll = 100 et $arrayCritere = 2.

    J'ai fais un affichage de mes resultats d'une façon basique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    while ($row = mysqli_fetch_assoc($resuStats))
    	{
    	$critere++;
    ?>
    		<tr>
    			<td><?php echo $row["Matricule_Cand"]?></td>
    			<td><?php echo $row["Civilite_Cand"]?></td>
    			<td><?php echo $row["Nom_Cand"]?></td>
    			<td><?php echo $row["Etat"]?></td>
    			<td><?php echo $row["Affectation"]?></td>
    			<td><?php echo $row["Type"]?></td>
    			<td><?php echo $row["Code_Groupe"]?></td>
    		</tr>
    <?php
    	}
    } //Fin affichage des tables
    ?>
    	</table>
    <?php
    $arrayCritere[] = $critere;
    echo $critere." personnes répondant aux criteres <br />";
    Mon problème : message d'erreur m'indiquant :"The image XXX cannot be displayed because it contains errors"

    Je vous remercie si vous avez pris le temps de tout lire !
    Et je vous remercie encore plus si vous pouvez m'éclairer sans pour autant re-ecrire mon code, c'est pas comme ca que j'apprendrais ^^

  2. #2
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 595
    Points : 879
    Points
    879
    Par défaut
    salut.
    A mon sens, il y a 2 phases dans le deboguage.
    1 faire afficher un camembert statique
    2 fournir des données bien formatées au script qui va créer l'image

    Pour le point 1, je te conseille de rentrer en dur un tableau de valeurs pour $arrayCritere et de le faire afficher puis d'ajouter en dur le tableau de la legende. Quand le camembert s' affichera en statique, tu passes a la phase 2. verifier avec var_dump que tes 2 tableaux sont bien construits.
    Ensuite, on fait lepoint si ton graphique ne s' affiche toujours pas.

    Yves
    Participez vous aussi !
    Message utile
    Discussion résolue

  3. #3
    Membre du Club
    Homme Profil pro
    Etudiant(IUT info)/Stagiaire
    Inscrit en
    Mai 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant(IUT info)/Stagiaire

    Informations forums :
    Inscription : Mai 2013
    Messages : 49
    Points : 47
    Points
    47
    Par défaut
    Je te remercie de ta réponse, le truc c'est que en dehors de mon code, j'arrive très bien à l'afficher mon graphique ^^ Et je viens de remarquer un truc, il ne faut aucun autre affichage du type var_dump / echo / print_r sinon c'est la où ca bug ! Je trouve que c'est dommage que je ne puisse pas intégrer mon graphique sur une page classique... Doit bien y avoir un moyen et je le trouverai ! Le truc qui me dérange c'est que j'ai fais un simple c/c de mon code et ca marche très bien (seul arrayCritere est mis en brut, avec la même valeur que dans le code complet...) Comme je débute totalement ça doit être un truc ou une ligne que j'ai mis qui doit tout faire planter :/
    Ce code marche parfaitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    <?php 
    include ("C:\XXX\jpgraph-3.5.0b1\src\jpgraph.php");
    include ("C:\XXX\jpgraph-3.5.0b1\src\jpgraph_pie.php");
    include ("C:\XXX\jpgraph-3.5.0b1\src\jpgraph_pie3d.php");				
     
    $arrayAll = array();
    $arrayCritere = array();
     
    $arrayAll[] = 2;
    $arrayCritere[] = 10;
     
    //var_dump($arrayAll);				
    //var_dump($arrayCritere);				
     
    				// *****************************************
    				// Création du graphique
    				// *****************************************
     
    				// On spécifie la largeur et la hauteur du graph
    				$graph = new PieGraph(800,400);
     
    				// Ajouter une ombre au conteneur
    				$graph->SetShadow();
     
    				// Donner un titre
    				$graph->title->Set("Si ca marche je saute de joie !");
     
    				// Quelle police et quel style pour le titre
    				// Prototype: function SetFont($aFamily,$aStyle=FS_NORMAL,$aSize=10)
    				// 1. famille
    				// 2. style
    				// 3. taille
    				$graph->title->SetFont(FF_GEORGIA,FS_BOLD, 12);
     
    				// Créer un camembert 
    				$pie = new PiePlot3D($arrayAll);
     
    				// Quelle partie se détache du reste
    				$pie->ExplodeSlice(12);
     
    				// Spécifier des couleurs personnalisées... #FF0000 ok
    				$pie->SetSliceColors(array('red', 'blue', 'green'));
     
    				// Légendes qui accompagnent le graphique, ici chaque année avec sa couleur
    				$pie->SetLegends($arrayCritere);
     
    				// Position du graphique (0.5=centré)
    				$pie->SetCenter(0.5);
     
    				// Type de valeur (pourcentage ou valeurs)
    				$pie->SetValueType(PIE_VALUE_ABS);
     
    				// Personnalisation des étiquettes pour chaque partie
    				$pie->value->SetFormat('%d Youpi');
     
    				// Personnaliser la police et couleur des étiquettes
    				$pie->value->SetFont(FF_ARIAL,FS_NORMAL, 9);
    				$pie->value->SetColor('blue');
     
    				// ajouter le graphique PIE3D au conteneur 
    				$graph->Add($pie);
     
    				// Provoquer l'affichage
    				$graph->Stroke();
    ?>
    Je continue de chercher en même temps, bien evidemment, peut-être qu'a force d'acharnement php aura pitié de moi

    EDIT : J'ai trouvé pourquoi mon code plante.... C'est mon include entete.php qui fait planter, code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
            <title>TEST</title>
          	 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
     </head>
     <body>
    Pourrait on me dire pourquoi c'est ca qui fait tout planter ? Comment pourrais-je corriger ca en gardant mon entete ?

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2010
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 144
    Points : 241
    Points
    241
    Par défaut
    Je ne sais pas comment fonctionne JpGraph avec PHP mais j'image qu'il utilise la lib GD pour générer une image au format JPEG/PNG/GIF.
    Si c'est bien le cas alors tu ne peux pas spécifier de code HTML, ni même un "echo 'mon texte';" dans le fichier qui génère ton graphique, l'image serait alors invalide, d'où ton erreur.

    Il faut mettre le code de génération du graph dans un fichier à part, mon_graph.php par exemple, et ensuite inclure cette image dans la page souhaité en utilisant le code html <img src="mon_graph.php" />

  5. #5
    Membre du Club
    Homme Profil pro
    Etudiant(IUT info)/Stagiaire
    Inscrit en
    Mai 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant(IUT info)/Stagiaire

    Informations forums :
    Inscription : Mai 2013
    Messages : 49
    Points : 47
    Points
    47
    Par défaut
    Je te remercie de ta réponse ^^
    Mais elle est un peu tard
    J'ai réussi a trouver la syntaxe à faire pour avoir une syntaxe propre et qui marche. Mais sinon tu étais dans le juste à 100%
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $fichierPie = Date("d-m-Y H-i-s");
    $fichierPie .="_Pie.png"; 
    $graph->Stroke($fichierPie);
    if (isset($fichierPie))
    {
    	echo '<img src="./'.$fichierPie.'"/>';
    }
    Ce bout de code permet de générer un fichier par "refresh" du navigateur. Car si on re-ecris sur le même non de fichier.... Et bah sa plante ^^ (sinon ce ne serait pas drôle)

    J'ai pris l'habitude d'ouvrir des topics assez tôt quand je commence à voir un truc qui plante, ainsi, cela me permet, si je me retrouve coincé d'avoir plus de chance d'être débloqué sur le forum ! Je te remercie de ta contribution en tout cas !

    Je pense que je vais le fermer, car je vais commencer à vraiment m'éloigneer du sujet de base U_u Et j'ai pas envie de faire plancher des gens sur mon problème pour rien. Je suis encore loin de maitriser JPgraph, mais je commence a comprendre comment faire des choses simples avec

    Merci à tous !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JpGraph] il me manque la librairie GD
    Par micknic dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 26/12/2005, 21h46
  2. [PHP] XML et jpGraph
    Par icecube216 dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 16/12/2005, 15h15
  3. [JpGraph] Erreur JPGraph
    Par xopos dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 18/11/2005, 13h11
  4. [JpGraph] jpgraph et lycos
    Par kidu dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 12/09/2005, 14h26
  5. [JpGraph] code barre à la volée?
    Par toan dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 11/10/2004, 10h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo