Problème de connection Jpgraph avec MySQL - PHP - Programmation
Marsh Posté le 09-02-2016 à 13:37:37
Fait un print_r($datay1). Je ne pense pas que les données soit structurées comme tu le penses (je vois pas de boucle de récup des données)
Tu devrais commencer avec des graphs sans BD, ça complique inutilement tes essais. Quand tu maîtriseras JPGraph, tu iras cherches les valeurs en BD.
Marsh Posté le 09-02-2016 à 13:51:41
Merci de ton aide, si j'insère un print_r($datay1) dans le code, le png ne se génère plus alors qu'on prenant un script isolé de requête MySQL, j'ai bien ma concaténation de champs.
Au début, j'utilisais une boucle while mais cela ne changeait rien, je l'ai éliminé pour simplifier le code de manière à mieux comprendre où cela pouvait bugger.
J'ai bien compris le principe de JpGraph, mais c'est véritablement la connexion entre MySQL et JpGraph qui ne marche pas
l'idée étant que
Code :
|
Corresponde à
Code :
|
Marsh Posté le 09-02-2016 à 14:43:52
j'obtiens ca
array (size=2)
'img' => string '18.7,21,19.9,0' (length=14)
0 => string '18.7,21,19.9,0' (length=14)
et en insérant ligne 19
Code :
|
J'obtiens bien
string '18.7,21,19.9,0' (length=14)
Est ce que cela serait au niveau du array que ca plante ?
Merci !
Marsh Posté le 09-02-2016 à 15:03:11
si j'insère explode (",", $donnees['img']); ligne 19, cela me balance plein d'insultes , j'ai isolé [i]Warning: explode(): Empty delimiter in C:\wamp\www\worlwidesales.php on line <i>19</i></[/i], j'ai du me planter dans la formulation je pense
Mais comment je fais pour re-présenter les données dans l'array après ? puisque Jpgraph attend justement ces virgules comme séparateurs des ordonnées ?
merci !!!
Marsh Posté le 09-02-2016 à 15:13:06
Si pour toi c'est 2 lignes sont équivalentes :
Code :
|
Tu as un soucis, en tout cas pour jpgraph elle sont différentes ! ^^
En fait ce serait plus simple de récupérer un array depuis MySQL, pourquoi faire un CONCAT(...) AS img ?
Fait un SELECT Q1, Q2, Q3, Q4 et récupère tes données dans :
Code :
|
Marsh Posté le 09-02-2016 à 15:15:33
C'est bien ce qu'il me semblait :
CONCAT(Q1,',',Q2,',',Q3,',',Q4)
-> Tu confonds syntaxe PHP (pour les array) et la manière d'insérer des valeurs dans un array :
$MonArray[] = 10.3;
Ton SELECT te renvoie une unique valeur qui est une chaîne. C'est pour ça que j'étais étonné pas de voir une boucle pour lire les enregistrements en base. D'où ma suggestion que tu fasse d'avoir sans BD ton premier graph.
Marsh Posté le 09-02-2016 à 15:21:53
Oui c'est pas faux...Ca marche nickel !!! Merci !!!
Juste une dernière question, si le champ n'est pas renseigné, il me met automatiquement zero, sais tu comment on le forcer à ne pas mettre de valeur ? Dans cet exemple 2013 chute a 0 sur Q4 alors que le champ n'est pas renseigné
Merci encore!
Marsh Posté le 09-02-2016 à 15:29:10
A mes débuts j'ai aussi fait mumuse avec jpgraph, je penses que le meilleur conseil à donner à un débutant c'est de récupérer tous tes résultats venant de Mysql d'un coté et de les mettre dans un gros tableau récursif:
Code :
|
une fois que ton tableau de données et propre, tu peux générer ton jpgraph avec une boucle foreach (de memoire, si on ne précise pas de couleur il en pioche au hasard) :
Code :
|
C'est du pseudo code à la vas vite, mais ça devrait te débloquer...
Marsh Posté le 09-02-2016 à 15:45:27
C'est super sympa, je vais essayer ! Merci de ta compréhension et de ton aide !
Marsh Posté le 09-02-2016 à 17:01:22
franck2015 a écrit : Oui c'est pas faux...Ca marche nickel !!! Merci !!! |
Pas sûr qu'on puisse faire une "ligne brisée". Si t'as pas de valeur, soit tu mets 0, soit tu mets la moyenne entre la valeur précédente et suivante. Après, dans ce genre de cas, un histogramme (empilé) sera peut-être plus approprié ?
Marsh Posté le 09-02-2016 à 17:30:10
ReplyMarsh Posté le 09-02-2016 à 17:47:25
Bon, ben t'as ta réponse du coup : c'est possible et le manuel te dit comment faire.
Marsh Posté le 09-02-2016 à 12:20:10
Bonjour à tous,
Je suis nouveau, merci de m'accueillir, je m'amuse à essayer de comprendre comment marchent les graphs Jpgraph en les alimentant avec MySQL, je commence simple mais je bloque déjà...Si vous pouviez m'aider, cela serait cool !
Donc j'ai crée une petite base avec les colonnes suivantes Year et les quarters Q1,Q2,Q3,Q4
Year Q1 Q2 Q3 Q4
2013 16.2 19.4 18.2 18.6
2014 17.2 20 19.5 19
2015 18.7 21 19.9
Et le code correspondant, je suis en local, j'utilise wampserver pour la base, $datay1 correspond aux données récupérées dans la base, l'idée étant de concaténer Q1, Q2, Q3 et Q4, j'ai laissé $datay2 et $datay3 comme dans l'exemple Jpgraph pour se rendre compte de ce qu'on doit atteindre comme résultat.
Mon problème est que jpgraph n'affiche que les courbes de $data2 et $data3 mais rien pour $data1...
Si je teste la partie requête de $datay1, j'obtiens bien 18.7,21,19.9,0, je ne comprend pas ce qui se passe...
Aussi, comment fait on pour ne pas afficher 0 lorsque le champ n'est pas rempli ?
Merci par avance de votre aide !
Message édité par franck2015 le 09-02-2016 à 12:36:39