Problème affichage texte php/html

Fermé
dragazor Messages postés 49 Date d'inscription mercredi 29 juillet 2009 Statut Membre Dernière intervention 23 juillet 2013 - 11 févr. 2010 à 05:51
dragazor Messages postés 49 Date d'inscription mercredi 29 juillet 2009 Statut Membre Dernière intervention 23 juillet 2013 - 11 févr. 2010 à 17:45
Bonjour à tous,
en faite j'ai récupéré un code qui me permet d'afficher des graphiques (de type camembert), que j'ai modifié de facons a ce qu'il puisse m'etre utile.
Le seul problème est que je n'arrive pas a afficher du texte lorsque ce code est la.
Peut être que je me trompe, peut être que j'ai fait une erreur mais en tout cas je ne la vois pas ...
Voici le code :
<?php
	$connexion = mysql_connect('localhost','root','');
				mysql_select_db(blablabla',$connexion);
			
//fonction permettant de compter le nombre d'enregistrements pour une annee donnée et un region donnée		
	function compte_commune($region, $annee){
		$debut1=$annee."-01-01";
		$debut2=$annee."-12-31";
		$retour=mysql_query("SELECT * From inscription WHERE debut BETWEEN '$debut1' AND '$debut2' AND ville IN (SELECT $region FROM region)");
		$retour=mysql_num_rows($retour);
		return $retour;
	}
//fonction permettant de faire les pourcentages pour une région donnée et une année donnée
	function compte_commune_prct($region, $annee){
		//x=100
		//n=?    ==> n=(n*100/x)   Produit en croix
		$x=mysql_query("SELECT ville From inscription");
		$x=mysql_num_rows($x);
		$n=compte_commune($region, $annee);
		$retour=($n*100)/$x;
		return $retour;
	}
//fonction permettant d'afficher les camemberts
	function camembert($arr)
{	
   $size=3;                  /* taille de la police, largeur du caractère */
   $ifw=imagefontwidth($size);							
	
   $w=500;                   /* largeur de l'image */
   $h=250;                   /* hauteur de l'image */
   $a=120;                   /* grand axe du camembert */
   $b=$a/2;                  /* 60 : petit axe du camembert */
   $d=$a/2;                  /* 60 : "épaisseur" du camembert */
   $cx=$w/2-1;               /* abscisse du "centre" du camembert */
   $cy=($h-$d)/2;            /* 95 : ordonnée du "centre" du camembert */
	
   $A=138;                   /* grand axe de l'ellipse "englobante" */
   $B=102;                   /* petit axe de l'ellipse "englobante" */
   $oy=-$d/2;                /* -30 : du "centre" du camembert à celui de l'ellipse "englobante"*/

   $img=imagecreate($w,$h);  
   $bgcolor=imagecolorallocate($img,0xCD,0xCD,0xCD);	
   imagecolortransparent($img,$bgcolor); 
   $black=imagecolorallocate($img,0,0,0);
                             /* calcule la somme des données */
   for ($i=$sum=0,$n=count($arr);$i<$n;$i++) $sum+=$arr[$i][0];	
	
   /* fin des préliminaires : on peut vraiment commencer! */
   for ($i=$v[0]=0,$x[0]=$cx+$a,$y[0]=$cy,$doit=true;$i<$n;$i++) {														
      for ($j=0,$k=16;$j<3;$j++,$k-=8) $t[$j]=($arr[$i][1]>>$k) & 0xFF;
                             /* détermine les "vraies" couleurs */
      $color[$i]=imagecolorallocate($img,$t[0],$t[1],$t[2]);
                             /* calcule l'angle des différents "secteurs" */
      $v[$i+1]=$v[$i]+round($arr[$i][0]*360/$sum);	
														
      if ($doit) {           /* détermine les couleurs "ombrées" */
         $shade[$i]=imagecolorallocate($img,max(0,$t[0]-50),max(0,$t[1]-50),max(0,$t[2]-50)); 
														
         if ($v[$i+1]<180) { /* calcule les coordonnées des différents parallélogrammes */
            $x[$i+1]=$cx+$a*cos($v[$i+1]*M_PI/180);		
            $y[$i+1]=$cy+$b*sin($v[$i+1]*M_PI/180);	
         }										
         else {
            $m=$i+1;
            $x[$m]=$cx-$a;   /* c'est comme si on remplaçait $v[$i+1] par 180° */
            $y[$m]=$cy;	
            $doit=false;     /* indique qu'il est inutile de continuer! */
         }
      }
   }
	
   /* dessine la "base" du camembert */
   for ($i=0;$i<$m;$i++) imagefilledarc($img,$cx,$cy+$d,2*$a,2*$b,$v[$i],$v[$i+1],$shade[$i],IMG_ARC_PIE);
	
   /* dessine la partie "verticale" du camembert */														
   for ($i=0;$i<$m;$i++) {						
      $area=array($x[$i],$y[$i]+$d,$x[$i],$y[$i],$x[$i+1],$y[$i+1],$x[$i+1],$y[$i+1]+$d);
      imagefilledpolygon($img,$area,4,$shade[$i]);			
   }
	
   /* dessine le dessus du camembert */
   for ($i=0;$i<$n;$i++) imagefilledarc($img,$cx,$cy,2*$a,2*$b,$v[$i],$v[$i+1],$color[$i],IMG_ARC_PIE);

   /*imageellipse($img,$cx,$cy-$oy,2*$A,2*$B,$black);	// dessine l'ellipse "englobante" */
	
   /* dessine les "flêches" et met en place le texte */
   for ($i=0,$AA=$A*$A,$BB=$B*$B;$i<$n;$i++) if ($arr[$i][0]) {
      $phi=($v[$i+1]+$v[$i])/2;       
                             /* intersection des "flêches" avec l'ellipse "englobante" */
      $px=$a*3*cos($phi*M_PI/180)/4;		
      $py=$b*3*sin($phi*M_PI/180)/4;		
                             /* équation du 2ème degré avec 2 racines réelles et distinctes */	
      $U=$AA*$py*$py+$BB*$px*$px;         
      $V=$AA*$oy*$px*$py;						
      $W=$AA*$px*$px*($oy*$oy-$BB);	
                             /* calcule le pourcentage à afficher */
      $value=number_format(100*$arr[$i][0]/$sum,2,",","")."%";
                             /* écrit le texte à droite */	
      if ($phi<90 || $phi>270) {          
         $root=(-$V+sqrt($V*$V-$U*$W))/$U;
         imageline($img,$px+$cx,$py+$cy,$qx=$root+$cx,$qy=$root*$py/$px+$cy,$black);
         imageline($img,$qx,$qy,$qx+10,$qy,$black);		
		
         imagestring($img,$size,$qx+14,$qy-12,$arr[$i][2],$black);
         imagestring($img,$size,$qx+14,$qy-2,$value,$black);
      }
      else {                 /* écrit le texte à gauche */
         $root=(-$V-sqrt($V*$V-$U*$W))/$U;
         imageline($img,$px+$cx,$py+$cy,$qx=$root+$cx,$qy=$root*$py/$px+$cy,$black);
         imageline($img,$qx,$qy,$qx-10,$qy,$black);		
			 		
         imagestring($img,$size,$qx-12-$ifw*strlen($arr[$i][2]),$qy-12,$arr[$i][2],$black);
         imagestring($img,$size,$qx-12-$ifw*strlen($value),$qy-2,$value,$black);
      }
   }

   header("Content-type: image/png");
   imagepng($img);
   imagedestroy($img);
}

//Obtention de l'année courante
		$date= time();
		$annee = date("Y",$date);
		
//Statistiques par commune
$cacem=compte_commune('cacem', $annee);
$caesm=compte_commune('caesm', $annee);
$ccnm=compte_commune('ccnm', $annee);
$arr=array(
/*        donnée   couleur    légende */
   array(    $cacem,  0xFF99CC,   "CACEM"),
   array(    $caesm,  0xFF9900,   "CCNM"),
   array(    $ccnm,  0xFFCB03,   "CAESM")
);
camembert($arr);	
?>
	
echo 'Nombre de personnes du nord "'.compte_commune('ccnm', $annee).'" soit "'.compte_commune_prct('ccnm', $annee).'" %';	




Je vous remercie, par avance, de bien vouloir m'aider à ce que mon code fonctionne.

PS:Même en séparant par des div , je n'y arrive pas . Je précise je suis un NOOB
A voir également:

2 réponses

gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
11 févr. 2010 à 07:24
Bonjour,

c'est normal que tu ne puisse rien afficher car avec la ligne header("Content-type: image/png");
, on précise au navigateur que la valeur de retour sera sous forme d'une image !
Donc si tu balance du texte, ça ne marchera pas !
Essaye de l'enlever peut-être lol
ça métonnerai que l'image marche après ça mais tu aura ton texte ! ^_^'
Je pense plutôt que tu aura l'image sous forme de texte, donc de très belles lignes incompréhensibles :-)

A+
Gaerebut
0
dragazor Messages postés 49 Date d'inscription mercredi 29 juillet 2009 Statut Membre Dernière intervention 23 juillet 2013 5
11 févr. 2010 à 17:42
Je te remercie pour ta réponse,
effectovement, j'ai eut droit à de très belles lignes incompréhensibles en enlevant le header("Content-type: image/png");
Dans ce cas il n'y aurait aucun moyen pour moi d'afficher du texte sur cette page en plus de mon image??
0
dragazor Messages postés 49 Date d'inscription mercredi 29 juillet 2009 Statut Membre Dernière intervention 23 juillet 2013 5
11 févr. 2010 à 17:45
J'ai une petite idée,
j'essairai d'afficher cette page dans un include, je pense que la je n'aurai pas de soucis.
je te tiens au courant
0