Generation de histogramme

abdennaceur123 - 16 avril 2015 à 19:57
jordane45
Messages postés
36047
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 août 2022
- 16 avril 2015 à 20:04
Bonjour, comment faire pour alimenter tableau de base de données pour generer un camembert car le code ci dessous presente des erreurs

//ici startcamembert
<?php 
error_reporting("E_NOTICE"); 
?>
<?php
# Camembert 2D/3D - 03/05/2008 - (C)2008 www.Software-DS.com
# Demo en ligne : http://www.software-ds.com/PHP/Camembert-2D-3D/demo-camembert.php

 require("camembert.php"); # on charge la classe camembert
  
 $camembert = new camembert(); # initialisation

 # on peut utiliser une requete SQL pour alimenter le tableau
  
             $tot=mysql_query("select *from reclamation ");
			$counttot=mysql_num_rows($tot);
			echo ''.$counttot.'';
			$app=mysql_query("select *from reclamation  where type='Application'");
			$countapp=mysql_num_rows($app)*100/$counttot;
			$courant=mysql_query("select *from reclamation  where type='Courant'");
			$countcourant=mysql_num_rows($courant)*100/$counttot;
			$mat=mysql_query("select *from reclamation  where type='Materiels'");
			$countmat=mysql_num_rows($mat)*100/$counttot;
			$liaison=mysql_query("select *from reclamation  where type='Liaison'");
			$countliaison=mysql_num_rows($liaison)*100/$counttot;
			$autres=mysql_query("select *from reclamation  where type='Autres'");
			$countautres=mysql_num_rows($autres)*100/$counttot;
			
			
			
 
 $camembert->add_tab( $countapp, "application" );
 $camembert->add_tab( $countcourant, "courant" );
 $camembert->add_tab( $countmat , "materiel" );
  $camembert->add_tab( $countliaison, "liaison" );
 $camembert->add_tab( $countautres, "autres" );
 
 


 $camembert->trier_tab(); # Facultatif, les donnees sont triees dans l'ordre decroissant
 # $camembert->affiche_tab(); # Debug
 
 # on genere l'image au format PNG
 $camembert->stat2png(3, 15); # 1er argument (2 ou 3 pour la 2D ou la 3D) - 2eme argument hauteur en pixel de l'effet 3D (mettre quelque chose meme pour la 2D)

?>



//ici code camembert.php
<?php
# Camembert 2D/3D - 03/05/2008
# Auteur : Didier STRAUS (C)2008 www.Software-DS.com
# Description: Cree une image PNG en camembert a partir des donnees fournies.
# Demo en ligne : http://www.software-ds.com/PHP/Camembert-2D-3D/demo-camembert.php

