Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CLASSE DE GRAPHIQUE À BARRES 3D


Information sur la source

Catégorie :Graphique Classé sous : graphique, barres, 3d Niveau : Initié Date de création : 04/03/2005 Date de mise à jour : 05/03/2005 16:41:49 Vu / téléchargé: 9 102 / 1 782

Note :
9,79 / 10 - par 24 personnes
9,79 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (64)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Cette classe permet de créer et d'afficher un graphique à barres 3D facilement et entièrement personnalisé. Pour l'instant vous ne pouvez qu'afficher des valeurs positives mais en général, pour des statistiques il est rare que l'on descende sous zéro. J'attend vos commentaires avec impatience.
 

Source

Conclusion

Dès que vous m'aurez donner vos commentaires sur ma source et vos idées je la mettrais à jour puisque j'attend d'avoir des signes positif avant de continuer mon boulot et ainsi pouvoir le partager avec vous de nouveau.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

05 mars 2005 16:39:57 :
Changement des " pour de ' et ajout d'une fonction permettant d'afficher les valeurs exactes des barres.
05 mars 2005 16:41:51 :
Changement de la capture

Commentaires et avis

signaler à un administrateur
Commentaire de coucou747 le 04/03/2005 20:56:27

ton programme a l'air vraiment bien.
tu utilises la 3d iso, mais pour un graph, ça passe...
sinon, pour le code, j'ai pas trop regardé, mais t'as des " partout... même quand t'as pas de variables...

signaler à un administrateur
Commentaire de Garno le 04/03/2005 21:13:17

je ne comprend pas trop ce qu'il y a de mal a avoir des " partout même sans variable ... tu peux expliquer ?

en général les ' ' c'est pour les caractères ( 'a' ) et non pour les chaînes de caractère alors que les le sont " "

signaler à un administrateur
Commentaire de coucou747 le 04/03/2005 21:29:45

non ça c'est en C++...
en php, les " servent quand tu inclue une variable dans une chaine (ça metra le contenu de la chaine au lieu de con nom...) les ' servent lorsque l'on veut afficher les noms de variables....

les ' sont bien plus rapides à exécuter...

signaler à un administrateur
Commentaire de Garno le 04/03/2005 21:32:09

Ok je croyais que c'était une règle universel qui ne s'appliquait pas seulement au C++. Merci et je vais rectifier sa dès que possible !

signaler à un administrateur
Commentaire de Garno le 04/03/2005 21:33:05

Donc il est rendu inutile de faire echo "Allo ".$Var1." !"; ??

signaler à un administrateur
Commentaire de coucou747 le 04/03/2005 21:36:31

echo "Allo $var1 1";

ou plus rapide (et donc mieux...)

echo 'Allo '.$var1.' 1';

c'est étonnant que tu programmes obj et que tu ne sache pas ça...

signaler à un administrateur
Commentaire de coucou747 le 04/03/2005 21:40:56

enfin ça reste une bonne source...

c'est OO, et on ne voit pas souvent ça sur ce forum

bien joué et bonne continuation...

signaler à un administrateur
Commentaire de Garno le 04/03/2005 21:41:51

Niveau optimisation j'y connais pas grand chose mais faut pas m'en vouloir j'ai jamais fait d'énorme script où l'optimisation est nécessaire. Bref où je veux en venir, c'est que pour moi ce n'était pas une priorité et que justement poster des sources permet de se faire rectifier ;)

signaler à un administrateur
Commentaire de Anthomicro le 04/03/2005 22:03:47

Salut,

c'est vraiment beau, j'adore ;-)

echo "Allo $var1 1";

si tu veux garder les doubles quotes tout en ayant plus rapide tu fais

echo "Allo".$var1." 1";

mais bon les simples quotes sont plus rapides.

echo 'Allo'.$var1.' 1'; est plus rapide

et echo 'Allo',$var1,' 1'; est encore plus rapide...

a ++

signaler à un administrateur
Commentaire de coucou747 le 04/03/2005 22:34:36

je vais mettre 9... c'est bien codé a part ces "... et c'est utile, et une source comme celle la n'arrives pas souvent...

signaler à un administrateur
Commentaire de Anthomicro le 04/03/2005 22:39:53

Je me suis lâché j'ai mis 10 ^^

signaler à un administrateur
Commentaire de Garno le 05/03/2005 01:33:44

Héhé merci beaucoup :)
Je sais qu'en général Anthomicro à un esprit critique assez fort :P et merci pour vos commentaires

signaler à un administrateur
Commentaire de Anthomicro le 05/03/2005 02:23:39

