Utilisation de la librairie JpGraph PHP

[Résolu/Fermé]
Signaler
-
 Utilisateur anonyme -
Bonjour,

Je débute avec le php et je réalise un site sur lequel je dois représenter des données stockées dans une de mes tables sous forme d'un graphique.
J'ai cherché et j'ai trouvé la librairie JpGraph qui est apparemment très simple et très puissante.
J'ai récupéré un code fourni sur le site officiel :

http://jpgraph.net/features/src/show-example.php?target=new_line1.php

j'ai bien téléchargé la libraire et mes chemins pour les include sont vérifié
include ("jpgraph/jpgraph.php");
include ("jpgraph/jpgraph_line.php");

Mais quand je fais appel à ma page localhost/stats_hebdo_jpgraph.php aucun graphe ne s'affiche mais plutôt une suite de symboles et lettres.

Merci de bien vouloir m'aider ^^

2 réponses


Bonjour,

Il doit vous manquer un header pour spécifier le type mime

genre header('Content-type:image/png');

Mais c'est étonnant que JpGraph ne gère pas ça, vous avez le bout de code qui génère le graphique ?
Merci d'avoir répondu ^^

j'ai fait un copier/coller du code dans cette page http://jpgraph.net/features/src/show-example.php?target=new_line1.php à savoir :
<?php // content="text/plain; charset=utf-8"
require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_line.php');

$datay1 = array(20,15,23,15);
$datay2 = array(12,9,42,8);
$datay3 = array(5,17,32,24);

// Setup the graph
$graph = new Graph(300,250);
$graph->SetScale("textlin");

$theme_class=new UniversalTheme;

$graph->SetTheme($theme_class);
$graph->img->SetAntiAliasing(false);
$graph->title->Set('Filled Y-grid');
$graph->SetBox(false);

$graph->img->SetAntiAliasing();

$graph->yaxis->HideZeroLabel();
$graph->yaxis->HideLine(false);
$graph->yaxis->HideTicks(false,false);

$graph->xgrid->Show();
$graph->xgrid->SetLineStyle("solid");
$graph->xaxis->SetTickLabels(array('A','B','C','D'));
$graph->xgrid->SetColor('#E3E3E3');

// Create the first line
$p1 = new LinePlot($datay1);
$graph->Add($p1);
$p1->SetColor("#6495ED");
$p1->SetLegend('Line 1');

// Create the second line
$p2 = new LinePlot($datay2);
$graph->Add($p2);
$p2->SetColor("#B22222");
$p2->SetLegend('Line 2');

// Create the third line
$p3 = new LinePlot($datay3);
$graph->Add($p3);
$p3->SetColor("#FF1493");
$p3->SetLegend('Line 3');

$graph->legend->SetFrameWeight(1);

// Output line
$graph->Stroke();

?>

mais ça donne du charabia... j'ai essayé avec votre header mais ça fait la même chose.
Je suis complètement perdue dedans :(

Ca c'est louche

$theme_class=new UniversalTheme;


Ca doit générer une erreur, essayez ça au minimum:

$theme_class=new UniversalTheme();


Enlevez le header que j'ai suggéré (mauvaise idée), en fait le code de votre script doit contenir une erreur quelque part, peut-être ce que je viens de voir.
voilà ce que me donne phpinfo pour GD :
GD Support enabled
GD Version bundled (2.0.34 compatible)
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled

J'ai testé le header mais ça change rien...
Et non j'utilise pas un wamp, mon serveur est sous linux.
Merci quand meme ^^
ah j 'ai enfin réussi à afficher un graphe !!
En fait le problème vient apparemment du fait qu'il y a de l'html dans la page, dès que j'ajoute quoi que ce soit dans le code ou que je l'inclus dans un autre fichier ça affiche une erreur, vous sauriez comment résoudre ça ?
Merci :)
Utilisateur anonyme
8-), si vous m'aviez donné le code complet dès le début on aurait été plus vite...
Oui c'est normal que ça ne marchait pas.
Si vous voulez inclure votre graphique dans une page HTML, voici la marche à suivre.
- faire un fichier graph.php qui ne contient que le code PHP de génération du graphique
- faire une page HTML ou PHP qui contient a un endroit une balise du genre
<img src="graph.php"/>

L'image sera générée par graph.php

Alors pourquoi ça ne marchait pas ?

Vous envoyez du HTML au navigateur puis vous lui envoyez des headers, enfin jpgraph, hors les headers doivent toujours être envoyé avant le HTML, d'autre part vous vous retrouviez avec deux content type incompatibles dans le même flux de données, text/html et image/png.
c'est bête mais l'idée que html et php peuvent se déranger ne me venait même pas à l'esprit ^^'
ça marche super bien maintenant, vous m'avez vraiment sauvez la vie, mille merci ^^
Utilisateur anonyme
De rien, bon courage pour la suite.