8768 sujets

Développement web côté serveur, CMS

Bonjour,

je souhaite adapter ce script qui additionne 2 valeurs pour générer un camembert dynamique en un script qui additionne 3 valeurs.
le fichier source du script sort d'ici:


http://www.software-ds.com/PHP/Camembert-2D-3D/demo-camembert.php

voici les trois fichiers du script :

a écrit :
le premier: camembert.php


<?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 [cligne]


  # 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)2008  www.Software-DS.com",  $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
?>





a écrit :
fichier demo-camembert.php


<?php

 
 $cpt_txt = 0;
 
 if ( isset($_POST["t1"]) ) {
  $t1 = $_POST["t1"];

  if (strlen($t1) > 13) { # si c'est trop long, on coupe !
   $t1 = substr($t1, 0, 13);
  }
  $cpt_txt++;
 }
 else {
  $t1= ' ';
 }
 
 if ( isset($_POST["t2"]) ) {
  $t2 = $_POST["t2"];

  if (strlen($t2) > 13) { # si c'est trop long, on coupe !
   $t2 = substr($t2, 0, 13);
  }
  $cpt_txt++;
 }
 else {
  $t2= ' ';
 }

 $cpt_val = 0;

 if ( ! is_numeric($_POST["v1"]) ) { $v1 = 0; } else { $v1 = $_POST["v1"]; $cpt_val++; }
 if ( ! is_numeric($_POST["v2"]) ) { $v2 = 0; } else { $v2 = $_POST["v2"]; $cpt_val++; }
 
 if (isset($code) && isset($_POST["app"])) {
  $app = $_POST["app"];
  if (strlen($app) > 4) {
   $app = 'a2D';
  }
 }
 
?>


a écrit :
<br />


<table cellpadding="2" cellspacing="2" bgcolor="#996633" width="735">
<tr>
<td bgcolor="#FFCC99" align="center">
<h2>G&eacute;n&eacute;rateur PHP de Camembert en 2D/3D</h2>
</td>
</tr>
<tr>
<td bgcolor="#FFFFDD" class="tM">
Ci-dessous une d&eacute;mo en ligne du script.
<br />
</td>
</tr>
<tr>
<td bgcolor="#FFFFC0" class="tM" align="center">
<form method ="post" action ="<?php echo $PHP_SELF; ?>">

Saisir les donn&eacute;es pour g&eacute;n&eacute;rer un Camembert :<br />
<br />
<table width="190" cellpadding="2" cellspacing="1" bgcolor="#FF9900">
<tr bgcolor="#FFCC99"><td align="center">Valeur</td><td align="center">Libelle</td></tr>
<tr bgcolor="#FFFFCC"><td align="center">
<input type="text" name="v1" id="v1" size="6" value="<?php if (isset($v1) && ($v1 != 0) ) echo $v1; ?>" /></td><td align="center">
<input type="text" name="t1" id="t1" size="12" value="<?php if (isset($t1) && ($t1 != ' ') ) echo $t1; ?>" />
</td></tr>
<tr bgcolor="#FFFFCC"><td align="center">
<input type="text" name="v2" id="v2" size="6" value="<?php if (isset($v2) && ($v2 != 0) ) echo $v2; ?>" /></td><td align="center">
<input type="text" name="t2" id="t2" size="12" value="<?php if (isset($t2) && ($t2 != ' ') ) echo $t2; ?>" />
</td></tr>
</table>
<br />
Apparence:
<input type="radio" name="app" id="a2D" value="a2D" <?php if ( $app == "a2D" ) echo 'checked="checked"'; ?> /> 2D
<input type="radio" name="app" id="a3D" value="a3D" <?php if ( (!isset($app)) || ($app == "a3D") ) echo 'checked="checked"'; ?> /> 3D
&nbsp;&nbsp;&nbsp;
<input type="image" name="envoyer" id="envoyer" src="../images/valider.gif" alt="Valider" />
</form>