Bah non mais faut savoir reconnaître ce qui est bien aussi ;-)

Faut dire quand ça va pas mais aussi quand ça va, et là ça va ;-)

signaler à un administrateur
Commentaire de lumesh le 05/03/2005 08:53:22

propre, joli, bien foutu, 10/10

signaler à un administrateur
Commentaire de fuckya le 05/03/2005 10:34:11

chapeau, réellement bien fait : 10/10

dommage pour les " mais bon ^^

signaler à un administrateur
Commentaire de LuckyLuck le 05/03/2005 13:38:34

la grande classe ! 10

signaler à un administrateur
Commentaire de Kirua le 05/03/2005 13:45:16

Très bien fichu, j'apprécie bcp.
Juste une chose: tu devrais, à mon sens, indiquer au dessus ou dans chaque colonne la valeur exacte (c'est plus simple pour s'y retrouver).

signaler à un administrateur
Commentaire de Garno le 05/03/2005 16:42:28

Si je regarde la capture que j'ai fais, mettre les valeurs au dessus de chaque colonne me semble impossible. Puisqu'il y en a toujours une qui est au plus haut point du graphique donc on ne peut pas écrire au dessus. Donc j'ai décidé de mettre la valeur en dessous du nom de la barre. J'ai aussi changer les " pour des ' pour le plaisir de tous ;)

signaler à un administrateur
Commentaire de Kirua le 05/03/2005 18:21:17

ben ... tu m'étonnes là! t'as qu'à rajouter une marge! pas bien dur. écris aussi la valeur la plus haut / la plus basse dans une couleur différente

signaler à un administrateur
Commentaire de Garno le 05/03/2005 23:06:44

Désolé je suis un peu coincé dans le temps alors j'ai opté pour une solution facile mais j'ai règlé ça. Je ferais une update un petit peu plus tard qui permettra les valeurs négatives en même temps que les valeurs au dessus de chaque barres avec une couleur de barre et de texte différente pour la plus grande et la plus petit valeur.

signaler à un administrateur
Commentaire de la_pin le 06/03/2005 13:23:14

vraiment mignon, bravo !

signaler à un administrateur
Commentaire de delta2 le 07/03/2005 09:27:23

Super ... pas de problème dans l'intégration à mes pages.
Pour utiliser des valeurs issues d'une BD, j'ai remplacé :
$VData=array("nom1","nom2","nom_etc") ;
$Values=array("val1","val2","etc") ;

par
// requete sql classique puis ...
$i=0;
while ($rs = mysql_fetch_array($result)) {
$Data[$i] = $rs["nom"];
$Values[$i] = $rs["Somme"];
$i=$i+1;
}
************
Pour avoir un tableau de la largeur proportionnelle au nb de valeur, j'ai récupéré $i (voir au-dessus) et en ai défini :
$larg = $i * 60; // 60px par enregistrements

Donc :
$Graphique->SetGraphSize (250, $larg);
***********
Merci au créateur de ce script.

signaler à un administrateur
Commentaire de Missions_courtes le 07/03/2005 10:59:52

Bonjour,
Félicitation Garno.
L'installation et l'utilisations sont simples et le résultat très bon.
Michel FOUILLADE

signaler à un administrateur
Commentaire de Kirua le 07/03/2005 17:17:10

Delta2, utilise mysql_fetch_assoc dans ton cas, c'est plus rapide. Aussi, tu peux écrire $i++; plutôt que $i = $i + 1;

signaler à un administrateur
Commentaire de joebuz le 07/03/2005 21:21:01

J'ai essaye en mettant les valeurs dune BD (comme Delta2), ca ne marche pas !!!
Comment ca se fais, SVP aidez-moi !
mon script :

include("class.graphique3dbars.php");

$Graphique = new GraphiqueCommande;

$Graphique->SetBorder (1, "Noir");
$Graphique->SetGraphPadding (40, 10, 20, 20);
$Graphique->SetValueShow (true);
$larg = "500";
$Graphique->SetGraphSize (250, $larg);
$titre = "coucou !";
$Graphique->SetGraphTitle ($titre, "center", 3);
$Graphique->SetGraphFont (2, "FontNoir");
$Graphique->SetGraphDeepness(10);
$Graphique->SetGraphYScale (100);
$Graphique->SetBarsColor ("Mauve", "Noir");

$sql = "SELECT a,b FROM table";
$req = mysql_query($sql) or die('Erreur SQL !'. $sql .mysql_error());
$i =0;
while($rs = mysql_fetch_assoc($req)){
$Data[$i] = $rs['b'];
$Values[$i] = $rs['a'];
$i = $i++;}

