begin process at 2012 02 11 18:59:23
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > GRAPHIQUE EN DYNAMIQUE

GRAPHIQUE EN DYNAMIQUE


 Information sur la source

 Description

Ce code permet de créer un graphique avec les fonctions d'image dynamique de PHP. Ce code est en relation avec le code que j'ai poster il n'y a pas longtemp : http://www.phpcs.com/code.aspx?ID=35889
Ce code montre juste comment créer une image dynamiquement. Je ne me suis pas hater sur les coordonnées car ce n'est que des maths. Juste spécifier que les coordonnée de ces fonctions sont : 0,0 en haut à gauche, les absissses horizontalement et les ordonnées verticalement.

Source

  • <?php
  • // cette ligne est importante,
  • //elle dira au navigateur que la page retourne une image png
  • header ("Content-type: image/png");
  • // connection à la base de donnée et soumet de la requete
  • $db = @mysql_connect('addr_serveur','login','password');
  • @mysql_select_db("compteur",$db);
  • $query = 'SELECT * FROM cpt_page WHERE 1 ORDER BY nbr ASC';
  • $req = @mysql_query($query);
  • // prend le premier élément de la requete
  • $data = @mysql_fetch_array($req);
  • // hauteur de l'image
  • $hauteur = 200;
  • // largeur de l'image, en fonction du nombre de lignes dans la table
  • $largeur = 50+100*mysql_num_rows($req);
  • // défini le maximum (rapport proprortionnelle pour l'affichage)
  • $maxi = $data[1] + 3;
  • // créer l'image
  • $im = imagecreate($largeur,$hauteur);
  • // définie les différentes couleurs (la première est la couleur de fond)
  • $bleute = ImageColorAllocate($im, 245, 245, 255);
  • $violet = ImageColorAllocate($im, 204, 51, 255);
  • $noir = ImageColorAllocate($im, 0, 0, 0);
  • // dessine l'axe des absisses
  • ImageLine($im,5,$hauteur-20,$largeur-5,$hauteur-20,$noir);
  • // et le cadres de l'image
  • ImageRectangle($im,0,0,$largeur-1,$hauteur-1,$noir);
  • // boucle qui affiche les batonnets
  • $i=0;
  • do
  • {
  • // affiche le nom de la page en dessous de l'axe des absisses
  • ImageString($im,3,$i*100 + 20,$hauteur-20,$data[0],$noir);
  • // affiche le nombre de visites au dessus des batonnets
  • ImageString($im,3,$i*100+50,185-($data[1]*200/$maxi),$data[1],$noir);
  • // affiche les batonnets
  • ImageFilledRectangle($im,$i*100+50,200-($data[1]*200/$maxi),$i*100+60,$hauteur-20,$violet);
  • $i++;
  • }while($data = @mysql_fetch_array($req) ); // prend l'élément suivant dans la requetes
  • // affiche l'image
  • ImagePng($im);
  • ?>
<?php
   // cette ligne est importante,
   //elle dira au navigateur que la page retourne une image png
   header ("Content-type: image/png");

   // connection à la base de donnée et soumet de la requete
   $db = @mysql_connect('addr_serveur','login','password');
   @mysql_select_db("compteur",$db);
   $query = 'SELECT * FROM cpt_page WHERE 1 ORDER BY nbr ASC';
   $req = @mysql_query($query);

   // prend le premier élément de la requete
   $data = @mysql_fetch_array($req);

   // hauteur de l'image
   $hauteur = 200;
   // largeur de l'image, en fonction du nombre de lignes dans la table
   $largeur = 50+100*mysql_num_rows($req);
   // défini le maximum (rapport proprortionnelle pour l'affichage)
   $maxi = $data[1] + 3;

   // créer l'image
   $im = imagecreate($largeur,$hauteur);
   // définie les différentes couleurs (la première est la couleur de fond)
   $bleute = ImageColorAllocate($im, 245, 245, 255);
   $violet = ImageColorAllocate($im, 204, 51, 255);
   $noir = ImageColorAllocate($im, 0, 0, 0);

   // dessine l'axe des absisses
   ImageLine($im,5,$hauteur-20,$largeur-5,$hauteur-20,$noir);
   // et le cadres de l'image
   ImageRectangle($im,0,0,$largeur-1,$hauteur-1,$noir);

   // boucle qui affiche les batonnets
   $i=0;
   do
   {
      // affiche le nom de la page en dessous de l'axe des absisses
      ImageString($im,3,$i*100 + 20,$hauteur-20,$data[0],$noir);
      // affiche le nombre de visites au dessus des batonnets
      ImageString($im,3,$i*100+50,185-($data[1]*200/$maxi),$data[1],$noir);
      // affiche les batonnets
      ImageFilledRectangle($im,$i*100+50,200-($data[1]*200/$maxi),$i*100+60,$hauteur-20,$violet);
      $i++;
   }while($data = @mysql_fetch_array($req) ); // prend l'élément suivant dans la requetes

   // affiche l'image
   ImagePng($im);
