[RESOLU] Pourquoi mon jpgraph n'affiche rien

Eléphant du PHP | 162 Messages

30 janv. 2014, 21:41

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();

?>

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

30 janv. 2014, 23:10

salut,

as tu des erreurs ?
perso j'ai testé ton code qui est fonctionnel (bon j'ai changé de mysql pour mysqli et mes identifiant de base mais c'est tout).

et le require_once ne sert a rien le fichier nclude_path_inc.php n'existe pas dans l'archive de jpgraph (en tous cas pas dans la mienne).

ensuite as tu regardé le log de php ou apache ?
est ce que ton niveau de report d'erreur est bien à E_ALL (obligatoire en dev on ne le rappel jamais assez) etc etc.

en dehors de cela ton code est fonctionnel.

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

Eléphant du PHP | 162 Messages

31 janv. 2014, 00:23

voici ce que ça met :
l'image <<http://localhost/DVG/index.php?page=histogr>>ne peut etre affiché car elle affiche des erreurs

Eléphant du PHP | 162 Messages

31 janv. 2014, 09:57

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

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

31 janv. 2014, 16:29

récupère le contenu de l'image et regarde ave un éditeur de texte (genre notepad++) ce qu'il y a dans l'image je pense que tu y trouvera une erreur php ;)

(clic droit enregistrer sous par exemple).
sion envoie dans un fichier (regarde les différentes option de jpgraph pour cela).


Dernière chose, l'utilisation d'un debugger te faciliterais largement la vie (par exemple eclipse (ou autre) + xdebug fonctionnent à merveille, c'est gratuit et t'éviter tous un tas de soucis ;) ).



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

Eléphant du PHP | 162 Messages

31 janv. 2014, 20:04

merci @moogli . je sai pas trop comment m'y prendre pour executer toute tes solutions .
mais deja 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.

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

31 janv. 2014, 22:54

de ce que je vois tu as affiche des choses et en plus tu as mis un emplacement foireux pour le fichier de destination :)

Tu n'aurais pas ces lignes de décommentés des fois ?
printf('<pre>%s</pre>', print_r($tableauAnnees,1));
printf('<pre>%s</pre>', print_r($tableauNombreVentes,1));
si c'est le cas c'est ce qui corrompt ton image ;)


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

Eléphant du PHP | 162 Messages

01 févr. 2014, 11:27

probleme resolu . effectivement il y avait du html dans la page. merci @moogli .
il me reste a integrer la legende.