$Graphique->SetGraphData ($Values[$i], $Data[$i]);
$Graphique->DrawGraphArea ("temp");

signaler à un administrateur
Commentaire de Garno le 07/03/2005 21:38:27

$Graphique->SetGraphData ($Values[$i], $Data[$i]);

à remplacer par

$Graphique->SetGraphData($Values, $Data);

sinon tu envois au graphique seulement 1 valeur qui est $Data[$i] et qui de plus est vide. Il faut envoyer le tableau complet en enlevant le [$i].

signaler à un administrateur
Commentaire de joebuz le 07/03/2005 21:52:27

ouai, ca fonctionne, mais le probleme c'est que ca m'affiche un seul resultat (une seul barre), normalement avec le while ca devrais m'afficher tout les a et b de ma bd

signaler à un administrateur
Commentaire de Kirua le 07/03/2005 21:55:37

$i = $i++;

Non, écris ça:

$i++;

En fait, la "valeur de retour" de $i++ est la valeur de $i avant l'incrémentation, donc tu affecte $i à $i, et puis ton ++ est dans le vent: t'incrémentes jamais! revois la base des opérations ...

signaler à un administrateur
Commentaire de joebuz le 07/03/2005 22:15:38

Merci c'est cool, désolé j'avais pas vu cette grosse erreur, trop de fatigue ...!
@+

signaler à un administrateur
Commentaire de frop01 le 08/03/2005 09:52:47

No comment ;)  10/10

signaler à un administrateur
Commentaire de kiki650 le 15/03/2005 17:20:33

Ce script a l'air vraiment interessant. J'ai cependant une erreur sur la fonction: imagecreatetruecolor()
Google me dit qu'il faut la bibliotheque  GD 2.0.1 ou supérieure. J'ai jamsi entendu parler de ca, pouvez vous m'aider?
Merci!

signaler à un administrateur
Commentaire de Missions_courtes le 15/03/2005 18:27:23

Bonjour,
Voici les modifications à effectuer dans "php.ini" :

WAMP:
---------
Modification du fichier "C:\wamp\Apache\php.ini"  :
  Valider   extension=php_gd2.dll   => GD Version 2.0 or higher

EASYPHP :
-------------
Modification du fichier "C:\WINNT\php.ini"  :
  Invalider ;extension=php_gd.dll   => GD Version 1.6.2 or higher
  Valider   extension=php_gd2.dll   => GD Version 2.0 or higher

Cordialement.
Michel

signaler à un administrateur
Commentaire de kiki650 le 15/03/2005 22:31:24

Je te remercie bcp, ca marche!
petit chef d'oeuvre...
Je leve mon panneau, et je met 10 !!

signaler à un administrateur
Commentaire de Garno le 06/05/2005 16:11:07

Est-ce que quelques uns d'entre vous l'on utiliser pour leur site / projet ?? Si oui j'aimerais bien voir les résultats :)

signaler à un administrateur
Commentaire de fuckya le 06/05/2005 20:21:33

Moi bientot peut etre ;)

signaler à un administrateur
Commentaire de CohenPi le 10/05/2005 10:04:02

Une petite erreur s'est glissée dans ton script :

$this->Colors['NoirFont'] = imagecolorallocatealpha($this->Img, 0, 0, 0, 0);

A remplacer par :

$this->Colors['FontNoir'] = imagecolorallocatealpha($this->Img, 0, 0, 0, 0);

Je sais c'est pas grand chose, mais c'est mieux si on veut pouvoir modifier la couleur des textes :p

signaler à un administrateur
Commentaire de PiouP le 28/06/2005 16:36:12

Une autre petite erreure dans la classe :

La fonction SetBorder($GraphWidth, $GraphColor):

function SetBorder($GraphWidth, $GraphColor){
$this->Graph_Border['BoderColor'] = $GraphColor; //et non $AreaWidth;
$this->Graph_Border['Border'] = $GraphWidth;
}

signaler à un administrateur
Commentaire de logon2006 le 17/07/2005 13:51:32

Salut,
quelqu'un a un exemple avec un script car moi, je n'y arrive pas :