<?php ### generation de l image du code barre si necessaire ###
if ( ($cpt_txt > 0) && ($cpt_val > 0) ) { # on peut generer une image
 echo '<div class="tM" align="center">Image camembert :<br />';

 if ($app == "a2D")
  $mode = 2;
 else
  $mode = 3;
  
 #on rentre les donnees
 $url = '';
 
 if ($v1 > 0) { if ( ($t1 == ' ') || strlen($t1)<1 ) $t1 = $v1; $url .= '&v1='.$v1.'&t1='.$t1; }
 if ($v2 > 0) { if ( ($t2 == ' ') || strlen($t2)<1 ) $t2 = $v2; $url .= '&v2='.$v2.'&t2='.$t2; }

 echo '<img src="cam.php?mode='.$mode.$url.'" border="1" alt="" /><br /><br />';

 echo '</div>'; 
} #if ( ($cpt_txt > 0) && ($cpt_val > 0) )
?>


a écrit :
le fichier cam.php


<?php
# 03/05/2008 Didier STRAUS.fr #

require("camembert.php");

 if ( ! is_numeric($_GET["mode"]) ) { $mode = 2; } else { $mode = $_GET["mode"]; }
 
 $cpt_txt = 0;
 
 if ( isset($_GET["t1"]) ) {
  $t1 = $_GET["t1"];

  if (strlen($t1) > 13) { # si c'est trop long, on coupe !
   $t1 = substr($t1, 0, 13);
  }
  $cpt_txt++;
 }
 else {
  $t1= ' ';
 }
 
 if ( isset($_GET["t2"]) ) {
  $t2 = $_GET["t2"];

  if (strlen($t2) > 13) { # si c'est trop long, on coupe !
   $t2 = substr($t2, 0, 13);
  }
  $cpt_txt++;
 }
 else {
  $t2= ' ';
 }

 $cpt_val = 0;

 if ( ! is_numeric($_GET["v1"]) ) { $v1 = 0; } else { $v1 = $_GET["v1"]; $cpt_val++; }
 if ( ! is_numeric($_GET["v2"]) ) { $v2 = 0; } else { $v2 = $_GET["v2"]; $cpt_val++; }

# ##### FIN - on empeche les pirates de faire des betises ##### # 

 if ($mode == 2)
  $mode = 2;
 else
  $mode = 3;

 if ( ($cpt_txt > 0) && ($cpt_val == $cpt_txt) ) { # on peut generer une image
  
  $camembert = new camembert(); # initialisation

  #on rentre les donnees
 
  if ($v1 > 0) { if (strlen($t1) < 1) $t1 = $v1; $camembert->add_tab( $v1, $t1 ); }
  if ($v2 > 0) { if (strlen($t2) < 1) $t2 = $v2; $camembert->add_tab( $v2, $t2 ); }

  $camembert->trier_tab(); # Facultatif, les donnees sont triees dans l'ordre decroissant
 
  $camembert->stat2png($mode, 15);
 } # FIN on peut generer l'image

}
else { # acces non autorise

 echo '<br /><br /><h1 align="center">&copy;2008&nbsp;<a href="http://www.software-ds.com">www.Software-DS.com</a></h1>';

}
?>

Modifié par jeromei (17 Jun 2008 - 21:49)
Bonsoir,
euh oui et quelle est la question?
Ce n'est à personne ici de te servir le code sur un plateau d'argent,
alors un petit effort hein Smiley cligne
Bonjour,

euh bien reçu!!

la question est que j'essaie de faire ce camemebert en additionnant 3 valeurs au lieu de deux.

Celà ne fonctionne pas et je ne sais pas ou est l'erreur?

je joins le script que j'ai adapté en partant du précédent.

merci si on peut m'aider.



a écrit :
fichier camembert.php


<?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 Wink


# 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, "http://jeromei.phpnet.org/Copie de travail", $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



?>


a écrit :
fichier cam.php


<?php
# 03/05/2008 Didier STRAUS.fr #

require("camembert.php");

if ( ! is_numeric($_GET["mode"]) ) { $mode = 2; } else { $mode = $_GET["mode"]; }

$cpt_txt = 0;

if ( isset($_GET["t1"]) ) {
$t1 = $_GET["t1"];

if (strlen($t1) > 13) { # si c'est trop long, on coupe !
$t1 = substr($t1, 0, 13);
}
$cpt_txt++;
}
else {
$t1= ' ';
}

if ( isset($_GET["t2"]) ) {
$t2 = $_GET["t2"];

if (strlen($t2) > 13) { # si c'est trop long, on coupe !
$t2 = substr($t2, 0, 13);
}
$cpt_txt++;
}
else {
$t2= ' ';
}

if ( isset($_GET["t3"]) ) {
$t3 = $_GET["t3"];

if (strlen($t3) > 13) { # si c'est trop long, on coupe !
$t3 = substr($t3, 0, 13);
}
$cpt_txt++;
}
else {
$t3= ' ';
}

$cpt_val = 0;

if ( ! is_numeric($_GET["v1"]) ) { $v1 = 0; } else { $v1 = $_GET["v1"]; $cpt_val++; }
if ( ! is_numeric($_GET["v2"]) ) { $v2 = 0; } else { $v2 = $_GET["v2"]; $cpt_val++; }
if ( ! is_numeric($_GET["v3"]) ) { $v3 = 0; } else { $v3 = $_GET["v3"]; $cpt_val++; }

# ##### FIN - on empeche les pirates de faire des betises ##### #

if ($mode == 2)
$mode = 2;
else
$mode = 3;

if ( ($cpt_txt > 0) && ($cpt_val == $cpt_txt) ) { # on peut generer une image

$camembert = new camembert(); # initialisation

#on rentre les donnees

if ($v1 > 0) { if (strlen($t1) < 1) $t1 = $v1; $camembert->add_tab( $v1, $t1 ); }
if ($v2 > 0) { if (strlen($t2) < 1) $t2 = $v2; $camembert->add_tab( $v2, $t2 ); }
if ($v3 > 0) { if (strlen($t3) < 1) $t3 = $v3; $camembert->add_tab( $v3, $t3 ); }

$camembert->trier_tab(); # Facultatif, les donnees sont triees dans l'ordre decroissant

$camembert->stat2png($mode, 15);
} # FIN on peut generer l'image


else { # acces non autorise

echo '<br /><br /><h1 align="center">©2008 <a href="http://www.software-ds.com">www.Software-DS.com</a></h1>';

}
?> 


a écrit :
fichier demo-camembert.php



<?php


$cpt_txt = 0;

if ( isset($_POST["t1"]) ) {
$t1 = $_POST["t1"];

if (strlen($t1) > 13) { # si c'est trop long, on coupe !
$t1 = substr($t1, 0, 13);
}
$cpt_txt++;
}
else {
$t1= ' ';
}

if ( isset($_POST["t2"]) ) {
$t2 = $_POST["t2"];

if (strlen($t2) > 13) { # si c'est trop long, on coupe !
$t2 = substr($t2, 0, 13);
}
$cpt_txt++;
}
else {
$t2= ' ';
}

if ( isset($_POST["t3"]) ) {
$t3 = $_POST["t3"];

if (strlen($t3) > 13) { # si c'est trop long, on coupe !
$t3 = substr($t3, 0, 13);
}
$cpt_txt++;
}
else {
$t3= ' ';
}

$cpt_val = 0;

if ( ! is_numeric($_POST["v1"]) ) { $v1 = 0; } else { $v1 = $_POST["v1"]; $cpt_val++; }
if ( ! is_numeric($_POST["v2"]) ) { $v2 = 0; } else { $v2 = $_POST["v2"]; $cpt_val++; }
if ( ! is_numeric($_POST["v3"]) ) { $v3 = 0; } else { $v3 = $_POST["v3"]; $cpt_val++; }

if (isset($code) && isset($_POST["app"])) {
$app = $_POST["app"];
if (strlen($app) > 4) {
$app = 'a2D';
}
}

?>


a écrit :
<br />


<table cellpadding="2" cellspacing="2" bgcolor="#996633" width="735">
<tr>
<td bgcolor="#FFCC99" align="center">
<h2>Générateur PHP de Camembert en 2D/3D</h2>
</td>
</tr>
<tr>
<td bgcolor="#FFFFDD" class="tM">
Ci-dessous une démo en ligne du script.

<br />
</td>
</tr>
<tr>
<td bgcolor="#FFFFC0" class="tM" align="center">
<form method ="post" action ="">

Saisir les données pour générer un Camembert :<br />
<br />
<table width="190" cellpadding="2" cellspacing="1" bgcolor="#FF9900">
<tr bgcolor="#FFCC99"><td align="center">Valeur</td><td align="center">Libelle</td></tr>

<tr bgcolor="#FFFFCC"><td align="center">
<input type="text" name="v1" id="v1" size="6" value="" /></td><td align="center">
<input type="text" name="t1" id="t1" size="12" value="" />
</td></tr>
<tr bgcolor="#FFFFCC"><td align="center">
<input type="text" name="v2" id="v2" size="6" value="" /></td><td align="center">
<input type="text" name="t2" id="t2" size="12" value="" />
</td></tr>
<tr bgcolor="#FFFFCC"><td align="center">
<input type="text" name="v3" id="v3" size="6" value="" /></td><td align="center">
<input type="text" name="t3" id="t3" size="12" value="" />
</td></tr>
</table>
<br />
Apparence:
<input type="radio" name="app" id="a2D" value="a2D" checked > 2D

<input type="radio" name="app" id="a3D" value="a3D" checked > 3D

<input type="image" name="envoyer" id="envoyer" src="../images/valider.gif" alt="Valider" />
</form>


</td>
</tr>
</table>

<br />


<?php ### generation de l image du code barre si necessaire ###

if ( ($cpt_txt > 0) && ($cpt_val > 0) ) { # on peut generer une image
echo '<div class="tM" align="center">Image camembert :<br />';

if ($_POST['app'] == "a2D")
$mode = 2;
else
$mode = 3;

#on rentre les donnees
$url = '';

if ($v1 > 0) { if ( ($t1 == ' ') || strlen($t1)<1 ) $t1 = $v1; $url .= '&v1='.$v1.'&t1='.$t1; }
if ($v2 > 0) { if ( ($t2 == ' ') || strlen($t2)<1 ) $t2 = $v2; $url .= '&v2='.$v2.'&t2='.$t2; }
if ($v1 > 0) { if ( ($t1 == ' ') || strlen($t1)<1 ) $t1 = $v1; $url .= '&v1='.$v1.'&t1='.$t1; }

echo '<img src="cam.php?mode='.$mode.$url.'" border="1" alt="" /><br /><br />';

echo '</div>';
} #if ( ($cpt_txt > 0) && ($cpt_val > 0) )
?>

Modifié par jeromei (18 Jun 2008 - 12:55)
Salut jeromei,

je pense qu'Hermann voulait surtout te rappeler l'une des Règles que tu as forcément lues en t'inscrivant Smiley langue :
a écrit :
16- Ceci est une communauté d'entraide, pas de travail à votre place
Ce forum a pour vocation d'échanger des connaissances. Les membres ne sont pas là pour faire le travail à votre place. Il est donc inutile de demander des scripts tout faits, des codes à faire pour vous. On vous donnera les moyens d'y parvenir vous-même, sans vous apporter le code sur un plateau d'argent.

Pour ma part je suis surpris que tu poses une nouvelle question alors que la précédente n'est toujours pas résolue... A moins qu'elle ne le soit et que tu aies simplement oublié de l'indiquer dans le titre Smiley cligne ?

Concernant le camembert, le zip disponible sur le lien que tu as donné ne contient pas les même sources que ceux que tu proposes (une mise à jour entre temps ?) et semble plus simple...

Et enfin, pour la partie que tu as adaptée, tout me semble correct à l'exception de :
if ($v1 > 0) { if ( ($t1 == ' ') || strlen($t1)<1 ) $t1 = $v1; $url .= '&v1='.$v1.'&t1='.$t1; }
if ($v2 > 0) { if ( ($t2 == ' ') || strlen($t2)<1 ) $t2 = $v2; $url .= '&v2='.$v2.'&t2='.$t2; }
if ($v[b][#blue]3[/#][/b] > 0) { if ( ($t[b][#blue]3[/#][/b] == ' ') || strlen($t[b][#blue]3[/#][/b])<1 ) $t[b][#blue]3[/#][/b] = $v[b][#blue]3[/#][/b]; $url .= '&v[b][#blue]3[/#][/b]='.$v[b][#blue]3[/#][/b].'&t[b][#blue]3[/#][/b]='.$t[b][#blue]3[/#][/b]; }

A+

PS : si cela règle ton problème, n'oublies pas de passer ton sujet en [résolu] Smiley smile !
Bonjour,

j'ai été obligé d'envoyé un deuxieme script puisque j'avais retravaillé entre temps.

en attendant, mon problême est résolu depuis 5 minutes avec une aide extérieure et je passe donc le sujet en résolu.

merci