Pourquoi mon jpgraph n'affiche rien

Résolu
msi79 - 30 janv. 2014 à 20:33
 msi79 - 1 févr. 2014 à 10:30
bonjour je dois faire des histogrammes et je bute depuis .
rien ne s'affiche quand j'exécute le code.
j'ai une table victimes(id,nom,sexe)
1. j'ai télécharge et décompressé JPGRAPH dans mon dossier www
2. mon fichier histog_global se trouve dans le dossier pages qui lui se trouve dans le dossier DVG
.
je me di que c'est sans doute un problème de chemin d'accès.
merci de bien vouloir m'aider

voici mon code :
<?php
require_once("../jpgraph/src/nclude_path_inc.php");
include ("../jpgraph/src/jpgraph.php");
include ("../jpgraph/src/jpgraph_bar.php");

//define('MYSQL_HOST', 'localhost');
//define('MYSQL_USER', 'root');
//define('MYSQL_PASS', '');
//define('MYSQL_DATABASE', 'bdd_victimes_de_guerre');

$tableauAnnees = array();
$tableauNombreVentes = array();

// **********************************************
// Extraction des données dans la base de données
// *************************************************

//$sql = <<<EOF
//SELECT
//sexeV ,
//COUNT(matricule) AS NBR_VENTES
//FROM 'victime'
//GROUP BY sexeV
//EOF;

//$mysqlCnx = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Pb de connxion mysql');

//@mysql_select_db(MYSQL_DATABASE) or die('Pb de sélection de la base');

//$mysqlQuery = @mysql_query($sql, $mysqlCnx) or die('Pb de requête');
$q = mysql_query(" SELECT sexeV , COUNT(matricule) AS NBR_VENTES FROM victime GROUP BY sexeV") or die(mysql_error());
while ($row = mysql_fetch_array($q)) {
$tableauAnnees[] = 'sexe ' . $row['sexeV'];
$tableauNombreVentes[] = $row['NBR_VENTES'];
}

/*
printf('<pre>%s</pre>', print_r($tableauAnnees,1));
printf('<pre>%s</pre>', print_r($tableauNombreVentes,1));
*/

// *******************
// Création du graphique
// *******************


// Construction du conteneur
// Spécification largeur et hauteur
$graph = new Graph(400,250);

// Réprésentation linéaire
$graph->SetScale("textlin");

// Ajouter une ombre au conteneur
$graph->SetShadow();

// Fixer les marges
$graph->img->SetMargin(40,30,25,40);

// Création du graphique histogramme
$bplot = new BarPlot($tableauNombreVentes);

// Spécification des couleurs des barres
$bplot->SetFillColor(array('red', 'green', 'blue'));
// Une ombre pour chaque barre
$bplot->SetShadow();

// Afficher les valeurs pour chaque barre
$bplot->value->Show();
// Fixer l'aspect de la police
$bplot->value->SetFont(FF_ARIAL,FS_NORMAL,9);
// Modifier le rendu de chaque valeur
$bplot->value->SetFormat('%d sexe');

// Ajouter les barres au conteneur
$graph->Add($bplot);

// Le titre
$graph->title->Set("Graphique 'HISTOGRAMME' : sexe");
$graph->title->SetFont(FF_FONT1,FS_BOLD);

// Titre pour l'axe horizontal(axe x) et vertical (axe y)
$graph->xaxis->title->Set("sexe");
$graph->yaxis->title->Set("Nombre de sexe");

$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);

// Légende pour l'axe horizontal
$graph->xaxis->SetTickLabels($tableauAnnees);

// Afficher le graphique
$graph->Stroke();

?>

10 réponses

jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
30 janv. 2014 à 23:15
Bonjour,

Ton dossier Jpgraph se trouvant à la racine ( www),
tu peux faire tes includes en utilisant : $_SERVER['DOCUMENT_ROOT']

require_once($_SERVER['DOCUMENT_ROOT']."/jpgraph/src/nclude_path_inc.php");
include ($_SERVER['DOCUMENT_ROOT']."/jpgraph/src/jpgraph.php");
include ($_SERVER['DOCUMENT_ROOT']."/jpgraph/src/jpgraph_bar.php");



1
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
Modifié par jordane45 le 31/01/2014 à 10:14

ça affiche rien mais plutôt un texte disant :
l'image<<http://localhost/DVG/index.php?page=histo>>ne peut etre affiché car elle contient des erreurs


