JpGraph et MySQL [resolu] - PHP - Programmation
Marsh Posté le 18-09-2007 à 10:49:49
Je crois que c'est parce que ton objet $line est écrasé en mémoire à chaque tour de boucle (bien que t'aies fait un add()). J'ai eu le même pb. J'ai remplacé $graph->Add($line); par $ArrayLines[] = $line;
Et pour afficher :
foreach($ArrayLines as $i => $Currentline) {
$graph->Add($Currentline);
}
C'est à insérer, par ex, avant //legend des X
ps : y'a Artishow comme lib graphique pour php qui fait une bonne partie de ce que fait JPGraph, sauf que celle-ci est GPL
Marsh Posté le 18-09-2007 à 20:30:17
Merci bien pour ton aide ... je test !
Pour Artishow, j'ai tenté la bascule... mais je trouve la doc tres limite, toutes les fonctions y sont, mais c'est tout.
Comme chacun sait, rien de tel qu'un bon exemple et la dessus JPgraph est fortich !
dans l'urgence, je reste là-dessus, mais promis, je basculerai
Marsh Posté le 18-09-2007 à 20:44:10
Bon le résultat est le même ... ça ne marche tjrs pas ...Bizarre !
de plus l'affichage du tableau donne bien :
Code :
|
voici le code modifié avec tes conseils
Code :
|
je suis presque sur que cela à fonctionner un temps, j'ai du mettre à jour depuis
un id ?
Marsh Posté le 18-09-2007 à 21:04:26
la doc pour $graph->Add() dit ça :
Code :
|
ça veut dire quoi en fait ?
je sais pas pourquoi, mais je sent que le problème vient de là
Marsh Posté le 19-09-2007 à 09:05:00
J'avais un doute sur ma méthode. Donc faut remplacer :
$line = new LinePlot($val_pts);
par $ArrayLines[$i] = new LinePlot($val_pts);
-> dans ta boucle, oublies pas $i++;
Faut aussi virer $ArrayLines[] = $line; et remplacer tous les $line par $ArrayLines[$i]
puis remplacer
foreach($ArrayLines as $i => $Currentline) {
$graph->Add($Currentline);
}
foreach($ArrayLines as $i => $Currentline) {
$graph->Add($ArrayLines[$i]);
}
Ca devrait le faire, je pense.
Marsh Posté le 19-09-2007 à 10:30:14
ParMesSoins a écrit : la doc pour $graph->Add() dit ça :
|
Ca veut dire en gros que la fonction "add" ne fait pas une copie de l'objet passé en paramètre mais crée un pointeur sur cet objet. Du coup si tu modifies cet objet (ce que fait le "foreach" ) tu modifies celui que $graph connait.
En résumé, au départ tu t'embêtais à enregistrer toute une série de pointeur qui désignaient tous la même chose et tu te retrouvais donc avec toute une série d'éléments parfaitement identique puisque étant le même élément.
Marsh Posté le 19-09-2007 à 16:45:07
Merci, ça marche nickel !
par contre, le principe ne me plait gère !
c'est beaucoup plus simple avec Artishow !
je vais m'y mettre !
Merci à vous
pour ceux que ça peut depanner, voici le code correct :
Code :
|
Marsh Posté le 20-09-2007 à 08:50:24
c'est entre autre pour ça que j'ai changé dans une appli intranet (passage de jpgraph à artishow) et aussi parce que c'est GPL.
Par contre, attention, artishow ne gère pas les histogrammes empilés (enfin, pas dans la version qui date d'1 an, j'ai pas regardé depuis). Mais c'est assez facile de les émuler : en fait, il suffit, pour chaque histo de cumuler les effectifs et de dessiner le plus grand histo en 1er et le plus petit en dernier.
Ex: t'as 2 séries de valeurs
+ Val1 + Val2
T1 | 3 | 2
T2 | 1 | 7
T3 | 4 | 4
Tx est en abscisse. Pour faire un histo empilé où les valeurs de Val1 sont en bas et celles de Val2 en haut, tu recalcules Val2 = Val1 + Val2 puis tu dessines le nouveau Val2 en premier puis par-dessus, Val1 et le tour est joué
La technique marche bien entendu avec 3 valeurs. Là, tu fais
Val3 = Val1 + Val2 + Val3
Val2 = Val1 + Val2
Marsh Posté le 22-09-2007 à 17:12:55
J'avais fait un test et ça marchait bien coté code, c'est plus coté apparence que ça ne me plaisait pas ...
j'y retourne et mettrai mon code ici pour un résultat équivalent à celui ci-dessus !
Shuusss !
Marsh Posté le 17-09-2007 à 19:40:50
Bonjour,
j'ai un souci avec un script qui génère un graphique via JPgraph
Ce script fonctionne, mais il affiche seulement la dernière ligne de valeurs,
alors que chaque ligne est créé dans la boucle
voici le script :
Message édité par ParMesSoins le 19-09-2007 à 16:47:32