<?php
include "config.php";
include "class.graphique3dbars.php";
$Graphique = new GraphiqueCommande;
$Graphique->SetBorder (1, "Noir");
$Graphique->SetGraphPadding (40, 10, 20, 20);
$Graphique->SetValueShow (true);
$larg = "500";
$Graphique->SetGraphSize (250, $larg);
$titre = "coucou !";
$Graphique->SetGraphTitle ($titre, "center", 3);
$Graphique->SetGraphFont (2, "FontNoir");
$Graphique->SetGraphDeepness(10);
$Graphique->SetGraphYScale (100);
$Graphique->SetBarsColor ("Mauve", "Noir");
@mysql_connect($dbServer, $dbUser, $dbPass) or die("Couldn't connect to database server: " . mysql_error());
@mysql_select_db($dbName) or die("Couldn't connect to database: " . mysql_error());
$sql = "SELECT viewed,image_id FROM images";
$req = mysql_query($sql) or die('Erreur SQL !'. $sql .mysql_error());
$i =0;
while($rs = mysql_fetch_assoc($req)){
$Data[$i] = $rs['image_id'];
$Values[$i] = $rs['viewed'];
$i++;}
$Graphique->SetGraphData($Values, $Data);
$Graphique->DrawGraphArea ('temp');
?>

signaler à un administrateur
Commentaire de joebuz le 17/07/2005 14:00:42

moi je l'utilise pour mon site voici ma page de stats :
http://60gp.ovh.net/~internetk/images/stats/

signaler à un administrateur
Commentaire de logon2006 le 17/07/2005 14:33:13

Salut joebuz,
tu n'aurais pas un petit script php d'exemple a me montrer que je comprenne comment l'utilisé ?
Merci d'avance !

signaler à un administrateur
Commentaire de BaubeGarlo le 10/08/2005 22:04:12

Bonjour

quand j'essai de faire fonction ces erreurs s'affichent.

J'ai consulter le post plus haut mais le fichier php.ini est semblable au deux ligne inscrit.

Notice: Undefined variable: AreaWidth in c:\program files\easyphp1-8\www\rss\graphic1\class.graphique3dbars.php on line 210

Fatal error: Call to undefined function: imagefontheight() in c:\program files\easyphp1-8\www\rss\graphic1\class.graphique3dbars.php on line 189

merci d'avance

signaler à un administrateur
Commentaire de BaubeGarlo le 11/08/2005 19:11:58

Re bonjour,

bon mon problème est ré gler merci quand même.

et en passant excellente source 10/10

signaler à un administrateur
Commentaire de xzibit0007 le 27/09/2005 10:56:13

BaubeGarlo, pourrais-tu expliquer comment tu as fait car j'ai le même genre d'erreurs :

Notice: Undefined variable: AreaWidth in C:\Inetpub\wwwroot\STATS\class.graphique3dbars.php on line 210

Notice: Undefined index: FontNoir in C:\Inetpub\wwwroot\STATS\class.graphique3dbars.php on line 317

Notice: Use of undefined constant i - assumed 'i' in C:\Inetpub\wwwroot\STATS\class.graphique3dbars.php on line 426

Notice: Undefined index: FontNoir in C:\Inetpub\wwwroot\STATS\class.graphique3dbars.php on line 429

Notice: Use of undefined constant i - assumed 'i' in C:\Inetpub\wwwroot\STATS\class.graphique3dbars.php on line 426

Notice: Undefined index: FontNoir in C:\Inetpub\wwwroot\STATS\class.graphique3dbars.php on line 429

Notice: Use of undefined constant i - assumed 'i' in C:\Inetpub\wwwroot\STATS\class.graphique3dbars.php on line 426

Notice: Undefined index: FontNoir in C:\Inetpub\wwwroot\STATS\class.graphique3dbars.php on line 429

Notice: Use of undefined constant i - assumed 'i' in C:\Inetpub\wwwroot\STATS\class.graphique3dbars.php on line 426

Notice: Undefined index: FontNoir in C:\Inetpub\wwwroot\STATS\class.graphique3dbars.php on line 429


ETC.....

Merci d'avance.
PS : après toutes les erreurs ci-dessus, il m'affiche quand meme le graphique avec les bonnes données....

signaler à un administrateur
Commentaire de Anthomicro le 27/09/2005 12:55:03

Salut,

il faut définir la valeur des variables manuellement avant.

$AreaWidth='';

etc...

signaler à un administrateur
Commentaire de zizou33 le 10/11/2005 09:52:26

ça n'a pas marcher avec moi.Votre code genere deux messages d'erreures:
Notice: Undefined variable: AreaWidth in c:\program files\easyphp1-7\www\classe graphique\class.graphique3dbars.php on line 210

Fatal error: Call to undefined function: imagefontheight() in c:\program files\easyphp1-7\www\classe graphique\class.graphique3dbars.php on line 189
veuillez m'aider car j'ai vraiment besoin de ce code SVP

