Bonjour,
Combinant :
"ob_start()"
"ob_end_flush()"
du mysql et
header ("Content-type: image/png"),
en fin de code php, j'obtiens une image vide (ou absente) !!!
C'est bizarre car il me semble que ces instructions sont bien placées dans le code.
Pouvez-vous m'aider à résoudre ce souci ?
Modifié par jytest (04 Apr 2011 - 11:08)
Combinant :
"ob_start()"
"ob_end_flush()"
du mysql et
header ("Content-type: image/png"),
en fin de code php, j'obtiens une image vide (ou absente) !!!
C'est bizarre car il me semble que ces instructions sont bien placées dans le code.
Pouvez-vous m'aider à résoudre ce souci ?
<?php
ob_start();
date_default_timezone_set('Europe/Brussels');
require_once("connexionMysql.inc.php");
$lesjours = array("Di","Lu","Ma","Me","Je","Ve","Sa");
$lesmois = array("Jan", "Fev", "Mar", "Avr", "Mai", "Jun", "Jui", "Aou", "Sep", "Oct", "Nov", "Dec");
$dateRef = array();
$visites = array();
$dateligne1 = array();
$dateligne2 = array();
$jourVal=date("d");
$moisVal=date("m");
$anneeVal=date("Y");
$nbBatons = 31;
$intBatons = 26;
$largeurImage = 840;
$hauteurImage = 300;
// légende de l'axe horizontal
for ($indBaton=0 ; $indBaton<$nbBatons ; $indBaton++) {
$dateRef[$indBaton] =
date("Ymd",mktime(0,0,0,$moisVal,$jourVal-$nbBatons+1+$indBaton,$anneeVal));
$dateligne1[$indBaton] = $lesjours[
date("w",mktime(0,0,0,$moisVal,$jourVal-$nbBatons+1+$indBaton,$anneeVal))].
date("d",mktime(0,0,0,$moisVal,$jourVal-$nbBatons+1+$indBaton,$anneeVal));
$dateligne2[$indBaton] = $lesmois[
date("m",mktime(0,0,0,$moisVal,$jourVal-$nbBatons+1+$indBaton,$anneeVal))-1];
}
// lecture des statistiques
for ($indBaton=0 ; $indBaton<$nbBatons ; $indBaton++) {
$annee = substr($dateRef[$indBaton],0,4);
$mois = substr($dateRef[$indBaton],4,2);
$jour = substr($dateRef[$indBaton],6,2);
$journee="jour".$jour;
$reqVisite="SELECT * FROM visites".
" WHERE annee= '".$annee."' AND mois= '".$mois."' ";
$resVisite=mysql_query($reqVisite);
$record=mysql_fetch_array($resVisite);
$visites[$indBaton] = $record["$journee"];
}
mysql_close($connexion);
// préparation du graphique
header ("Content-type: image/png");
$decalageG = 10;
$decalageD = 10;
$decalageH = 10;
$decalageB = 20;
$im = ImageCreate ($largeurImage, $hauteurImage)
or die ("Erreur lors de la création de l'image");
$blanc = ImageColorAllocate ($im, 255, 255, 255);
$noir = ImageColorAllocate ($im, 0, 0, 0);
$bleu_fonce = ImageColorAllocate ($im, 75, 130, 195);
$bleu_clair = ImageColorAllocate ($im, 95, 160, 240);
// on dessine un trait horizontal pour représenter l'axe du temps
ImageLine ($im, $decalageG, $hauteurImage-$decalageB, $largeurImage-$decalageD, $hauteurImage-$decalageB, $noir);
// on affiche les jours
for ($indBaton=1; $indBaton<=$nbBatons; $indBaton++) {
ImageString ($im, 0, $decalageG + $indBaton*$intBatons-7, $hauteurImage-$decalageB+2, $dateligne1[$indBaton-1], $noir);
ImageString ($im, 0, $decalageG + $indBaton*$intBatons-7, $hauteurImage-$decalageB+10, $dateligne2[$indBaton-1], $noir);
}
// calcul de l'échelle de l'axe vertical
$echelle = array (5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000, 10000, 25000, 50000);
$visitesMax = max($visites);
$echelleMax = max($echelle);
if ($visitesMax > 0) {
for ($ech=0; $ech<=$echelleMax-1; $ech++) {
if ($visitesMax <= $echelle[$ech]) {
$visitesMax = $echelle[$ech];
$ech=$echelleMax;
}
}
}
// on dessine un trait vertical pour représenter le nombre de visites
ImageLine ($im, $decalageG, $decalageH, $decalageG, $hauteurImage - $decalageB, $noir);
// on affiche les 5 ou 10 divisions des maxima de visites
// la dernière est l'extrémité haute de l'axe vertical
if (($visitesMax == 5) || ($visitesMax == 25)) {
$nbTraits=5;
} else {
$nbTraits=10;
}
$fraction = round(($hauteurImage - $decalageB - $decalageH) / $nbTraits);
for ($barre=1; $barre<=($nbTraits-1); $barre++) {
ImageLine ($im, $decalageG - 3, $decalageH + $barre * $fraction, $decalageG + 3, $decalageH + $barre * $fraction, $noir);
}
// tracé des batons
if ($visitesMax > 0) {
for ($ind=1; $ind<=$nbBatons; $ind++) {
$hauteurImageRectangle = round((($visitesMax - $visites[$ind-1]) * ($hauteurImage - $decalageB - $decalageH))/$visitesMax);
if ($visites[$ind-1] > 0) {
ImageFilledRectangle ($im, $decalageG + $ind*$intBatons-9, $hauteurImageRectangle + $decalageH + 0, $decalageG + $ind * $intBatons + 9, $hauteurImage - $decalageB, $noir);
ImageFilledRectangle ($im, $decalageG + $ind*$intBatons-6, $hauteurImageRectangle + $decalageH + 1, $decalageG + $ind * $intBatons + 6, $hauteurImage - $decalageB, $bleu_fonce);
ImageFilledRectangle ($im, $decalageG + $ind*$intBatons-3, $hauteurImageRectangle + $decalageH + 2, $decalageG + $ind * $intBatons + 3, $hauteurImage - $decalageB, $bleu_clair);
}
ImageString ($im, 0, $decalageG + $ind*$intBatons-7, $hauteurImageRectangle, $visites[$ind-1], $noir);
}
}
// et c'est fini...
ImagePng ($im);
ob_end_flush();
?>
Modifié par jytest (04 Apr 2011 - 11:08)