?>



 Sources du même auteur

COMPTEUR PAR VISITES ET PAR PAGES

 Sources de la même categorie

Source avec Zip Source avec une capture CAMEMBERT BD par dardelphi
Source avec une capture AMÉLIORATION : CAMEMBERT par asphator
GESTION DE COULEUR par manuche
Source avec Zip NAVIGATOR (+CSSDETECTOR) par xXVoxPopuliXx
COMMENT, AVEC GD, DESSINER UN RECTANGLE TRANSPARENT PLEIN AV... par Rainbow

 Sources en rapport avec celle ci

CRÉER UNE IMAGE À PARTIR DU TEXTE par dilar
Source avec Zip Source avec une capture CAMEMBERT 2D/3D par softwareds
Source avec Zip Source avec une capture SIMPLE ANTISPAM GENERATION 1 - GENERATEUR D IMAGE VIA LA GD ... par Mastronic
Source avec une capture CREATION D'UN HISTOGRAMME IDEAL POUR LES STATISTIQUES [TITRE... par wizard512
Source avec une capture CRÉATION D'UNE IMAGE DE STATISTIQUE : LE CAMEMBERT par wizard512

Commentaires et avis

Commentaire de monoceros01 le 07/02/2006 08:15:59

Tout d'abord :
- moins de @ ... Une bonne gestion des erreurs ça fait toujours plus classe! ;)
- du mysql plus joli, ça aurait été mieux : le SELECT * est moche et le WHERE 1 aussi
- Ah! et pis ta couleur $bleute n'est pas utilisée.

Sinon, ton code n'est pas réellement utilisable tel quel. La personne qui voudra s'en servir devra rebidouiller un tier de ton script pour que ça marche chez lui.

En revanche, comme tu "montre[s] juste comment créer une image dynamiquement", ce code, avec quelques explications supplémentaires (et les corrections sus-suggérées), aurait eu une place de choix dans la catégorie "Tutoriaux" =)

Commentaire de ludovicanceaux le 07/02/2006 12:15:21

tu pe pô mettre d'apercu?????

Commentaire de dark_naruto25 le 07/02/2006 17:57:56

il faudrais que je teste si if( $req = mysql_..... ) fonctionne, et sans m'afficher l'image, ou si il faut mettre quand même le @.
Il s'agit de là une petite source qui demande qu'à être amélioré et qui trouve son utilisé avec ma source précédement poster.
La couleur bleuté est la couleur de fond, mais je me demande si j'ai vraiment besoin de mettre la variable (je pense que non).

Merci pour vos conseil, je vais amélioré tous ça

Commentaire de monoceros01 le 07/02/2006 23:56:08

Bon bon bon, eclaircissons un point :
Le @ est un opérateur qui est en soit inutile, car sa fonction est, en cas d'erreur retourné par l'expression sur laquelle il est appliqué, d'empêcher d'afficher un message expliquant le problème et éventuellement d'arrêter le script à cause de celle-ci.
Donc, cela signifie que tu considère que tes expression pourrait renvoyer des erreurs et que si cela arrivait, tu ne voudrais pas en entendre parler, espérant naïvement que le script continuerait normalement comme si de rien n'était.
Or, il est évidement que c'est inutile, car ton script affichera "L'image a afficher contient des erreurs" du fait des entêtes que tu envois dès le début.

L'idéal, est donc, comme tu mets essentiellement des @ sur des fonctions mysql, de faire quelque chose dans ce genre :
$db = mysql_connect('addr_serveur','login','password') or die(mysql_error());
mysql_select_db("compteur",$db) or die(mysql_error());
$query = 'SELECT * FROM cpt_page WHERE 1 ORDER BY nbr ASC';
$req = mysql_query($query) or die(mysql_error());

Quant aux @ devant les mysql_fetch_array() ils sont tout bonnement inutiles car si tout c'est bien passé jusque là, il ne doit pas y avoir de problème.

Sinon l'utilité de ta source dans ton code "Les Camembert 3D", à part le fait que c'est un autre type de graphique, ton code n'est pas utilisable tel quel... alors que la fonction que tu avais faite oui =).
Bref tu devrait faire une fonction dans laquelle on y entrerais les données et qui générerait le graphique

Sinon, ton header() tu devrait le mettre juste avant ImagePng() pour pouvoir voir les erreurs éventuelles correctement.

Commentaire de coucou747 le 08/02/2006 13:44:19 administrateur CS