signaler à un administrateur
Commentaire de Tiger94 le 07/12/2005 21:04:36

Bonjour,

essaie de remplacer $AreaWidth par $GraphColor

puis j'ai placer le @ devant chaque imagestring(...

et ca fonctionne

Merci pour ce code

signaler à un administrateur
Commentaire de Malach le 10/04/2006 18:46:12

Bonjour,

Je n arrive pas a afficher les valeurs sur la gauche comme sur la capture, une idée

signaler à un administrateur
Commentaire de Malach le 10/04/2006 19:08:28

Résolu je suis bete

signaler à un administrateur
Commentaire de gabs77 le 19/05/2006 21:03:41

j avoue il est excellent ce script Garno t tro fort
je suis surpris a kel point on peut faire des trucs de barges avec PHP
par contre g un problème
g fait un formulaire pour les paramètres d'apparence uniquement pour le moment cad choix du titre, de la taille du graphique, des couleurs de bordures, des barres, etc ... g pris tous les critères mais le problème est que lorsque j'appuie sur le boutton d'envoie la page me donne d'abord le script par défaut et je dois actualiser la page pour voir les modifications !!!!
je ne pense pas ke j'ai besoin de poster le formulaire mais je vais postés à ce ke je pense la page la plus concernée par le pb
<?php
include("class.graphique3dbars.php");
$grosseur = !empty($_POST['gros_bord'])?$_POST['gros_bord']:1;
$coul_bord = !empty($_POST['coul_bord'])?$_POST['coul_bord']:"Noir";
$hauteur = !empty($_POST['haut'])?$_POST['haut']:300;
$largeur = !empty($_POST['larg'])?$_POST['larg']:400;
$deplacmt_g = !empty($_POST['dep_g'])?$_POST['dep_g']:50;
$deplacmt_d = !empty($_POST['dep_d'])?$_POST['dep_d']:10;
$deplacmt_h = !empty($_POST['dep_h'])?$_POST['dep_h']:20;
$deplacmt_b = !empty($_POST['dep_b'])?$_POST['dep_b']:20;
$visible = !empty($_POST['val'])?true:false;
$profond = !empty($_POST['prof'])?$_POST['prof']:10;
$interval = !empty($_POST['interv'])?$_POST['interv']:100;
$coul_bar = !empty($_POST['coul_bar'])?$_POST['coul_bar']:"Mauve";
$coul_boba = !empty($_POST['coul_bord_bar'])?$_POST['coul_bord_bar']:"Noir";
$titre = !empty($_POST['titre'])?$_POST['titre']:"coucou";
$position = !empty($_POST['posi'])?$_POST['posi']:"center";
$marge_h = !empty($_POST['marg_h'])?$_POST['marg_h']:3;
$coul_text = !empty($_POST['coul_text'])?$_POST['coul_text']:"FontNoir";
$tail_text = !empty($_POST['taille'])?$_POST['taille']:2;

$Graphique = new GraphiqueCommande;

$Graphique->SetBorder ($grosseur, $coul_bord); //grosseur de la bordure et couleur de la bordure du cadre
$Graphique->SetGraphPadding ($deplacmt_g, $deplacmt_d, $deplacmt_h, $deplacmt_b);  //emplacement gauche, emplacement droite , emplacement haut,emplacement bas du graph dans la cadre
$Graphique->SetValueShow ($visible); //Afficher oui ou non la valeur des barres
$Graphique->SetGraphSize ($hauteur, $largeur); //dimension du graphe en pixel (height, width)
$Graphique->SetGraphTitle ($titre, $position, $marge_h); //titre, align="???" , position en hauteur
$Graphique->SetGraphFont ($tail_text, $coul_text); //taille des caracteres , couleur des caracteres dans la liste
$Graphique->SetGraphDeepness($profond); //La profondeur du graphique
$Graphique->SetGraphYScale ($interval);  // une ligne a chaque interval ...
$Graphique->SetBarsColor ($coul_bar, $coul_boba); //couleur du contenu des barres, couleurs des contours

$Data = array(24, 100, 900, 450, 785, 230);  //valeurs numériques
$Values = array("Win98", "Win2200", "WinXP", "MacOsX", "Linux", "FreeBSD"); //titres des barres

$Graphique->SetGraphData ($Values, $Data);
$Graphique->DrawGraphArea ("temp");
?>

signaler à un administrateur
Commentaire de gabs77 le 21/05/2006 15:44:45

