Pourquoi mon jpgraph n'affiche rien [Résolu]

- - Dernière réponse :  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();

?>
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
23639
Date d'inscription
mercredi 22 octobre 2003
Statut
Contributeur
Dernière intervention
17 décembre 2018
1
Merci
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");



Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 96 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jordane45
Messages postés
23639
Date d'inscription
mercredi 22 octobre 2003
Statut
Contributeur
Dernière intervention
17 décembre 2018
1
Merci

ç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

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 96 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jordane45
Messages postés
23639
Date d'inscription
mercredi 22 octobre 2003
Statut
Contributeur
Dernière intervention
17 décembre 2018
1
Merci
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."' />"; 

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 96 internautes nous ont dit merci ce mois-ci

jordane45
Messages postés
23639
Date d'inscription
mercredi 22 octobre 2003
Statut
Contributeur
Dernière intervention
17 décembre 2018
-
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à...
Commenter la réponse de jordane45
0
Merci
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
Commenter la réponse de msi79
0
Merci
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();

?>
jordane45
Messages postés
23639
Date d'inscription
mercredi 22 octobre 2003
Statut
Contributeur
Dernière intervention
17 décembre 2018
-
Tu peux tester le fichier exemple que je t'ai mis ??
Commenter la réponse de msi79
0
Merci
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
jordane45
Messages postés
23639
Date d'inscription
mercredi 22 octobre 2003
Statut
Contributeur
Dernière intervention
17 décembre 2018
-
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).
Commenter la réponse de msi79
0
Merci
a quel niveau je dois insérer cette partie dans le code
jordane45
Messages postés
23639
Date d'inscription
mercredi 22 octobre 2003
Statut
Contributeur
Dernière intervention
17 décembre 2018
-
A la place du Stroke actuel
Commenter la réponse de msi79
0
Merci
non pas du tout la page PHP... elle n'est pas inclus dans une page HTML
jordane45
Messages postés
23639
Date d'inscription
mercredi 22 octobre 2003
Statut
Contributeur
Dernière intervention
17 décembre 2018
-
Teste comme ça.. mais si le souci persiste.. ajoute les balises html à ta page.
Commenter la réponse de msi79
0
Merci
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
jordane45
Messages postés
23639
Date d'inscription
mercredi 22 octobre 2003
Statut
Contributeur
Dernière intervention
17 décembre 2018
-
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 ).
Commenter la réponse de msi79
0
Merci
probleme resolu . effectivement il y avait du html dans la page. merci @jordane45.
il me reste a integrer la legende.
Commenter la réponse de msi79

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.