[PHP] Artichow: la légende du camembert!!

Bonjour!

Je suis en train de faire mon premier "camembert" avec artichow et débutant avec la chose:

Voici le code de ma page:
<?php

   // Les valeurs à afficher sur le graphique
   // Elles doivent être dans un tableau
   $values = array(1, 2, 3, 5, 2);
        $absc = array('born to run', 'darkness', 'the river', 'nebraska', 'BitUSA'); //libellé de légende
        $titre = 'mon titre à moi';


   echo "<img src='camembert1.php?titre=$titre&amp;absc=".urlencode(serialize($absc))."&amp;values=".urlencode(serialize($values))."' alt='Mon graphique'/>";
?>


Et le code de mon camembert:
   // On récupère les valeurs à afficher sur le graphique dans $_GET['values'] et on les désérialize
   $data = @unserialize($_GET['values']);
   $absc = @unserialize($_GET['absc']);
   $titre= $_GET['titre'];
   
   // On vérifie que les données passées en GET sont correctes
   if(is_array($data) === FALSE) {echo "out";
      exit;
   }

  require_once('../artichow/Pie.class.php');

$graph = new Graph(750, 480);
// ... ajout d'une ombre portée...
$graph->shadow->setPosition(SHADOW_RIGHT_BOTTOM);
$graph->shadow->setSize(4);

// ... et d'un joli fond.
$graph->setBackgroundGradient(
        new LinearGradient(
                new Color(240, 240, 240, 0),
                new Red,
                0
        )
);

// Seules les valeurs numériques sont utilisées pour l'instant,
// avec le thème de couleur par défaut.
$pie = new Pie(array_values($data));
// Affiche les pourcentages avec une précision d'un dixième.
$pie->setLabelPrecision(1);

// Ajout de la légende
$pie->setLegend($absc);
// Repositionnement de la légende
$pie->legend->setPosition(1.45, 0.25);

// Décalage du camembert sur la gauche et vers le bas
$pie->setCenter(.36, .58);
// Redimensionnement du camembert, taille relative à l'objet Graph le contenant.
$pie->setSize(.65, .65);
// Ajout d'un petit effet 3D; la valeur est donnée en pixel.
$pie->set3D(5);

// Ajout d'un titre..
$pie->title->set($titre);
// ... repositionnement...
$pie->title->move(0, -40);
// ... et embellissement.
$pie->title->setFont(new TuffyBold(14));
$pie->title->setBackgroundColor(new White(50));
$pie->title->setPadding(5, 5, 2, 2);
$pie->title->border->setColor(new Black());

$graph->add($pie);

$graph->draw(); ?>


Mon problème est que je ne récupère pas les libellés de mes légendes:
$absc = array('born to run', 'darkness', 'the river', 'nebraska', 'BitUSA');
ou alors ils ne s'affichent pas... car la zone légende est petite.
Comment gérer la dimension de la légende?
Je n'ai que 1, 2, 3 , 4 à la place.

http://winton99.free.fr/allthoseyears/public/feuilleaveccam.php

Merci de votre aide! :)
Configuration: Windows XP
Firefox 1.5.0.7

5 réponses

  1. un petit up!

    :-)
    2
    1. J'aimerai surtout savoir si je passe correctement mes paramètres, c'est à dire si la syntaxe suivante est correcte...

      Merci!

      <?php
      
         // Les valeurs à afficher sur le graphique
         // Elles doivent être dans un tableau
      	$values = array(1, 2, 3, 5, 2);
      	$absc = array('btr', 'da', 'th', 'bi', 'Ne');
      	$titre = 'mon titre à moi';
      	
      
      
         echo "<img src='camembert1.php?titre=$titre&amp;absc=".urlencode(serialize($absc))."&amp;values=".urlencode(serialize($values))."' alt='Mon graphique'/>";
      ?>
      1
      1. Bonjour,
        J'ai eu le même problème que toi la semaine dernière !
        Je n'arrivais pas à passer les libellés associés à mes valeurs
        pour le résoudre, j'ai passer les valeurs comme suit :

        echo "<img src='../flyspray/scripts/camembert.php?values=".urlencode(serialize($values))."&titre=".$titre."' alt='.$titre.'/>";

        puis, je les ai récupérés de cette manière :
        $param = stripslashes(urldecode($_GET['values']));
        $data = unserialize ($param);
        0
        1. Bonjour,
          J'ai eu le même problème que toi la semaine dernière !
          Je n'arrivais pas à passer les libellés associés à mes valeurs
          pour le résoudre, j'ai passé les valeurs comme suit :

          echo "<img src='../flyspray/scripts/camembert.php?values=".urlencode(serialize($values))."&titre=".$titre."' alt='.$titre.'/>";

          puis, je les ai récupéré de cette manière :

          $param = stripslashes(urldecode($_GET['values']));
          $data = unserialize ($param);
          0
          1. g modifier 1 pe ton script essay le mnt ca marche tres bien

            <?php

            // Les valeurs à afficher sur le graphique
            // Elles doivent être dans un tableau
            $values = array(1, 2, 3, 5, 2);
            $absc = array('born to run', 'darkness', 'the river', 'nebraska', 'BitUSA'); //libellé de légende
            $titre = 'mon titre à moi';

            //On récupère les valeurs à afficher sur le graphique dans $_GET['values'] et on les désérialize

            // On vérifie que les données passées en GET sont correctes
            if(is_array($values) === FALSE) {echo "out";
            exit;
            }

            require_once('artichow-php5/Pie.class.php');

            $graph = new Graph(750, 480);
            // ... ajout d'une ombre portée...
            $graph->shadow->setSize(4);

            // ... et d'un joli fond.
            $graph->setBackgroundGradient(
            new LinearGradient(
            new Color(240, 240, 240, 0),
            new Red,
            0
            )
            );

            // Seules les valeurs numériques sont utilisées pour l'instant,
            // avec le thème de couleur par défaut.
            $pie = new Pie(array_values($values));
            // Affiche les pourcentages avec une précision d'un dixième.
            $pie->setLabelPrecision(1);

            // Ajout de la légende
            $pie->setLegend($absc);
            // Repositionnement de la légende
            $pie->legend->setPosition(1.45, 0.25);

            // Décalage du camembert sur la gauche et vers le bas
            $pie->setCenter(.36, .58);
            // Redimensionnement du camembert, taille relative à l'objet Graph le contenant.
            $pie->setSize(.65, .65);
            // Ajout d'un petit effet 3D; la valeur est donnée en pixel.
            $pie->set3D(5);

            // Ajout d'un titre..
            $pie->title->set($titre);
            // ... repositionnement...
            $pie->title->move(0, -40);
            // ... et embellissement.
            $pie->title->setFont(new TuffyBold(14));
            $pie->title->setBackgroundColor(new White(50));
            $pie->title->setPadding(5, 5, 2, 2);
            $pie->title->border->setColor(new Black());

            $graph->add($pie);

            $graph->draw(); ?>
            0