bonjour, j'ai apporter une petite différenciation au code
pour alterner les couleurs des barres 3D 1 sur 2 et la mise en place des textes en verticale

ligne 24 :
(ajout) var $Graph_BarColor1 = 'Jaune';
ligne 60 :
(modifier) /**
*
* Paramètrage de la color des barres impaires et bords
*
* @name SetBarsColor();
* @param (string) $Color ( Couleur des barres )
* @param (string) $BorderColor ( Couleur des bordures des barres )
*
*/
function SetBarsColor($Color, $BorderColor)
{
$this->Graph_BarColor = $Color;
$this->Graph_BarBorderColor = $BorderColor;
}

/**
*
* Paramètrage de la color des barres paires et bords
*
* @name SetBarsColor1();
* @param (string) $Color ( Couleur des barres )
* @param (string) $BorderColor ( Couleur des bordures des barres )
*
*/
function SetBarsColor1($Color, $BorderColor)
{
$this->Graph_BarColor1 = $Color;
$this->Graph_BarBorderColor1 = $BorderColor;
}

ligne 465 :
(modifier)   #- Base
$Base = array($X1, $Y2, $X1 + $this->Graph_Deepness, $Y2 - $this->Graph_Deepness, $X2 + $this->Graph_Deepness, $Y2 - $this->Graph_Deepness, $X2, $Y2);
if ($i % 2 ==0){imagefilledpolygon($this->Img, $Base, 4, $this->Colors[$this->Graph_BarColor]);}
else{imagefilledpolygon($this->Img, $Base, 4, $this->Colors[$this->Graph_BarColor1]);}
imagepolygon($this->Img, $Base, 4, $this->Colors[$this->Graph_BarBorderColor]);

#- Derrière
$Derriere = array($X1 + $this->Graph_Deepness,  $Y1 - $this->Graph_Deepness, $X2 + $this->Graph_Deepness, $Y1 - $this->Graph_Deepness, $X2 + $this->Graph_Deepness, $Y2 - $this->Graph_Deepness, $X1 + $this->Graph_Deepness, $Y2 - $this->Graph_Deepness);
if ($i % 2 ==0){imagefilledpolygon($this->Img, $Derriere, 4, $this->Colors[$this->Graph_BarColor]);}
else{imagefilledpolygon($this->Img, $Derriere, 4, $this->Colors[$this->Graph_BarColor1]);}
imagepolygon($this->Img, $Derriere, 4, $this->Colors[$this->Graph_BarBorderColor]);

#- Gauche
$Gauche = array($X1, $Y2, $X1, $Y1, $X1 + $this->Graph_Deepness, $Y1 - $this->Graph_Deepness, $X1 + $this->Graph_Deepness, $Y2 - $this->Graph_Deepness);
if ($i % 2 ==0){imagefilledpolygon($this->Img, $Gauche, 4, $this->Colors[$this->Graph_BarColor]);}
else{imagefilledpolygon($this->Img, $Gauche, 4, $this->Colors[$this->Graph_BarColor1]);}
imagepolygon($this->Img, $Gauche, 4, $this->Colors[$this->Graph_BarBorderColor]);

#- Devant
$Devant = array($X1, $Y1, $X2, $Y1, $X2, $Y2, $X1, $Y2);
if ($i % 2 ==0){imagefilledpolygon($this->Img, $Devant, 4, $this->Colors[$this->Graph_BarColor]);}
else{imagefilledpolygon($this->Img, $Devant, 4, $this->Colors[$this->Graph_BarColor1]);}
imagepolygon($this->Img, $Devant, 4, $this->Colors[$this->Graph_BarBorderColor]);

#- Droit
$Droit = array($X2, $Y1, $X2 + $this->Graph_Deepness, $Y1 - $this->Graph_Deepness, $X2 + $this->Graph_Deepness, $Y2 - $this->Graph_Deepness, $X2, $Y2);
if ($i % 2 ==0){imagefilledpolygon($this->Img, $Droit, 4, $this->Colors[$this->Graph_BarColor]);}
else{imagefilledpolygon($this->Img, $Droit, 4, $this->Colors[$this->Graph_BarColor1]);}
imagepolygon($this->Img, $Droit, 4, $this->Colors[$this->Graph_BarBorderColor]);

#- Haut
$Haut = array($X1, $Y1, $X1 + $this->Graph_Deepness, $Y1 - $this->Graph_Deepness, $X2 + $this->Graph_Deepness, $Y1 - $this->Graph_Deepness, $X2, $Y1);
if ($i % 2 ==0){imagefilledpolygon($this->Img, $Haut, 4, $this->Colors[$this->Graph_BarColor]);}
else{imagefilledpolygon($this->Img, $Haut, 4, $this->Colors[$this->Graph_BarColor1]);}
imagepolygon($this->Img, $Haut, 4, $this->Colors[$this->Graph_BarBorderColor]);

#-------------------------------------------------
#---modification ligne des textes en vertical

ligne 503 #- Écriture des valeurs
$TextWidth = imagefontwidth($this->Graph_FontSize) * strlen($this->Values[$i]);
$Left = ($X1 + ($BarSize / 2)) - ($TextWidth / 2) + 30;

imagestringup( $this->Img,
$this->Graph_FontSize,
$Left,
$Y2 + 90,
$this->Values[$i],
$this->Colors[$this->Graph_FontColor]
);

signaler à un administrateur
Commentaire de guisx00 le 09/12/2006 02:32:30

franchement bravo joli boulot je suis entrain de le modifie pour que tout les couleurs valeurs etc soit modifiable grace à une bdd.
Tu ma ouvert les yeux sur l'utilisation d'une classe j'avais pas vraiment assimiler se proceder et maintenant c'est regle merci bcp

@+++

signaler à un administrateur
Commentaire de deneus le 19/12/2006 13:55:21

Salut

Vraiment sympa la source :)
Et très jolie en prime.

Par contre, il y a quelques erreurs ...
- Un 'i' qui devrait être '$i'
- Une fonction qui utilise un parametre qui n'existe pas... (tu t es trompé dans le nom de ta variable)
- Et la couleur FontNoir qui ne marche pas.

Sinon, pour le reste c'est impec :)

ps: c est tous simple a corrigé, mais sa ne fait pas serieux :)
ps2: l'echelle a gauche du diagramme sort un peu du diagramme parfois :/

Bonne continuation

signaler à un administrateur
Commentaire de psykocrash le 16/03/2007 20:54:42

En plus des erreurs y'a une fonction que t'as oublié de mettre, c'est ShowBarsValues(). J'en ai fait une de substitution en attendant que tu mettes ta source à jour, la voici pour ceux que ça intéresse :

function ShowBarsValues()
{
if($this->Graph_ShowValues)
{
$NbLine = 10;

for($i = 0; $i < $NbLine; $i++)
{
$ScaleY = $this->Graph_Size['AreaHeight'] - (($this->Graph_Size['AreaHeight'] / $NbLine) * $i);
imageline( $this->Img,
$this->Graph_Padding['Left'],
$ScaleY,
$this->Graph_Padding['Left'] + $this->Graph_Size['AreaWidth'],
$ScaleY,
IMG_COLOR_STYLED);
$Valeur = ($this->Graph_BiggestValue / $NbLine) * ($i + 1);
imagestring($this->Img,
$this->Graph_FontSize,
10,
$ScaleY - 7,
$Valeur,
$this->Colors[$this->Graph_FontColor]);

}

}
}

signaler à un administrateur
Commentaire de psykocrash le 16/03/2007 20:57:52

Ah petit oublie : il faut aussi éditer la fonction DrawGraphArea() et y ajouter après $this->DrawAxis(); la ligne suivante :

$this->ShowBarsValues();

Voila. Enfin, j'avais un besoin spécifique qui était de ne pas enregistrer le graph dans un fichier mais de l'envoyer directement. Voici donc MA fonction DrawGraphArea() :

function DrawGraphArea()
{
$this->Img = imagecreatetruecolor($this->Graph_Size['OverallWidth'], $this->Graph_Size['OverallHeight']);
imagealphablending($this->Img, true);

for($i = 0; $i < count($this->Data); $i++)
if($this->Data[$i] > $this->Graph_BiggestValue)
$this->Graph_BiggestValue = $this->Data[$i];

$this->SetColorPalette();

$this->DrawBorders();
$this->WriteTitle();

$this->DrawAxis();
$this->ShowBarsValues();
$this->DrawBars();
header("Content-type: image/png");
imagepng($this->Img);
}

Note : désolé pour l'indentation mais CS la supprime automatiquement dans les commentaires...

signaler à un administrateur
Commentaire de psykocrash le 16/03/2007 21:00:50

Grrr décidément...

Poru ceux qui ont une image noire comme résultat, il faut aller dans la fonction SetColorPalette() et modifier le dernier paramètre des appels à la fonction imagecolorallocatealpha() qui définit le taux d'opacité (0 étant opaque et 127 étant transparent).

Cette fois, je crois que j'ai tout dit ^^

