Votre question

Création d'un graphe avec php

Tags :
  • Im
  • Programmation
Dernière réponse : dans Programmation
24 Janvier 2011 16:49:00

Bonjour,
je voulais créer un graphe avec php à partir des valeurs de la base de données.

D'abord j'ai crée un graphe qui m'affiche des valeurs statiques sans se connecter à la base et ça a marché.
voici le code:
  1. <?php
  2. $visites = array(138, 254, 381, 652, 896, 720, 140, 556, 663, 331, 407, 768);
  3.  
  4. header ("Content-type: image/png");
  5. $largeurImage = 400;
  6. $hauteurImage = 300;
  7. $im = ImageCreate ($largeurImage, $hauteurImage)
  8. or die ("Erreur lors de la création de l'image");
  9. $blanc = ImageColorAllocate ($im, 255, 255, 255);
  10. $noir = ImageColorAllocate ($im, 0, 0, 0);
  11. $bleu = ImageColorAllocate ($im, 0, 0, 255);
  12.  
  13. ImageLine ($im, 10, $hauteurImage-10, $largeurImage-10, $hauteurImage-10, $noir);
  14. for ($mois=1; $mois<=12; $mois++) {
  15. ImageString ($im, 0, $mois*30, $hauteurImage-10, $mois, $noir);
  16. }
  17.  
  18. ImageLine ($im, 10, 10, 10, $hauteurImage-10, $noir);
  19. $visitesMax = 1000;
  20.  
  21. for ($mois=1; $mois<=12; $mois++) {
  22. $hauteurImageRectangle = round(($visites[$mois-1]*$hauteurImage)/$visitesMax);
  23. ImageFilledRectangle ($im, $mois*30-7, $hauteurImage-$hauteurImageRectangle, $mois*30+7, $hauteurImage-10, $bleu);
  24. ImageString ($im, 0, $mois*30-7, $hauteurImage-$hauteurImageRectangle-10, $visites[$mois-1], $noir);
  25. }
  26.  
  27. ImagePng ($im);
  28.  
  29. ?>


mais lorsque j'essaye d'avoir des valeurs de la base ça marche pas:
  1. <?php
  2. $cnx=mysql_connect("localhost","root","")or die('Impossible de connecter');
  3. mysql_select_db("fax",$cnx) or die('Impossible de sélectioner la bdd');
  4. session_start();
  5. $retour = mysql_query ("SELECT * FROM donnees " );
  6. $i=0;
  7. while ($donnees = mysql_fetch_array($retour)or die(mysql_error()))
  8. {
  9. $visites['i'] = $donnees['valeur'];
  10. $i++;
  11. }
  12.  
  13. header ("Content-type: image/png");
  14. $largeurImage = 400;
  15. $hauteurImage = 300;
  16. $im = ImageCreate ($largeurImage, $hauteurImage)
  17. or die ("Erreur lors de la création de l'image");
  18. $blanc = ImageColorAllocate ($im, 255, 255, 255);
  19. $noir = ImageColorAllocate ($im, 0, 0, 0);
  20. $bleu = ImageColorAllocate ($im, 0, 0, 255);
  21.  
  22.  
  23. ImageLine ($im, 10, $hauteurImage-10, $largeurImage-10, $hauteurImage-10, $noir);
  24. for ($mois=1; $mois<=12; $mois++) {
  25. ImageString ($im, 0, $mois*30, $hauteurImage-10, $mois, $noir);
  26. }
  27.  
  28. ImageLine ($im, 10, 10, 10, $hauteurImage-10, $noir);
  29.  
  30. $visitesMax = 1000;
  31.  
  32. for ($mois=1; $mois<=12; $mois++) {
  33. $hauteurImageRectangle = round(($visites[$mois-1]*$hauteurImage)/$visitesMax);
  34. ImageFilledRectangle ($im, $mois*30-7, $hauteurImage-$hauteurImageRectangle, $mois*30+7, $hauteurImage-10, $bleu);
  35. ImageString ($im, 0, $mois*30-7, $hauteurImage-$hauteurImageRectangle-10, $visites[$mois-1], $noir);
  36. }
  37.  
  38. ImagePng ($im);
  39. mysql_close();
  40. ?>


je me demande c quoi le problème dans le second code.
merci pour votre aide

Autres pages sur : creation graphe php

a c 145 L Programmation
24 Janvier 2011 17:11:04

A mon avis, tu as un souci sur:
  1. $i = 0;
  2. while ($donnees = mysql_fetch_array($retour)or die(mysql_error()))
  3. {
  4. $visites['i'] = $donnees['valeur'];
  5. $i++;
  6. }

Il faut mettre:
  1. $visites[$i] = $donnees['valeur'];

Et pour faire plus propre:
  1. while ($donnees = mysql_fetch_array($retour)or die(mysql_error()))
  2. {
  3. $visites[] = $donnees['valeur'];
  4. }


Ensuite, que contient exactement ta table donnees ? Il y a bien un champ valeur ?
m
0
l
25 Janvier 2011 08:44:24

merci pour ta réponse, j'ai essayé ta solution mais ça marche pas.
Oui la table contient un champ valeur.
J'ai essayé de faire un echo juste après la boucle while mais il m'a rien affiché donc le problème ça vient de cette boucle.
m
0
l
Contenus similaires
a c 145 L Programmation
25 Janvier 2011 08:48:09

Tu as fait un echo de quoi exactement ?
Et est-ce que $visitesMax n'est pas un peu trop élevé ?

Je te conseille de faire un var_dump($visites) après le while, pour savoir exactement ce que contient ta variable.
m
0
l
25 Janvier 2011 08:55:46

ça donne rien.
le problème ce qu'il n'exécute rien après la boucle while
m
0
l
a c 145 L Programmation
25 Janvier 2011 08:59:40

A mon avis, tu n'affiches pas les erreurs, ce qui n'aide pas à débuger.

Donc, tout d'abord, au début de ton code, mets:
  1. ini_set('display_errors', 1);
  2. ini_set('error-reporting', E_ALL);


Et dans ton while, essaye de supprimer le or die(mysql_error())
m
0
l
25 Janvier 2011 09:05:34

oui merci beaucoup pour ton aide, le problème est réglé lorsque j'ai supprimé le or die(mysql_error()).

merci
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS