Affichage d'un graphique avec jpgraph

Eléphanteau du PHP | 47 Messages

30 sept. 2008, 17:01

Bonjour,

Je tente de comprendre l'utilisation de jpgraph. J'ai pris ce code sur un site et je l'ai adapter pour ma situation (base, fichier etc.) Après avoir réglé les erreurs, le script affiche le petit carré avec un X blanc comme si l'image n'existe pas...

Je ne comprend pas cette partie...

Les graphiques d'exemple de jpgraph fonctionne donc le serveur supporte l'application...

Désoler si le code dépasse les 20 lignes mais je ne sais pas qu'elle partie de code qui est relier à mon problème.

Merci de m'aider

<?php
include ("jpgraph/src/jpgraph.php");
include ("jpgraph/src/jpgraph_line.php");

require("fonctions.php");
require("constante.php");


// connexion � la base
 
connect_bd();

$tableauAnnees = array();
$tableauNombreVentes = array();
$moisFr = array('JAN', 'FEV', 'MAR', 'AVR', 'MAI', 'JUI', 'JUL', 'AOU', 'SEP', 'OCT', 'NOV', 'DEC');

// *********************
// Production de données
// *********************

$sql_ventes_par_mois = "
SELECT  
	MONTH( 'DTHR_VENTE' ) AS MOIS, 
	COUNT( 'ID' ) AS NOMBRE_VENTE, 
	SUM( 'PRIX' ) AS PRODUIT_VENTE
FROM ventes
WHERE YEAR( 'DTHR_VENTE' ) = '2006' 
GROUP BY MOIS
";


// Initialiser le tableau à 0 pour chaques mois ***********************
$tableauVentes2006 = array(0,0,0,0,0,0,0,0,0,0,0,0); 

$mysqlQuery = @mysql_query($sql_ventes_par_mois) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

while ($row_mois = mysql_fetch_array($mysqlQuery,  MYSQL_ASSOC)) {
	$tableauVentes2006[$row_mois['MOIS']-1] = $row_mois['PRODUIT_VENTE']; 
}

// Contrôler les valeurs du tableau
// printf('<pre>%s</pre>', print_r($tableauVentes2006,1));

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

// Création du conteneur
$graph = new Graph(500,300);

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

// Mettre une image en fond
$graph->SetBackgroundImage("images/back_graph.png",BGIMG_FILLFRAME);

// Lissage sur fond blanc (évite la pixellisation)
$graph->img->SetAntiAliasing("white");

// A détailler
$graph->SetScale("textlin");

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

// Ajouter le titre du graphique
$graph->title->Set("Graphique 'courbes' : volume des ventes 2006");

// Afficher la grille de l'axe des ordonnées
$graph->ygrid->Show();
// Fixer la couleur de l'axe (bleu avec transparence : @0.7)
$graph->ygrid->SetColor('[email protected]');
// Des tirets pour les lignes
$graph->ygrid->SetLineStyle('solid');

// Afficher la grille de l'axe des abscisses
$graph->xgrid->Show();
// Fixer la couleur de l'axe (rouge avec transparence : @0.7)
$graph->xgrid->SetColor('[email protected]');
// Des tirets pour les lignes
$graph->xgrid->SetLineStyle('solid');

// Apparence de la police
$graph->title->SetFont(FF_FONT1,FS_BOLD,11);

// Créer une courbes
$courbe = new LinePlot($tableauVentes2006);

// Afficher les valeurs pour chaque point
$courbe->value->Show();

// Valeurs: Apparence de la police
$courbe->value->SetFont(FF_FONT1,FS_BOLD,9);
$courbe->value->SetFormat('%d');
$courbe->value->SetColor("red");

// Chaque point de la courbe ****
// Type de point
$courbe->mark->SetType(MARK_FILLEDCIRCLE);
// Couleur de remplissage
$courbe->mark->SetFillColor("green");
// Taille
$courbe->mark->SetWidth(5);

// Couleur de la courbe
$courbe->SetColor("blue");
$courbe->SetCenter();

// Paramétrage des axes
$graph->xaxis->title->Set("Mois");
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->SetTickLabels($moisFr);

// Ajouter la courbe au conteneur
$graph->Add($courbe);

$graph->Stroke();
?>

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

30 sept. 2008, 17:22

Fais appel à ce script en passant directement l'url dans ta barre d'adresse (utilise en fait l'url spécifiée dans ta balise img). Ca te permettra de voir s'il y a des erreurs dans ton code où si l'image s'affiche correctement :)

A mon avis ta requête SQL comporte des erreurs, tu passes des chaines de caractères en paramètres de fonctions qui attendent des noms de champs, des dates ou des nombres ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 47 Messages

30 sept. 2008, 18:17

Merci de ta réponse.

Mais ça ne fonctionne pas... Le x est juste centré au lieu d'être en haut.

voici le code que j'ai mis

Code : Tout sélectionner

<p><img alt="" src="testgraph.php" width="875" height="225" /></p>
Pour la requête, j'ai pas modifier le code d'origine. Mais je vais vérifier ça.

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

30 sept. 2008, 18:49

Euh.. non... appel ton script directement via son url http://localhost/tonsite/.../testgraph.php dans la barre d'adresse de ton navigateur, s'il y a des erreurs php, tu ne les verras que comme ça :)

Et à priori quand tu fais MONTH( 'DTHR_VENTE' ) et compagnie, si tu mets des apostrophes autour du nom de ton champ, MySQL va considérer qu'il s'agit d'une chaine et non de la valeur du champ, du coup la fonction month ne marchera pas, puisqu'il s'attend à recevoir une date ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 47 Messages

30 oct. 2008, 20:46

Bonjour,

Après une pause... Je m'y replonge...

Voici le code que je test prit dans les exemples fournis par jpgraphe.

Code : Tout sélectionner

<?php include ("../jpgraph/src/jpgraph.php"); include ("../jpgraph/src/jpgraph_line.php"); include ("../jpgraph/src/jpgraph_error.php"); $datay = array(1.23,1.9,1.6,3.1,3.4,2.8,2.1,1.9); $graph = new Graph(300,200,"auto"); $graph->img->SetMargin(40,40,40,40); $graph->img->SetAntiAliasing(); $graph->SetScale("textlin"); $graph->SetShadow(); $graph->title->Set("Example of line centered plot"); $graph->title->SetFont(FF_FONT1,FS_BOLD); // Use 20% "grace" to get slightly larger scale then min/max of // data $graph->yscale->SetGrace(20); $p1 = new LinePlot($datay); $p1->mark->SetType(MARK_FILLEDCIRCLE); $p1->mark->SetFillColor("red"); $p1->mark->SetWidth(4); $p1->SetColor("blue"); $p1->SetCenter(); $graph->Add($p1); $graph->Stroke(); ?>
Ce code est appeler via une autre page comme ça:

Code : Tout sélectionner

<p> <img alt="" src="testgraph.php" class="style1" /></p>
Le résultat est un carré blanc comme si l'image n'existe pas.

Pouvez-vous m'aider...

Undead
Invité n'ayant pas de compte PHPfrance

28 sept. 2011, 09:22

Bonjour,
pourrais tu envoyer le code CSS du style1?
Car le code est bon je l'ai testé chez moi, mais peu être que ton erreure vient de ton code CSS

Cdlt