l'art du camouflage...
$im = imagecreate($largeur,$hauteur);
ici t'as oublié de camoufler...
mettre un do pour lister les lignes d'une table n'est pas une bonne idée car si ta table est vide, il y a un bug...
Bon, et sinon, ça ne vaut pas initié...

Commentaire de dark_naruto25 le 09/02/2006 12:57:03

J'ai poster la source pour qu'on me dise ce qu'il faudrais que je change. Je début plus ou moins en mySQL et en GD. Donc je voudrais connaitre ces fonctions pour ensuite en faire une fonction plus générique.
D'ailleur comment puis-je connaitre la taille d'un tableau ? genre je passe le tableau en param d'une fonction, et je parcours chaque case jusqu'a la fin

Commentaire de monoceros01 le 09/02/2006 13:15:09

http://fr.php.net/manual/fr/function.count.php

Commentaire de coucou747 le 09/02/2006 21:21:17 administrateur CS

ou bien sizeof...
maiston code n'est toujours pas corrigé...

Commentaire de TheSin le 13/02/2006 13:58:54

genre je passe le tableau en param d'une fonction, et je parcours chaque case jusqu'a la fin

foreach ($montab as $key => $var)
{
  echo $key . ' => ' . $var . '<br />;
}

Commentaire de wizad le 13/02/2006 23:54:09

#    $db = @mysql_connect('addr_serveur','login','password');
#    @mysql_select_db("compteur",$db);

=> déja ça me gène si sur 10 lignes tu n'est pas cohérents c'est assez mal baré. Remplace ça "compteur" par ça 'compteur'.

=> Un autre étail à rajouter : en cas d'échec de la connexion sql ce serait bien de prévenir le visiteur... non?

=> Globalement je dirais qu'il faudrais une meilleur gestion des erreurs, et ne pas mettre ce code en initié (surtout que si tu débute en mysql et gd je vois pas comment tu pourrait faire un code initié. Pour ma part je mets 6/20 : c'est encourageant et ça pourrait être intérréssant par d'autre débutant si tu tenais compte de nos remarques.

Commentaire de wizad le 13/02/2006 23:55:56

petite correction de mon message :
=> Un autre détail à rajouter...

(ce serait bien de pouvoir éditer ses commentaires pour corriger les fautes ^^)

Commentaire de xavier230573 le 22/05/2007 10:04:07

corrige les erreurs car je suis débutant et ton code m'intéresse

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Inclusion d'un graphique dynamique ds une page WEB [ par cjulie24 ] CjulieHello,J'ai un p'tit souci et je suis à la recherche d'un bon samaritain !Voila, je suis en train de refaire un site et je dois inclure générer des miniatures avec gd 1.6 [ par vegetaline ] muhaha alors là c'est rigolo, un super défi pour les programmeurs fous!ok j'ai le code pour générer des miniatures grâce au php, mais ça marche qu'ave Insertion d'image dynamique [ par Licorne974 ] je souhaiterais savoir si il y a un petit script php par là !qui permettrais dans la saisie d'un formulaire d'insérer 2 photos qui se trouve sur mon d Créer une image dynamique [ par stratege78 ] Salut à tous,Débutant en phpBB et tout ce qui y touche de près ou de loin, je ne connais pas trop les possibilités que nous offre phpbb. Un membre m'a Couper le bas d'une image (GD PHP) [ par dezeque ] bonjour,j'aimerai savoir comment faire pour couper le bas d'une image ?elle fais 600X800 et j'aimerai enlver les 50 dernirers pixels du bas pour quell PB d'envoi d'images dynamiques !!! [ par MangaII ] Coucou a tous !Bon, voilà mon soucis !Qd on créé un image dynamique en php, avec imagecreate ..., on fini tjs par l'envoyer au navigateur avec imagejp lycos et library GD [ par bobbycoul ] bonjour,j'ai un compte gratuit sur lycos (multimania), et la library GD (la version 2 est installé sur leur serveurs) foire jexplique:qd je créé une i texte sur image... librairie GD ? [ par ozitoun ] Bonjour bonjour,voili voilou, je cherche à mettre une texte sur une image (jpeg).j'ai essayé les imagestring, imagechar... mais à chaque fois les exem Problème d'affichage avec la libraire GD [ par CMOIPOPO ] Salut &#224; tous,Je souhaite dessiner tout b&#234;tement un rectangle en php (je travaille en local)&nbsp;&#224; l'aide de la libraire GD. Pour cela, graphique dynamique php [ par coolboarder ] Bonjour,je&nbsp;souhaite cr&#233;er un graphique en php qui se g&#233;n&#232;re automatiquement d'apr&#232;s les donn&#233;es d'une bd.Les donn&#233;e


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,388 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales