CLASSE DE GRAPHIQUE À BARRES 3D

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 4 mars 2005 à 20:56
devdream Messages postés 45 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 20 novembre 2019 - 6 juin 2013 à 13:54
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/29909-classe-de-graphique-a-barres-3d

devdream Messages postés 45 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 20 novembre 2019
6 juin 2013 à 13:54
je sais que le post date un peu, mais je souhaiterai un peu d'aide pour la création d'une légende et une alternance des couleurs ... j’espère que quelqu'un me lira ...
cs_Aaron Messages postés 116 Date d'inscription lundi 29 juillet 2002 Statut Membre Dernière intervention 19 janvier 2009
1 nov. 2010 à 16:07
Dommage que ca ne fonctionne pas en php5 :(((
belial1988 Messages postés 1 Date d'inscription dimanche 29 octobre 2006 Statut Membre Dernière intervention 14 mai 2009
14 mai 2009 à 23:13
Voici un petit exemple de ce que j'ai réussi a faire avec toute les correction et quelques modification a ma sauces ;)

http://img7.imageshack.us/img7/6398/screen7l.png
niceman23 Messages postés 36 Date d'inscription vendredi 6 janvier 2006 Statut Membre Dernière intervention 27 février 2009
24 août 2008 à 05:33
Puis tu possibles d'ajouter maximum 10 barres les plus performantes . Par rapport au Data
niceman23 Messages postés 36 Date d'inscription vendredi 6 janvier 2006 Statut Membre Dernière intervention 27 février 2009
24 août 2008 à 05:25
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.
twinux Messages postés 1 Date d'inscription vendredi 23 février 2007 Statut Membre Dernière intervention 19 mars 2008
19 mars 2008 à 16:00
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
alvinp Messages postés 167 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 31 août 2011
27 déc. 2007 à 12:29
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);
mayak2005 Messages postés 6 Date d'inscription dimanche 27 août 2006 Statut Membre Dernière intervention 5 janvier 2008
6 déc. 2007 à 23:28
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
zlitus Messages postés 43 Date d'inscription dimanche 13 juin 2004 Statut Membre Dernière intervention 8 janvier 2007
26 juil. 2007 à 18:02
Pas mal! J'aime beaucoup :)
10/10
sidommou Messages postés 27 Date d'inscription vendredi 31 décembre 2004 Statut Membre Dernière intervention 29 novembre 2010
9 juil. 2007 à 10:04
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.
fatitaleb Messages postés 9 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 25 juillet 2007
21 juin 2007 à 15:56
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
psykocrash Messages postés 240 Date d'inscription vendredi 14 juin 2002 Statut Membre Dernière intervention 17 mars 2009
16 mars 2007 à 22:00
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]);

}

}
}
psykocrash Messages postés 240 Date d'inscription vendredi 14 juin 2002 Statut Membre Dernière intervention 17 mars 2009
16 mars 2007 à 21:00
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 ^^
psykocrash Messages postés 240 Date d'inscription vendredi 14 juin 2002 Statut Membre Dernière intervention 17 mars 2009
16 mars 2007 à 20:57
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...
psykocrash Messages postés 240 Date d'inscription vendredi 14 juin 2002 Statut Membre Dernière intervention 17 mars 2009
16 mars 2007 à 20:54
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]);

}

}
}
cs_deneus Messages postés 13 Date d'inscription jeudi 16 décembre 2004 Statut Membre Dernière intervention 19 décembre 2006
19 déc. 2006 à 13:55
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
guisx00 Messages postés 104 Date d'inscription dimanche 23 juillet 2006 Statut Membre Dernière intervention 15 août 2009
9 déc. 2006 à 02:32
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

@+++
gabs77 Messages postés 379 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 octobre 2008
21 mai 2006 à 15:44
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]
);
gabs77 Messages postés 379 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 octobre 2008
19 mai 2006 à 21:03
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");
?>
cs_Malach Messages postés 4 Date d'inscription vendredi 27 mai 2005 Statut Membre Dernière intervention 18 novembre 2005
10 avril 2006 à 19:08
Résolu je suis bete
cs_Malach Messages postés 4 Date d'inscription vendredi 27 mai 2005 Statut Membre Dernière intervention 18 novembre 2005
10 avril 2006 à 18:46
Bonjour,

Je n arrive pas a afficher les valeurs sur la gauche comme sur la capture, une idée
cs_Tiger94 Messages postés 1 Date d'inscription mercredi 7 décembre 2005 Statut Membre Dernière intervention 7 décembre 2005
7 déc. 2005 à 21:04
Bonjour,

essaie de remplacer $AreaWidth par $GraphColor

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

et ca fonctionne

Merci pour ce code
zizou33 Messages postés 5 Date d'inscription jeudi 7 avril 2005 Statut Membre Dernière intervention 2 décembre 2011
10 nov. 2005 à 09:52
ç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
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
27 sept. 2005 à 12:55
Salut,

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

$AreaWidth='';

etc...
xzibit0007 Messages postés 1 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 27 septembre 2005
27 sept. 2005 à 10:56
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....
BaubeGarlo Messages postés 6 Date d'inscription jeudi 27 janvier 2005 Statut Membre Dernière intervention 22 janvier 2008
11 août 2005 à 19:11
Re bonjour,

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

