Coucou à tous,
Je viens de d’installer jpgraph 1.17 et j’ai des soucis lorsque j’essaie d’utiliser un graph avec des valeurs issu de ma BDD.
voici mon script: il marche si les valeurs sont statiques et la réquête me donne les résultats voulus.
le pb c’est que j’ai une image avec une croix. J’ai regardé sur le forum mais j’ai pas trouvé mon sésam alors si qql est spécialiste.
Merci
<?php
require ("../lib/Util.php"); //Appel des fonctions
$connexion = Connexion (NOM, PASSE, BASE, SERVEUR);
for ($i=1;$i<7;$i++)
{
$sumsuivicde = @mysql_query("SELECT SUM(s.qtesuivicde) AS nb
FROM suivicde s, familleproduit f, pays p
Where s.familleproduitid=f.idfamilleproduit
And f.groupe='Appareil'
And s.sectcomid='1'
And s.paysid=p.idpays
And MONTH(s.datesuivicde)='$i'
And YEAR(s.datesuivicde)='2005' ");
$sectcom=mysql_fetch_assoc($sumsuivicde);
$nbsectcom[$i]=$sectcom['nb']; // Le nombre est là
if ($nbsectcom[$i]==NULL) {$nbsectcom[$i]='0';}
}
include ("../lib/jpgraph/src/jpgraph.php");
include ("../lib/jpgraph/src/jpgraph_radar.php");
$titles=array('Planning','Quality','Time','RR','CR','DR');
//$data=array(18, 40, 70, 90, 42,66);
$data=array($nbsectcom[1], $nbsectcom[2],$nbsectcom[3],$nbsectcom[4],$nbsectcom[5],$nbsectcom[6]);
$graph2 = new RadarGraph (300,280,"auto");
$graph2->title->Set("Radar with marks");
$graph2->title->SetFont(FF_VERDANA,FS_NORMAL,12);
$graph2->SetTitles($titles);
$graph2->SetCenter(0.5,0.55);
$graph2->HideTickMarks();
$graph2->SetColor('lightgreen@0.7');
$graph2->axis->SetColor('darkgray');
$graph2->grid->SetColor('darkgray');
$graph2->grid->Show();
$graph2->axis->title->SetFont(FF_ARIAL,FS_NORMAL,12);
$graph2->axis->title->SetMargin(5);
$graph2->SetGridDepth(DEPTH_BACK);
$graph2->SetSize(0.6);
$plot = new RadarPlot($data);
$plot->SetColor('red@0.2');
$plot->SetLineWeight(1);
$plot->SetFillColor('red@0.7');
$plot->mark->SetType(MARK_IMG_SBALL,'red');
$graph2->Add($plot);
$graph2->Stroke();
?>
déjà commence par afficher directement l’image dans ton navigateur, tu auras peut etre un message d’erreur
sinon, enlève le @ devant mysql_query
Es-tu certain de ta requete?
essaye dans un premier temps de faire un simple affichage des résutltats des requetes pour voir si tu obtiens bien le résultat attendu
Désolé pour le temps de ma réponse mais le virus de la grippe est en train de m’achever. Pour l’affichage de l’image, je passe par une page tiers avec la balise img. Quand à la requête, elle fonctionne car si je demande un echo des résultats, j’obtient bien ce que je veux. Je vais tester sans le @
Même résultat sans le @, j’obtient tjs une image avec une croix. Je ne comprend pas pourquoi. Lorsque je demande l’enregistrement fichier de graphique dans stroke(), cela fonctionne pourtant.
j’ai déja fait le test, que je passe par un fichier tiers ou en direct sur la page php, j’obtient tjs une croix mais dès que je retire ma requête et que je laisse des valeurs statiques, cela fonctionne.
Ma requête fonctionne, le script jpgrah fonctionne mais dès que j’associe les deux: plus rien
lorsque je fait un print_r, j’obtient bien ma valeur. Ensuite, tout le code correspond à un exemple de jpgraph. Je remplace simplement la ligne de data par mes valeurs. Il devrait m’afficher 6 fois ma valeur.
J’ajoute que si je laisse le script de cette manière, cela ne fonctionne pas non plus, le script marche dès que je n’ai plus mon code:
<?php
/*require ("../lib/Util.php"); //Appel des fonctions
$connexion = Connexion (NOM, PASSE, BASE, SERVEUR);
$sumsuivicde = mysql_query("SELECT SUM(s.qtesuivicde) AS nb
FROM suivicde s, familleproduit f, pays p
Where s.familleproduitid=f.idfamilleproduit
And f.groupe='Appareil'
And s.sectcomid='1'
And s.paysid=p.idpays
And MONTH(s.datesuivicde)='1'
And YEAR(s.datesuivicde)='2005' ");
$sectcom=mysql_fetch_assoc($sumsuivicde);
$nbsectcom=$sectcom['nb']; // Le nombre est là
print_r($nbsectcom);*/
include ("../lib/jpgraph/src/jpgraph.php");
include ("../lib/jpgraph/src/jpgraph_radar.php");
$titles=array('Planning','Quality','Time','RR','CR','DR');
$data=array(18,40,70,90,42,66);
//$data=array($nbsectcom, $nbsectcom, $nbsectcom, $nbsectcom, $nbsectcom,$nbsectcom);
$graph = new RadarGraph (300,280,"auto");
$graph->title->Set("Radar with marks");
$graph->title->SetFont(FF_VERDANA,FS_NORMAL,12);
$graph->SetTitles($titles);
$graph->SetCenter(0.5,0.55);
$graph->HideTickMarks();
$graph->SetColor('lightgreen@0.7');
$graph->axis->SetColor('darkgray');
$graph->grid->SetColor('darkgray');
$graph->grid->Show();
$graph->axis->title->SetFont(FF_ARIAL,FS_NORMAL,12);
$graph->axis->title->SetMargin(5);
$graph->SetGridDepth(DEPTH_BACK);
$graph->SetSize(0.6);
$plot = new RadarPlot($data);
$plot->SetColor('red@0.2');
$plot->SetLineWeight(1);
$plot->SetFillColor('red@0.7');
$plot->mark->SetType(MARK_IMG_SBALL,'red');
$graph->Add($plot);
$graph->Stroke();
?>
<?php
require ("../lib/Util.php"); //Appel des fonctions
$connexion = Connexion (NOM, PASSE, BASE, SERVEUR);
for ($i=1;$i<7;$i++)
{
$sumsuivicde = @mysql_query("SELECT SUM(s.qtesuivicde) AS nb
FROM suivicde s, familleproduit f, pays p
Where s.familleproduitid=f.idfamilleproduit
And f.groupe='Appareil'
And s.sectcomid='1'
And s.paysid=p.idpays
And MONTH(s.datesuivicde)='$i'
And YEAR(s.datesuivicde)='2005' ");
$sectcom=mysql_fetch_assoc($sumsuivicde);
$nbsectcom[$i]=$sectcom['nb']; // Le nombre est là
if ($nbsectcom[$i]==NULL) {$nbsectcom[$i]='0';}
}
print_r($nbsectcom);
?>
[/cpp]
qu’est-ce qui est affiché sur la page?
ps: je pense que la requete pourrait être optimisée pour ne pas avoir a être dans une boucle (en utilisant un GROUP BY), mais ca j’en suis pas sûr
Bref, mes derniers essais donne cela: j’arrive à créer un fichier image avec mon graphique. Ce qui m’embête, c’est de ne pas pouvoir appeler mon graphe directement avec mais d’avoir une étape intermédiaire pour créer le graphe, puis de le visualiser.
C’est pb sont peut être du à ma config dans jpgraph mais je ne vois pas où. Je viens d’activer le cache et rien ne change. oh désespoire…
J’ai trouvé une solution et cela marche. Je doit avoir un pb dans une de mes fonction ou qql chose qui dérange jpgraph. En fait je change le début par:
En fait j’utilise direction la prog de connexion plutot que d’utiliser ma fonction et cela marche.
juste pour le fun, voici ma fonction de connexion qui ne fait pas fonctionner jpgraph:
function Connexion ($pNom, $pMotPasse, $pBase, $pServeur)
{
// Connexion au serveur
$connexion = mysql_pconnect ($pServeur, $pNom, $pMotPasse);
if (!$connexion)
{
echo “Désolé, connexion au serveur $pServeur impossible\n”;
exit;
}
// Connexion à la base
if (!mysql_select_db ($pBase, $connexion))
{
echo “Désolé, accès à la base $pBase impossible\n”;
echo "Message de MySQL : " . mysql_error($connexion);
exit;
}
// On renvoie la variable de connexion
return $connexion;
} // Fin de la fonction
} // Fin du test sur $FichierConnexion