Bonjour,
Afin de ne pas réinventer la roue en 2012,
et pour dessiner un camembert de stats (bien sûr...) en 3D (pie chart),
je me suis inspiré du code ici.
Je l'ai adapté à mes calculs...
Et rien ne s'affiche !
Il me semble pourtant l'avoir compris !
J'ai pourtant tester mes valeurs de stats, elles sont ok !
Les soucis commencent, à mon avis, à
J'obtiens une image vide, en résultat.
Quelquechose m'échappe !
Mais alors, où se trouve(nt) l'(les) erreur(s) ?
Pouvez-vous m'aider ?
Un grand merci d'avance.
Modifié par jytest (13 Jul 2012 - 11:08)
Afin de ne pas réinventer la roue en 2012,
et pour dessiner un camembert de stats (bien sûr...) en 3D (pie chart),
je me suis inspiré du code ici.
Je l'ai adapté à mes calculs...
Et rien ne s'affiche !
Il me semble pourtant l'avoir compris !
J'ai pourtant tester mes valeurs de stats, elles sont ok !
Les soucis commencent, à mon avis, à
l'auteur a écrit :
// préparation du graphique
J'obtiens une image vide, en résultat.
Quelquechose m'échappe !
Mais alors, où se trouve(nt) l'(les) erreur(s) ?
Pouvez-vous m'aider ?
Un grand merci d'avance.
<?php
session_start();
ob_start();
date_default_timezone_set('Europe/Brussels');
require_once("connexionMysql.inc.php");
// if (isset($_GET['stat']) && !empty($_GET['stat'])) {
// $graphStat=$_GET['stat'];
// if ($graphStat != 4) {
// header("Location: ../index.php");
// exit;
// }
// } else {
// header("Location: ../index.php");
// exit;
// }
$dateref01="20120701";
$dateref02="20120707";
//
//
//
$largeurImage = 676;
$hauteurImage = 322;
$label = array(
"Accueil","Création","Impression","Site Web","Kit promo",
"Boutique","Contact","FAQ","Recherche","News",
"Espace Client","Paiement","Mentions","Promos","Conditions",
"Facebook","Documents","Administrateur");
$data = array();
$aa = array();
$mm = array();
$rubr=count($label);
$indYY01 = substr($dateref01,0,4);
$indMM01 = substr($dateref01,4,2);
$indJJ01 = substr($dateref01,6,2);
$indYY02 = substr($dateref02,0,4);
$indMM02 = substr($dateref02,4,2);
$indJJ02 = substr($dateref02,6,2);
for ($indYY=$indYY01; $indYY<=$indYY02; $indYY++) {
if ($indYY==$indYY01) {
$debMM=$indMM01;
} else {
$debMM=1;
}
if ($indYY==$indYY02) {
$finMM=$indMM02;
} else {
$finMM=12;
}
for ($indMM=$debMM; $indMM<=$finMM; $indMM++) {
$aa[]=sprintf('%02d', $indYY);
$mm[]=sprintf('%02d', $indMM);
}
}
for ($ss=0; $ss<$rubr; $ss++) {
$clics = "clics".sprintf('%02d', $ss+1);
$data[$ss]=0;
for ($ind=0; $ind<count($aa); $ind++) {
$reqVisite="SELECT * FROM ".$clics.
" WHERE annee= '".$aa[$ind]."' AND mois= '".$mm[$ind]."' ";
$resVisite=mysql_query($reqVisite);
$record=mysql_fetch_array($resVisite);
if ($indYY==$indYY01 AND $indMM==$indMM01) {
$debJJ=$indJJ01;
} else {
$debJJ=1;
}
if ($indYY==$indYY02 AND $indMM==$indMM02) {
$finJJ=$indJJ02;
} else {
$finJJ=31;
}
for ($indj=$debJJ; $indj<=$finJJ; $indj++) {
$jour= "jour".sprintf('%02d', $indj);
$data[$ss] += $record["$jour"];
}
}
}
$data_sum = array_sum($data);
// Réglages
$show_label = true; // true = affichage avec label, false = sans label.
$show_percent = true; // true = affichage avec pourcentage, false = sans pourcentage.
$show_text = true; // true = affichage avec texte, false = sans texte.
$show_parts = false; // true = affichage avec valeurs , false = snas valeurs.
$label_form = 'square'; // 'square' ou 'round' label.
$background_color = 'ED0000'; // background-color du graphique...
$text_color = '000000'; // text-color.
$colors = array('003366', 'CCD6E0', '7F99B2','F7EFC6', 'C6BE8C', 'CC6600','990000','520000','BFBFC1','808080'); // couleurs des quartiers.
$shadow_height = 16; // Hauteur relief 3D.
$shadow_dark = true; // true = ombre plus foncée, false = ombre plus légère...
$width = 199;
$height = $width/2;
for ($i=0; $i<$rubr; $i++) {
if ($data[$i]/array_sum($data) < 0.1) {
$number[$i] = ' '.number_format(($data[$i]/array_sum($data))*100,1,',','.').'%';
} else {
$number[$i] = number_format(($data[$i]/array_sum($data))*100,1,',','.').'%';
}
if (strlen($label[$i]) > $text_length) {
$text_length = strlen($label[$i]);
}
}
if (is_array($label)) {
$antal_label = count($label);
$xtra = (5+15*$antal_label)-($height+ceil($shadow_height));
if ($xtra > 0) {
$xtra_height = (5+15*$antal_label)-($height+ceil($shadow_height));
}
$xtra_width = 5;
if ($show_label) {
$xtra_width += 20;
}
if ($show_percent) {
$xtra_width += 45;
}
if ($show_text) {
$xtra_width += $text_length*8;
}
if ($show_parts) {
$xtra_width += 35;
}
}
// préparation du graphique
header ("Content-type: image/png");
// $im = ImageCreateTrueColor($largeurImage, $hauteurImage)
$im = ImageCreateTrueColor($width+$xtra_width, $height+ceil($shadow_height)+$xtra_height);
// or die ("Erreur lors de la création de l'image");
ImageFill($im, 0, 0, colorHex($im, $background_color));
foreach ($colors as $colorkode) {
$fill_color[] = colorHex($im, $colorkode);
$shadow_color[] = colorHexshadow($im, $colorkode, $shadow_dark);
}
$label_place = 5;
if (is_array($label)) {
for ($i = 0; $i < $rubr; $i++) {
if ($label_form == 'round' && $show_label && $data[$i] > 0) {
imagefilledellipse($im,$width+11,$label_place+5,10,10,colorHex($im, $colors[$i % count($colors)]));
imageellipse($im,$width+11,$label_place+5,10,10,colorHex($im, $text_color));
}
else if ($label_form == 'square' && $show_label && $data[$i] > 0) {
imagefilledrectangle($im,$width+6,$label_place,$width+16,$label_place+10,colorHex($im, $colors[$i % count($colors)]));
imagerectangle($im,$width+6,$label_place,$width+16,$label_place+10,colorHex($im, $text_color));
}
if ($data[$i] > 0) {
if ($show_percent) {
$label_output = $number[$i].' ';
}
if ($show_text) {
$label_output = $label_output.$label[$i].' ';
}
if ($show_parts) {
$label_output = $label_output.$data[$i];
}
imagestring($im,'2',$width+20,$label_place,$label_output,colorHex($im, $text_color));
$label_output = '';
$label_place = $label_place + 15;
}
}
}
$centerX = round($width/2);
$centerY = round($height/2);
$diameterX = $width-4;
$diameterY = $height-4;
$start = 270;
for ($i=0; $i<$rubr; $i++) {
$value += $data[$i];
$end = ceil(($value/$data_sum)*360) + 270;
$slice[] = array($start, $end, $shadow_color[$value_counter % count($shadow_color)], $fill_color[$value_counter % count($fill_color)]);
$start = $end;
$value_counter++;
}
for ($i=$centerY+$shadow_height; $i>$centerY; $i--) {
for ($j=0; $j<$rubr; $j++) {
if ($slice[$j][0] != $slice[$j][1]) {
ImageFilledArc($im, $centerX, $i, $diameterX, $diameterY, $slice[$j][0], $slice[$j][1], $slice[$j][2], IMG_ARC_PIE);
}
}
}
for ($j=0; $j<$rubr; $j++) {
if ($slice[$j][0] != $slice[$j][1]) {
ImageFilledArc($im, $centerX, $centerY, $diameterX, $diameterY, $slice[$j][0], $slice[$j][1], $slice[$j][3], IMG_ARC_PIE);
}
}
ImagePng($im);
ImageDestroy($im);
function colorHex($im, $HexColorString) {
$R = hexdec(substr($HexColorString,0,2));
$G = hexdec(substr($HexColorString,2,2));
$B = hexdec(substr($HexColorString,4,2));
return ImageColorAllocate($im, $R, $G, $B);
}
function colorHexshadow($im, $HexColorString, $mork) {
$R = hexdec(substr($HexColorString,0,2));
$G = hexdec(substr($HexColorString,2,2));
$B = hexdec(substr($HexColorString,4,2));
if ($mork) {
($R>99)?$R-=100:$R=0;
($G>99)?$G-=100:$G=0;
($B>99)?$B-=100:$B=0;
} else {
($R<220)?$R+=35:$R=255;
($G<220)?$G+=35:$G=255;
($B<220)?$B+=35:$B=255;
}
return ImageColorAllocate($im, $R, $G, $B);
}
mysql_close($connexion);
ob_end_flush();
?>
Modifié par jytest (13 Jul 2012 - 11:08)