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

redwire Messages postés 259 Date d'inscription   Statut Membre -  
 ensias -
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. redwire Messages postés 259 Date d'inscription   Statut Membre 91
     
    un petit up!

    :-)
    2
  2. redwire Messages postés 259 Date d'inscription   Statut Membre 91
     
    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
  3. ChMaille
     
    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
  4. chmaille
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ensias
     
    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