Bonjour à tous, je suis débutant en GD et j'ai un problème.
je veux créer un histogramme montrant les cumules de tps d'intervention d'une équipe de technicien. j'utilise php5.3 et Windows XP.

j'ai 2 script: le premier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
<?php
$query = $id_db->query
('
SELECT Nom, MONTH( Date_debut ) AS Mois, SEC_TO_TIME( SUM( Temps_mis ) ) AS Tps,  SUM( Temps_mis )  as Sec
FROM effectuees_par, interventions
WHERE effectuees_par.Code_intervention = interventions.Code_intervention
AND YEAR( Date_debut ) =  \'2010\'
GROUP BY Mois, Nom
') or die(print_r($id_db->errorInfo()));
function SecToHMS($secondes)
{
	//$secondes = 6546;
	$temp = $secondes % 3600;
	$time[0] = ( $secondes - $temp ) / 3600 ;
	$time[2] = $temp % 60 ;
	$time[1] = ( $temp - $time[2] ) / 60;
 
	$Val = $time[0].':'.$time[1].':'.$time[2];
	return $Val;
}
//===
 
include('graph1.php');
 
//===
?>

et le deuxième:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
 
<?php
$i=0;
$element=array();
$js=array();
while($row=$query->fetch())
{
	//Prendre la premiere quantite vendue comme le minimum et maximum
	//Mettre les noms de produit et les Mois de ventes dans des tableaux
	if($i==0)
	{
		$min=$row['Sec'];
		$max=$row['Sec'];
		array_push($element, $row['Nom']);
		array_push($js, $row['Mois']);
	}
	//Inserer le nom de produit dans le tableau s'il n'est pas encore enregistrer
	if(!in_array($row['Nom'],$element))
	{
		array_push($element, $row['Nom']);
	}
	//Inserer le Mois de vente dans le tableau s'il n'est pas encore enregistrer
	if(!in_array($row['Mois'],$js))
	{
		array_push($js, $row['Mois']);
	}
	if($row['Sec'] < $min)
	{
		$min=$row['Sec'];
	}
	else
	{
	if($row['Sec'] > $max)
	{	$max=$row['Sec'];}
	}
	$i++;
}
//Mettre les Mois en Francais dans un tableau
$moisFr=array('Janvier','Fevrier','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Decembre');
 
 
//type mime de l'image
header('Content-type: image/png');
//Chemin vers le police à utiliser
$font_file = '../arial.ttf';
//Adapter la largeur de l'image par rapport au nombre de ligne et nombre de Mois
$largeur=$i*20+(count($js)*10)+100;
$hauteur=400;
$absis=80;
$courbe=imagecreatetruecolor($largeur, $hauteur);
//Générer un tableau de couleurs
$couleur=array();
$red=0;
$blue=0;
$green=0;
for($n=0;$n<count($element);$n++)
{
	$x = $n%3;
	switch ($x)
	{
		case(0):
		$red+=85;
		break;
		case(1):
		$blue+=85;
		break;
		case(2):
		$green+=85;
		break;
	}
	$couleur[$n]=imagecolorallocate($courbe, $red,$green , $blue);
}
//Les autre couleurs utils
$fond=imagecolorallocate($courbe, 250, 250, 250);
$ligne=imagecolorallocate($courbe, 220, 220, 220);
$noir=imagecolorallocate($courbe, 0, 0, 0);
$blanc=imagecolorallocate($courbe, 255, 255, 255);
$rouge=imagecolorallocate($courbe, 255, 0, 0);
//Colorer le fond
imagefilledrectangle($courbe,0 , 0, $largeur, $hauteur, $fond);
//Tracer l'abscisse et l'ordonnée
imageline($courbe, 50, $hauteur-$absis, $largeur-10,$hauteur-$absis, $noir);
imageline($courbe, 50,$hauteur-$absis,50,20, $noir);
if($min!=0)
{
	$absis+=30;
	$a=30;
} 
$nbOrdonne=10;
//Calculer les échelles suivants les abscisses et ordonnées
$echelleX=($largeur-90-((count($js)*10)))/$i;
$echelleY=($hauteur-$absis-20)/$nbOrdonne;
$i=$min;
$py=($max-$min)/$nbOrdonne;
$pasY=$absis;
//Tracer les grides
while($pasY<($hauteur-19))
{
	imagestring($courbe, 2,10 , $hauteur-$pasY-6, SecToHMS(round($i)), $noir);
	imageline($courbe, 50, $hauteur-$pasY, $largeur-20,$hauteur-$pasY, $ligne);
	$pasY+=$echelleY;
	$i+=$py;
}
 
 
$pasX=60;
$query = $id_db->query
('
SELECT Nom, MONTH( Date_debut ) AS Mois, SEC_TO_TIME( SUM( Temps_mis ) ) AS Tps,  SUM( Temps_mis )  as Sec
FROM effectuees_par, interventions
WHERE effectuees_par.Code_intervention = interventions.Code_intervention
AND YEAR( Date_debut ) =  \'2010\'
GROUP BY Mois, Nom
') or die(print_r($id_db->errorInfo()));
$Mois=0;
while($row= $query->fetch())
{
	if($Mois<($row['Mois']))
	{
		//Ecrire le Mois en Français en abscisse
		imagestring($courbe, 2, $pasX,$hauteur-$absis+32 , $moisFr[$row['Mois']-1], $noir);
		//Décaller 10 px du Mois précédent
		$pasX+=10;
	}
	//Calculer la hauteur de la rectangle
	$y=($hauteur) -(($row['Sec'] -$min) * ($echelleY/$py))-$absis;
	//Prendre la couleur correspondante au produit
	$clr=$couleur[array_search($row['Nom'], $element)];
	//Dessiner le rectangle
	imagefilledrectangle($courbe,$pasX-10 , $hauteur-$absis+$a, $pasX+10, $y, $clr);
	//Ecrire la valeur en verticale
	imagefttext($courbe, 10, 270, $pasX-3, $y+5, $blanc, $font_file, $row['Tps']);
	//Decaller le prochain rectangle
	$pasX+=$echelleX;
	$Mois=$row['Mois'];
}
//La legende
$pasX=50;
//Hauteur de la premiere
$pasY=$hauteur-$absis+47;
foreach ($element as $index=>$Nom)
{
	if(($index % 4)==3)
	{
		$pasX+=120;
		$pasY=$hauteur-$absis+47;
	}
	//Le nom du poduit avec sa couleur
	imagestring($courbe, 2, $pasX,$pasY , $Nom, $couleur[$index]);
	//Un petit rectangle
	imagefilledrectangle($courbe,$pasX+80 , $pasY, $pasX+100, $pasY+12, $couleur[$index]);
	$pasY+=20;
}
imagepng($courbe);
imagedestroy($courbe);
?>
je n'obtiens qu'une feuille blanche avec l'icone représentant une image non chargée...