Forum Clubic

Jpgraph et valeurs dynamique [résolu]

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.

justement
dans ta page, tu obtiens une image avec uen crois rouge

ce qui signifie qu’il y a une erreur dans l’image (ou que tu n’a pas donné la bonne adresse pour l’image :ane:)

dans ta page, mettons index.html, tu dois avoir quelque chose du genre:
<img src=“image.php”…>

eh bien ce que je proposais, c’est de taper dans la barre d’adresse http://…/image.php au lieu de http://…/index.html

et là, s’il y a une erreur dans ton script php, elle sera affichée

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

commentes tout ce qui se trouve après la ligne:
include ("…/lib/jpgraph/src/jpgraph.php");

et à la place fait un
print_r($nbsectcom);

voir si tu as bien quelque chose, et si les indexes correspondent bien

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

Quand tu fais ca:
[cpp]

<?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 :stuck_out_tongue:

j’obtient bien un tableau avec mes valeurs:
Array ( [1] => 87 [2] => 24 [3] => 0 [4] => 0 [5] => 0 [6] => 0 )

question bête, comment fait on pour vérifier si le cache est activé pour jpgraph

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:

require ("…/lib/general/Constantes.php"); //Appel des constante
$connexion = mysql_pconnect (SERVEUR, NOM, PASSE);
mysql_select_db (BASE, $connexion);

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