signaler à un administrateur
Commentaire de psykocrash le 16/03/2007 22:00:01

En testant le code, je me suis rendu compte que ma fonction ShowBarsValues() était complètement erronée. Voici donc la ma version finale qui fonctionne bien cette fois :p

function ShowBarsValues()
{
if($this->Graph_ShowValues)
{
$NbLine = 12;
$realHeight = $this->Graph_Padding['Top'] + $this->Graph_Size['AreaHeight'] + $this->Graph_Padding['Bottom'] + 1 + ($this->Graph_Deepness) + imagefontheight($this->Graph_FontSize);
$graphHeight = $this->Graph_Size['AreaHeight'];
$graphStart = $realHeight - ($this->Graph_Padding['Bottom'] + 1 + ($this->Graph_Deepness) + imagefontheight($this->Graph_FontSize));
$graphEnd = $graphStart - $graphHeight;
for($i = 1; $i <= $NbLine; $i++)
{
$ScaleY = $graphStart - (($graphHeight / $NbLine) * $i);
imageline( $this->Img,
$this->Graph_Padding['Left'],
$ScaleY,
$this->Graph_Padding['Left'] + $this->Graph_Size['AreaWidth'],
$ScaleY,
IMG_COLOR_STYLED);
$Valeur = ($this->Graph_BiggestValue / $NbLine) * $i;
imagestring($this->Img,
$this->Graph_FontSize,
10,
$ScaleY - 7,
$Valeur,
$this->Colors[$this->Graph_FontColor]);

}

}
}

signaler à un administrateur
Commentaire de fatitaleb le 21/06/2007 15:56:23

bonjour,
voila j reprie l'exeple mais en faite tout matche mais j un petit probleme c que je sais pas comment positionné le graphe sur ma page?? c bete


Merci

signaler à un administrateur
Commentaire de sidommou le 09/07/2007 10:04:29

ce code est génial. ça marche quoi que j'ai un petit problème. Le fond de l'image est noir. J'ai réussi à changer les barres en blanc mais je trouve que c pas une solution. Pouvez vous m'aider?
merci.

signaler à un administrateur
Commentaire de zlitus le 26/07/2007 18:02:32

Pas mal! J'aime beaucoup :)
10/10

signaler à un administrateur
Commentaire de mayak2005 le 06/12/2007 23:28:01

bonjour
svp j'ai eu ce problème
Fatal error: Call to undefined function: imagefontheight() in c:\program files\easyphp1-8\www\classe graphique\class.graphique3dbars.php on line 189

signaler à un administrateur
Commentaire de alvinp le 27/12/2007 12:29:27

Pour le problème du fond noir j'ai le même.

J'ai trouvé d'où cela venait pour moi (de la transparence des couleurs) :: Correction

$this->Colors['Blanc'] = imagecolorallocatealpha($this->Img, 255, 255, 255, 0);
$this->Colors['Noir'] = imagecolorallocatealpha($this->Img, 0, 0, 0, 100);
$this->Colors['BleuPale'] = imagecolorallocatealpha($this->Img, 100, 150, 255, 100);
$this->Colors['Vert'] = imagecolorallocatealpha($this->Img, 0, 150, 0, 0);
$this->Colors['Mauve'] = imagecolorallocatealpha($this->Img, 215, 115, 215, 0);
$this->Colors['Rouge'] = imagecolorallocatealpha($this->Img, 255, 0, 0, 0);
$this->Colors['Orange'] = imagecolorallocatealpha($this->Img, 240, 150, 40, 0);
$this->Colors['Jaune'] = imagecolorallocatealpha($this->Img, 255, 255, 0, 0);

signaler à un administrateur
Commentaire de twinux le 19/03/2008 16:00:53

J'ai un gros problème avec mon code, j'utilise cette class pour générer le graph http://pasqua.ovh.org/resultats.php si quelqu'un peut m'aider ça m'arrangerai bien, merci

signaler à un administrateur
Commentaire de niceman23 le 24/08/2008 05:25:36

Petit problème

Warning: Division by zero in c:\graphique\class.graphique3dbars.php on line 447

Si on mais rien et on regarde le graphique sa me donne cette erreur ligne 447 merci de m'aider.

signaler à un administrateur
Commentaire de niceman23 le 24/08/2008 05:33:35

Puis tu possibles d'ajouter maximum 10 barres les plus performantes . Par rapport au Data

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

statistiques ,graphique, php et mysql [ par mouss ] connaissez vous des exemples mettant en oeuvre une base de donnée mysql ,php