DOnc... plus rien à voir avec ton souci d'origine...
Il semble donc que le code qui génère ton graph ( donc l'image qui va contenir ton graph) ne soit pas correcte..

Déjà.. il me semble que lors de la création d'un graph tu dois lui passer deux tableaux ( les Titres ; Les valeurs).
Hors.. il me semble que tu ne lui passe qu'un seul tableau ??

$bplot = new BarPlot($tableauNombreVentes);


Si tu regarde les exemples de JpGraph tu vois que normalement tu devrais avoir un truc du genre :
$barplot = new BarPlot($ydata,$xdata)


Au cas où.. essaie de chopper un exemple basic d'utilisation de jpgraph et colle le à la place de ton code et vérifie si il fonctionne..


EDIT : En fait, tu peux n'utiliser qu'un array pour la création d'un BarPlot.. au temps pour moi..

DOnc le souci vient d'ailleurs...
Soit ton tableau ne contient pas de valeurs "correctes" soit tu peux avoir un souci de droit sur tes répertoires par exemple.

Au cas où, test le script qui se trouve ici :
http://jpgraph.net/download/manuals/chunkhtml/example_src/example19.html



Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
1
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
31 janv. 2014 à 12:02
Tu peux aussi essayer de lui spécifier un emplacement pour "sauvegarder" l'image de ton graph

//save to file
$fileName = "/tmp/graph.png";
$graph->img->Stream($fileName);

(bien sur.. il te faut un répertoire tmp à la racine de ton site).
L'avantage.. c'est que tu pourras regarder si l'image se créée bien dans ce répertoire et voir si le souci provient de l'image en elle même ou bien de la façon dont tu essayes de l'afficher.

Il te faudra aussi modifier la partie du "stroke()"
$graph->Stroke($fileName);
echo "<img src='".$fileName."' />"; 

1
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
31 janv. 2014 à 12:09
Je viens de penser à quelque chose...
Ta page PHP... elle est bien inclus dans une page HTML ?
Sinon le souci risque de venir de là...
0
oui j'ai fais ça mais ça affiche rien mais plutôt un texte disant :
l'image<<http://localhost/DVG/index.php?page=histo>>ne peut etre affiché car elle contient des erreurs
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
voici mon code . j'ai bien 2 tableaux :

$tableauAnnees = array();
$tableauNombreVentes = array();

tout le code :
<?php
//require_once("../jpgraph/src/include_path_inc.php");
include ("../jpgraph/src/jpgraph.php");
include ("../jpgraph/src/jpgraph_bar.php");


$tableauAnnees = array();
$tableauNombreVentes = array();

$q = mysql_query(" SELECT sexeV , COUNT(matricule) AS NBR_VENTES FROM victime GROUP BY sexeV") or die(mysql_error());
while ($row = mysql_fetch_array($q)) {
$tableauAnnees[] = 'sexe ' . $row['sexeV'];
$tableauNombreVentes[] = $row['NBR_VENTES'];
}


// *******************
// Création du graphique
// *******************


// Construction du conteneur
// Spécification largeur et hauteur
$graph = new Graph(400,250);

// Réprésentation linéaire
$graph->SetScale("textlin");

// Ajouter une ombre au conteneur
$graph->SetShadow();

// Fixer les marges
$graph->img->SetMargin(40,30,25,40);

// Création du graphique histogramme
$bplot = new BarPlot($tableauNombreVentes);

// Spécification des couleurs des barres
$bplot->SetFillColor(array('red', 'green', 'blue'));
// Une ombre pour chaque barre
$bplot->SetShadow();

// Afficher les valeurs pour chaque barre
$bplot->value->Show();
// Fixer l'aspect de la police
$bplot->value->SetFont(FF_ARIAL,FS_NORMAL,9);
// Modifier le rendu de chaque valeur
$bplot->value->SetFormat('%d sexe');

// Ajouter les barres au conteneur
$graph->Add($bplot);

// Le titre
$graph->title->Set("Graphique 'HISTOGRAMME' : sexe");
$graph->title->SetFont(FF_FONT1,FS_BOLD);

// Titre pour l'axe horizontal(axe x) et vertical (axe y)
$graph->xaxis->title->Set("sexe");
$graph->yaxis->title->Set("Nombre de sexe");

$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);

// Légende pour l'axe horizontal
$graph->xaxis->SetTickLabels($tableauAnnees);

// Afficher le graphique
$graph->Stroke();

?>
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
31 janv. 2014 à 10:45
Tu peux tester le fichier exemple que je t'ai mis ??
0
j'ai tester c'est la même chose qui s'affiche .
l'image<<http://localhost/DVG/index.php?page=histo>>ne peut etre affiché car elle contient des erreurs
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
31 janv. 2014 à 11:55
Si le script provenant du site même de jpgraph ne fonctionne pas... c'est que tu as un souci ailleurs.....



Essayes en collant le script (de l'exemple) directement à la racine ( dans le www) au même niveau que le rep jpgraph. et regarde si le souci persiste.

Vérifies les droits attribués à tes différents répertoires (j'ai déjà eu un souci avec une bibliothèque du même genre... mon rep contenant l'image générée avait des droits en 740 au lieu du 755).
0
a quel niveau je dois insérer cette partie dans le code
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
31 janv. 2014 à 12:20
A la place du Stroke actuel
0
non pas du tout la page PHP... elle n'est pas inclus dans une page HTML
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
Modifié par jordane45 le 31/01/2014 à 12:21
Teste comme ça.. mais si le souci persiste.. ajoute les balises html à ta page.
0
cette fois il y a une changement voici ce qui s'affiche :

Array
(
[0] => sexeF
)

Array
(
[0] => 6
)

JpGraph Error: 25107 Can't write to file "/tmp/graph.png". Check that the process running PHP has enough permission
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
31 janv. 2014 à 13:16
tu as crée ton répertoire tmp ?
A quelle endroit de ton site ? ( a la racine du www ou ailleurs ? )
As tu essayé (si tu l'as mis dans le www ) de lui mettre comme chemin :

$fileName = $_SERVER['DOCUMENT_ROOT']."/tmp/graph.png";


Est-ce que tu as vérifié les droits sur le répertoire pour voir si ils étaient bons ( met les en 777 pour tester ).
0
probleme resolu . effectivement il y avait du html dans la page. merci @jordane45.
il me reste a integrer la legende.
0
Rejoignez-nous