class camembert {
 var $dim;  # dim de position dans le tableau
 var $tabVal; # tableau des valeurs
 var $tabNom; # tableau des noms
 var $tot;    # total des valeurs

### camembert : constructeur / initialisation
 function camembert() {
  $this->dim = 0;
  $this->tot = 0;
  
  $this->tabVal=array();
  $this->tabNom=array();
 } # fin camembert


### add_tab : ajoute une donnee au tableau (valeur + libelle)
 function add_tab($val, $nom) {
  if ($val > 0) {
   $this->tabVal[$this->dim] = $val;
   $this->tabNom[$this->dim] = $nom;
   $this->tot = $this->tot + $val; # calcul du total
   $this->dim++; # MAJ de l'dim
  }
 } # fin add_tab


### trier_tab : trie le tableau par ordre decroissant
 function trier_tab() {
  if ($this->dim > 1) { # tri necessaire ?
  
   for($i=0;$i<$this->dim-1;$i++) {
    $maxi = $this->tabVal[$i];

    for($j=$i+1;$j<$this->dim;$j++) {
     if ($maxi < $this->tabVal[$j]) { # on echange les positions dans le tableau
      $maxi  = $this->tabVal[$j];
      $inter = $this->tabNom[$j];
      
      $this->tabVal[$j] = $this->tabVal[$i];
      $this->tabNom[$j] = $this->tabNom[$i];

      $this->tabVal[$i] = $maxi;
      $this->tabNom[$i] = $inter;      
     }
    } # for j 
   } # for i
  } # if
 } # fin trier_tab


### affiche_tab : affiche les donnees du tableau, utile pour utile Debug
 function affiche_tab() {
  for($i=0; $i<$this->dim; $i++) {
   echo $this->tabNom[$i].' '.$this->tabVal[$i].'<br />';
  } # for
 } # fin affiche_tab
 

### stat2png : genere une image camembert au format PNG
 function stat2png($mode, $hauteur_effet_3D) {
  $width       = 370; # largeur de l'image
  $height      = 220; # hauteur de l'image
  $centre_x    = 110; # poisition X du centre du camembert
  $centre_y    = 110; # poisition Y du centre du camembert
  $cam_largeur = 200; # largeur du camembert
  $cam_hauteur = 160; # hauteur du camembert

  # declaration/initialisation de l'image
  $img = imagecreatetruecolor($width, $height) or die("Probleme : Chargement de la lib GD impossible");

  # declaration des couleurs
  $noir  = imagecolorallocate($img,0,0,0);
  $vert  = imagecolorallocate($img,90,160,90);
  $blanc = imagecolorallocate($img,255,255,255);

  ImageFill( $img, 0, 0, $blanc ); # couleur de fond de l'image (blanc)
  
  if ($mode<>2 && $mode<>3) { # controle du mode
   $mode = 2;
  }
  
  if ($mode == 2) {
   $cam_largeur = $cam_hauteur; # pour la 2D on veut un cercle et pas une ellipse
  }
  
  $tot_angle = -90; # on commence a afficher les donnees a partir de midi

  # variables pour generer les couleurs du camembert
  $v2 = 185;
  $v1 = 75;
  $c  = 0;
  
  for($i=0; $i<$this->dim; $i++) { # pour chaque morceau du camembert, on calcul la couleur et les angles
   
   # on genere une couleur differente a chaque iteration et on la memorise
   if ($c==0) {
    $tab_couleurs[$i][0][0] = $v1; # R
    $tab_couleurs[$i][0][1] = $v2; # G
    $tab_couleurs[$i][0][2] = $v2; # B
   }
   else if ($c==1) {
    $tab_couleurs[$i][0][0] = $v2; # R
    $tab_couleurs[$i][0][1] = $v1; # G
    $tab_couleurs[$i][0][2] = $v2; # B
   }
   else if ($c==2) {
    $tab_couleurs[$i][0][0] = $v2; # R
    $tab_couleurs[$i][0][1] = $v2; # G
    $tab_couleurs[$i][0][2] = $v1; # B
   }
   
   $c++;
   # calcul complexe pour changer de couleur
   if ($c==3) {
    $c   = 0;
    $v1 += 60;
    $v2 -= 40;
    
	if (abs($v1-$v2) < 40) {
     $v1 += 30;
     $v2 -= 30;
    } # if
   } # if

   # on assombrit la couleur et on la memorise
   $dark = 35; # modifier cette valeur pour modifier l'assombrissement des couleurs

   for($k=0; $k<3; $k++) { # R G B
 
    if ($tab_couleurs[$i][0][$k] - $dark > 0)
     $tab_couleurs[$i][1][$k] = $tab_couleurs[$i][0][$k] - $dark;
    else
     $tab_couleurs[$i][1][$k] = 0;

   } # for($k=0; k<3; k++)

   # on calcul et memorise l'angle
   $tab_angle[$i] = $tot_angle;
   $angle = ($this->tabVal[$i] * 360) / $this->tot;
   $tot_angle += $angle;

  } # for($i=0; $i<$this->dim; $i++)

  $tab_angle[$this->dim] = $tot_angle; # on n'oublie pas de memoriser le dernier angle ;)


  # on peut commencer a afficher les morceaux de camemberts
   
  if ($mode == 3) { # Effet 3D
      
   for($k=$centre_y + $hauteur_effet_3D; $k > $centre_y; $k--) { # pour avoir un effet 3D de 10 pixels

    for($i=0; $i<$this->dim; $i++) { # pour chaque morceau du camembert
         
     # creation de la couleur sombre
     $color = imagecolorallocate( $img, $tab_couleurs[$i][1][0], $tab_couleurs[$i][1][1], $tab_couleurs[$i][1][2] ); # R G B
       
	 # on affiche le morceau de camembert
     imagefilledarc($img, $centre_x, $k, $cam_largeur, $cam_hauteur, $tab_angle[$i], $tab_angle[$i+1], $color, IMG_ARC_PIE);

    } # for($i=0; $i<$this->dim; $i++)

   } # for($k=120; $k>110; $k--)

  } # if ($mode == 3)


  # on affiche les morceaux "clairs" du camembert (partie commune 2D/3D)
  for($i=0; $i<$this->dim; $i++) { # pour chaque morceau du camembert
 
   # creation de la couleur claire
   $color = imagecolorallocate( $img, $tab_couleurs[$i][0][0], $tab_couleurs[$i][0][1], $tab_couleurs[$i][0][2] ); # R G B
   
   # on affiche le morceau de camembert
   imagefilledarc($img, $centre_x, $centre_y, $cam_largeur, $cam_hauteur, $tab_angle[$i], $tab_angle[$i+1], $color, IMG_ARC_PIE);
   
   #  on affiche la legende
   $x = 235;
   $y = 15 + $i*16;
   imagefilledrectangle($img, $x, $y, $x+9, $y+9, $color); # petit carre de couleur
   imagestring($img, 2, $x+15, $y-2, $this->tabNom[$i]. ' ('.floor(($this->tabVal[$i] * 100) / $this->tot).'%)', $noir); # texte

  } # for($i=0; $i<$this->dim; $i++)

   
  # finalisation de l'image
  
  imagestring( $img, 2, 175, 195, "(C) gestpark 2015", $vert); # vous pouvez mettre votre site internet

  header("Content-type: image/png"); # declaration du Header, pour pouvoir afficher l'image
  imagepng($img);     # creation de l'image
  imagedestroy($img); # nettoyage des ressources
 } # fin stat2png


} # fin de la classe camembert
?>

1 réponse

jordane45
Messages postés
36047
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 août 2022
358
16 avril 2015 à 20:04
Bonjour,

car le code ci dessous presente des erreurs

C'est à dire ? Lesquelles ??

Sachant que tu utilises l'extension mysql_ ... qui est obsolète !
Voir ceci : http://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
(perso je te recommande la PDO)
0