et en passant excellente source 10/10
BaubeGarlo Messages postés 6 Date d'inscription jeudi 27 janvier 2005 Statut Membre Dernière intervention 22 janvier 2008
10 août 2005 à 22:04
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
logon2006 Messages postés 2 Date d'inscription dimanche 8 mai 2005 Statut Membre Dernière intervention 17 juillet 2005
17 juil. 2005 à 14:33
Salut joebuz,
tu n'aurais pas un petit script php d'exemple a me montrer que je comprenne comment l'utilisé ?
Merci d'avance !
cs_joebuz Messages postés 321 Date d'inscription samedi 12 février 2005 Statut Membre Dernière intervention 21 février 2013
17 juil. 2005 à 14:00
moi je l'utilise pour mon site voici ma page de stats :
http://60gp.ovh.net/~internetk/images/stats/
logon2006 Messages postés 2 Date d'inscription dimanche 8 mai 2005 Statut Membre Dernière intervention 17 juillet 2005
17 juil. 2005 à 13:51
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');
?>
cs_PiouP Messages postés 1 Date d'inscription mercredi 16 juillet 2003 Statut Membre Dernière intervention 28 juin 2005
28 juin 2005 à 16:36
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;
}
CohenPi Messages postés 3 Date d'inscription lundi 10 février 2003 Statut Membre Dernière intervention 10 mai 2005
10 mai 2005 à 10:04
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
fuckya Messages postés 125 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 8 juin 2006
6 mai 2005 à 20:21
Moi bientot peut etre ;)
cs_Garno Messages postés 36 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 14 janvier 2009
6 mai 2005 à 16:11
Est-ce que quelques uns d'entre vous l'on utiliser pour leur site / projet ?? Si oui j'aimerais bien voir les résultats :)
kiki650 Messages postés 2 Date d'inscription mardi 15 mars 2005 Statut Membre Dernière intervention 15 mars 2005
15 mars 2005 à 22:31
Je te remercie bcp, ca marche!
petit chef d'oeuvre...
Je leve mon panneau, et je met 10 !!
Missions_courtes Messages postés 8 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 février 2006
15 mars 2005 à 18:27
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
kiki650 Messages postés 2 Date d'inscription mardi 15 mars 2005 Statut Membre Dernière intervention 15 mars 2005
15 mars 2005 à 17:20
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!
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
8 mars 2005 à 09:52
No comment ;) 10/10
cs_joebuz Messages postés 321 Date d'inscription samedi 12 février 2005 Statut Membre Dernière intervention 21 février 2013
7 mars 2005 à 22:15
Merci c'est cool, désolé j'avais pas vu cette grosse erreur, trop de fatigue ...!
@+
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
7 mars 2005 à 21:55
$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 ...
cs_joebuz Messages postés 321 Date d'inscription samedi 12 février 2005 Statut Membre Dernière intervention 21 février 2013
7 mars 2005 à 21:52
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
cs_Garno Messages postés 36 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 14 janvier 2009
7 mars 2005 à 21:38
$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].
cs_joebuz Messages postés 321 Date d'inscription samedi 12 février 2005 Statut Membre Dernière intervention 21 février 2013
7 mars 2005 à 21:21
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");
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
7 mars 2005 à 17:17
Delta2, utilise mysql_fetch_assoc dans ton cas, c'est plus rapide. Aussi, tu peux écrire $i++; plutôt que $i = $i + 1;
Missions_courtes Messages postés 8 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 février 2006
7 mars 2005 à 10:59
Bonjour,
Félicitation Garno.
L'installation et l'utilisations sont simples et le résultat très bon.
Michel FOUILLADE
cs_delta2 Messages postés 1 Date d'inscription vendredi 26 novembre 2004 Statut Membre Dernière intervention 7 mars 2005
7 mars 2005 à 09:27
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.
la_pin Messages postés 275 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 15 décembre 2005
6 mars 2005 à 13:23
vraiment mignon, bravo !
cs_Garno Messages postés 36 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 14 janvier 2009
5 mars 2005 à 23:06
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.
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
5 mars 2005 à 18:21
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
cs_Garno Messages postés 36 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 14 janvier 2009
5 mars 2005 à 16:42
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 ;)
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
5 mars 2005 à 13:45
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).
cs_LuckyLuck Messages postés 59 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 5 juillet 2005
5 mars 2005 à 13:38
la grande classe ! 10
fuckya Messages postés 125 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 8 juin 2006
5 mars 2005 à 10:34
chapeau, réellement bien fait : 10/10

dommage pour les " mais bon ^^
lumesh Messages postés 564 Date d'inscription jeudi 21 février 2002 Statut Membre Dernière intervention 7 novembre 2008
5 mars 2005 à 08:53
propre, joli, bien foutu, 10/10
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
5 mars 2005 à 02:23
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 ;-)
cs_Garno Messages postés 36 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 14 janvier 2009
5 mars 2005 à 01:33
Héhé merci beaucoup :)
Je sais qu'en général Anthomicro à un esprit critique assez fort :P et merci pour vos commentaires
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
4 mars 2005 à 22:39
Je me suis lâché j'ai mis 10 ^^
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
4 mars 2005 à 22:34
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...
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
4 mars 2005 à 22:03
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 ++
cs_Garno Messages postés 36 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 14 janvier 2009
4 mars 2005 à 21:41
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 ;)
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
4 mars 2005 à 21:40
enfin ça reste une bonne source...

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

bien joué et bonne continuation...
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
4 mars 2005 à 21:36
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...
cs_Garno Messages postés 36 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 14 janvier 2009
4 mars 2005 à 21:33
Donc il est rendu inutile de faire echo "Allo ".$Var1." !"; ??
cs_Garno Messages postés 36 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 14 janvier 2009
4 mars 2005 à 21:32
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 !
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
4 mars 2005 à 21:29
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...
cs_Garno Messages postés 36 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 14 janvier 2009
4 mars 2005 à 21:13
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 " "
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
4 mars 2005 à 20:56
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...