probleme pour faire un graphique en fonction d'une requete

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme pour faire un graphique en fonction d'une requete

par Patriboom » 26 févr. 2008, 07:14

C'est bien vrai. Puisqu'il te faut vérifier les valeurs obtenues et les traiter, aussi bien garnir le tableau de zéros là où aucun résultat n'est obtenu et de résultats là où c'est opportun. La précaution de faire 12 requête n'est plus valide dès le moment où il faut contre-vérifier et traiter.

par d0m » 25 févr. 2008, 17:34

Ou même carrément la valeur 0, tu teste après exécution de ta requête le nombre de lignes :
$qr1 = mysql_query ($requete);
//pas de valeurs pour le mois
if(mysql_num_rows($qr1)==0)
  $x[] = 0;
//au moins une valeur pour le mois
else{
  while($QuelSOMME = mysql_fetch_object($qr1)){
     $x[] = ($QuelSOMME->somme_production == 0) ? 0 : ($QuelSOMME->somme_quantitedef / $QuelSOMME->somme_production) * 1000000; 
  }
}
Mais je pense que tu peux faire une seule requête pour les 12 mois, ça sera moins couteux en ressources.

Parce que pour l'instant tu groupe par mois alors que tu fais la requête pour un seul mois. Ta requête ne renvoie donc qu'un seul résultat.

Tu initialises un tableau à 12 emplacements initialisés chacun à 0.
Tu peux faire la requête 1 seule fois pour tous les mois de l'année, grouper par mois et parcourir les résultats :
tu places dans le tableau la valeur calculée à partir de l'enregistrement.
Si certains mois ne sont pas là, ce n'est pas grave, l'élément de ce mois sera déjà à 0 dans le tableau.

par Patriboom » 25 févr. 2008, 16:26

Tu peux leur donner une valeur de 1. 1 erreur par million, ce n'est pas significatif, mais ça forcera le système à donner une des résultats

par fabien_14 » 25 févr. 2008, 15:02

Merci pour toutes les explications

sa fonctionne !!!

Cependant il faudrai que sur mon graphique sa me fasse apparaitre meme si le résultat est égal a 0 car actuellement en absicsse j'ai que les mois ou il y a des résultats hors il me faut les 12 mois de l'année. :)

par d0m » 25 févr. 2008, 14:49

Var_dump te donne la structure de ta variable, son contenu avec les types.
Ton résultat de var_dump est en fait plusieurs résultat (les uns à la suite des autres).
Tu as 2 types de résultats :
Un objet :

Code : Tout sélectionner

object(stdClass)#1 (6) { ["idligne"]=> string(1) "3" ["id"]=> string(1) "1" ["somme_quantitedef"]=> string(2) "20" ["somme_production"]=> string(4) "9000" ["annee"]=> string(4) "2008" ["mois"]=> string(1) "2" }
avec comme champs idligne, id, somme_quantitedef,...
et 0 (représenté en fait par un booléen) :

Code : Tout sélectionner

bool(false)

Ton problème n'a rien à voir avec Artichow.
Ce code
$QuelSOMME = ($qr1) ? mysql_fetch_object($qr1) : 0; 
met dans la variable $QuelSOMME l'objet représentant l'enregistrement sql si mysql_fetch_object($qr1) ne renvoie pas false c'est à dire si il y un encore un enregistrement à parcourir dans le résultat sql $qr1.
Si on arrive à la fin du parcours ou sil il n'y a carrément pas d'enregistrement retourné, $QuelSOMME prendra la valeur 0 (ou false).

Mais après tu essaie d'accéder directement aux champs de $QuelSOMME.
$QuelSOMME->somme_production
sans même tester la valeur de $QuelSOMME.
Et dans le cas où elle vaut 0(false), tu n'as tout pas de champ car $QuelSOMME mais un booléen valant 0.

Il faut donc mettre dans ton tableau x que les valeurs lorsque $QuelSOMME ne vaut pas 0.
Tu peux par exemple faire une boucle qui va remplir le tableau x seulement si on a une enregistrement d'extrait avec un code de ce genre :
$qr1 = mysql_query ($requete); 
while($QuelSOMME = mysql_fetch_object($qr1)){
     $x[] = ($QuelSOMME->somme_production == 0) ? 0 : ($QuelSOMME->somme_quantitedef / $QuelSOMME->somme_production) * 1000000; 
}

par fabien_14 » 25 févr. 2008, 14:05

Salut,

Merci de ta réponse,

alors j'ai mis le code que tu m'as donné , voici le résultat

Code : Tout sélectionner

bool(false) object(stdClass)#1 (6) { ["idligne"]=> string(1) "3" ["id"]=> string(1) "1" ["somme_quantitedef"]=> string(2) "20" ["somme_production"]=> string(4) "9000" ["annee"]=> string(4) "2008" ["mois"]=> string(1) "2" } object(stdClass)#2 (6) { ["idligne"]=> string(1) "3" ["id"]=> string(1) "2" ["somme_quantitedef"]=> string(2) "10" ["somme_production"]=> string(4) "7800" ["annee"]=> string(4) "2008" ["mois"]=> string(1) "3" } bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false) bool(false)
Je ne sais pas déchiffré ceci mais je ne vois pas $QuelSOMME

Mais c'est étrange car quand on met la requete seul dans artichow sa marche et dés que l'on met artichow sa ne fonctionne pas ...

Voici le code complet de ma page :
<?php
$db = mysql_connect("localhost","root","");
mysql_select_db("test",$db);

require_once "Artichow/BarPlot.class.php";

$graph = new Graph(700, 700);
$graph->setTiming(TRUE);
$graph->setAntiAliasing(TRUE);

$x = array();

for ($z=0; $z<12; $z++) { 
     $requete  = "SELECT rec.idligne, prod.id, SUM(rec.quantitedef) as somme_quantitedef, "; 
     $requete .= "SUM(prod.prod) AS somme_production, "; 
     $requete .= "    YEAR( rec.date_atelier ) AS annee, "; 
     $requete .= "    MONTH( rec.date_atelier ) AS mois "; 
     $requete .= "FROM rec AS rec "; 
         $requete .= "LEFT JOIN production AS prod ON prod.id = rec.idprod "; 
     $requete .= "WHERE  rec.idligne = 3 ";      
     $requete .= "    AND year(  rec.date_atelier ) = 2008 "; 
     $requete .= "    AND MONTH( rec.date_atelier ) = ".($z+1)." "; 
     $requete .= "GROUP BY MONTH(rec.date_atelier ) "; 

         $qr1 = mysql_query ($requete); 
     $QuelSOMME = ($qr1) ? mysql_fetch_object($qr1) : 0; 
     $x[] = ($QuelSOMME->somme_production == 0) ? 0 : ($QuelSOMME->somme_quantitedef / $QuelSOMME->somme_production) * 1000000; 

} 


$y = array( 
'Janvier', 
'Février', 
'Mars', 
'Avril', 
'Mai', 
'Juin', 
'Juillet', 
'Août', 
'Septembre', 
'Octobre', 
'Novembre', 
'Décembre' 
);

$plot = new BarPlot($x);

$plot->setSpace(6, 6, 10, 10);

$plot->setBarColor(new Color(100, 100, 100, 50));

$plot->label->hideFirst(TRUE);
$plot->label->hideLast(TRUE);
$plot->label->set($x);
$plot->label->move(0, -23);
$plot->label->setBackgroundGradient(new LinearGradient(new Color(250, 250, 250, 10), new Color(255, 200, 200, 30), 0));
$plot->label->border->setColor(new Color(20, 20, 20, 20));
$plot->label->setPadding(0, 0, 0, 1);
$plot->label->setFont(new Tuffy(10));

$plot->setBackgroundGradient(new LinearGradient(new Color(210, 210, 210), new Color(255, 255, 255), 0));

$plot->grid->setBackgroundColor(new Color(235, 235, 180, 60));

$plot->yAxis->setLabelPrecision(2);
$plot->yAxis->label->setFont(new Tuffy(8));

$plot->xAxis->setLabelText($y);
$plot->xAxis->label->setFont(new Tuffy(8));
$plot->xAxis->label->setAngle(45);

$plot->legend->add($plot, "Test", LEGEND_BACKGROUND);
$plot->legend->setModel(LEGEND_MODEL_BOTTOM);
$plot->legend->setPadding(10, 10, 10, 10);
$plot->legend->setPosition(0,0);
$plot->legend->setTextMargin(8, 0);

$graph->add($plot);
$graph->draw();
?>
J'utilise Artichow/BarPlot.class.php comme librairie d'artichow.


J'ai mis ceci :
for ($z=0; $z<12; $z++) { 
     $requete  = "SELECT rec.idligne, prod.id, SUM(rec.quantitedef) as somme_quantitedef, "; 
     $requete .= "SUM(prod.prod) AS somme_production, "; 
     $requete .= "    YEAR( rec.date_atelier ) AS annee, "; 
     $requete .= "    MONTH( rec.date_atelier ) AS mois "; 
     $requete .= "FROM rec AS rec "; 
         $requete .= "LEFT JOIN production AS prod ON prod.id = rec.idprod "; 
     $requete .= "WHERE  rec.idligne = 3 ";      
     $requete .= "    AND year(  rec.date_atelier ) = 2008 "; 
     $requete .= "    AND MONTH( rec.date_atelier ) = ".($z+1)." "; 
     $requete .= "GROUP BY MONTH(rec.date_atelier ) "; 

         $qr1 = mysql_query ($requete); 
     $QuelSOMME = ($qr1) ? mysql_fetch_object($qr1) : 0; 
		
     $x[] = 2; 

	 
	 print_r($QuelSOMME);

	 
} 
J'obtiens :
stdClass Object
(
    [idligne] => 3
    [id] => 1
    [somme_quantitedef] => 20
    [somme_production] => 9000
    [annee] => 2008
    [mois] => 2
)
stdClass Object
(
    [idligne] => 3
    [id] => 2
    [somme_quantitedef] => 10
    [somme_production] => 7800
    [annee] => 2008
    [mois] => 3
)
Je comprend pas pourquoi sa marche sans artichow et avec artichow sa bug.

par d0m » 25 févr. 2008, 12:50

le message d'erreur signale que tu essaies d'obtenir une propriété d'une variable qui n'est pas un objet.
Est tu sûr que $QuelSOMME est un objet?
Essaie de l'afficher var_dump($QuelSOMME);

par fabien_14 » 25 févr. 2008, 12:46

Salut

Ca marche !! cependant dés que je le met dans la boucle pour faire le graphique cela ne marche plus ... la je comprend pas trops

Si je mets que la requette pour faire apparaitre les résultat je trouve la meme chose que toi (D'ailleurs les résultats obtenu sont bon)

Mais avec artichow j'ai un message d'erreur trying to get property of non-object in on line 29

La ligne 29 : $x[] = ($QuelSOMME->somme_production == 0) ? 0 : ($QuelSOMME->somme_quantitedef / $QuelSOMME->somme_production) * 1000000;

Alors pour tester si cela venais du graphique j'ai mis $x[] = 2; le graphique se fait bien.

:?

PS : je suis sous easyphp au taf.

par Patriboom » 25 févr. 2008, 05:16

1) Au départ, il y a une erreur récurrente: l'identification de la table doit précéder le nom du champ et non l'inverse.
On doit lire: rec.idligne et non idligne.rec par exemple

2) Dès qu'il y a un champ d'une table qui partage une totale ressemblance au champ d'une autre table dans son nom, il faut recourir à des nomination de tables et les utiliser partout (fonction AS)

3) Finalement, la jonction entre les tables ne se fait pas par WHERE, mais par JOIN

Une visite de la documentation MySQL s'impose http://dev.mysql.com/doc/.

Voici, après toutes ces modifications un code fonctionnel avec tes tables. À toi de juger de la valeur des résultats obtenus, je ne les ai pas vérifiés.
for ($z=0; $z<12; $z++) {

     $requete  = "SELECT rec.idligne, prod.id, SUM(rec.quantitedef) as somme_quantitedef, ";
     $requete .= "SUM(prod.prod) AS somme_production, ";
     $requete .= "    YEAR( rec.date_atelier ) AS annee, ";
     $requete .= "    MONTH( rec.date_atelier ) AS mois ";
     $requete .= "FROM rec AS rec ";
		 $requete .= "LEFT JOIN production AS prod ON prod.id = rec.idprod ";
     $requete .= "WHERE  rec.idligne = 3 ";     
     $requete .= "    AND year(  rec.date_atelier ) = 2008 ";
     $requete .= "    AND MONTH( rec.date_atelier ) = ".($z+1)." ";
     $requete .= "GROUP BY MONTH(rec.date_atelier ) ";
		 print '<br><br>Voici ma requete: '.$requete;
		 $qr1 = mysql_query ($requete);
     $QuelSOMME = ($qr1) ? mysql_fetch_object($qr1) : 0;
     $x[] = ($QuelSOMME->somme_production == 0) ? 0 : ($QuelSOMME->somme_quantitedef / $QuelSOMME->somme_production) * 1000000;
} 
Avec les tables soumises (ton message) et les valeurs suivantes:

Code : Tout sélectionner

-- Contenu de la table `production` -- INSERT INTO `production` (`id`, `idligne`, `prod`, `equipe`, `date_atelier`) VALUES (1, 1, 1, 'GM', '0000-00-00'), (2, 1, 2, 'GM', '0000-00-00'), (3, 2, 2, 'GV', '2008-02-21'), (4, 2, 2, 'GA', '2008-02-28'); -- -- Contenu de la table `rec` -- INSERT INTO `rec` (`id`, `idligne`, `quantitedef`, `date_atelier`, `equipe`, `idprod`) VALUES (1, 3, 3, '2008-03-13', 'Les jambons', 1), (2, 2, 2, '2008-02-13', 'Les févriers', 2), (3, 3, 4, '2008-03-23', 'Troisième de mars', 2), (4, 3, 1, '2008-02-14', 'Deuxième de mars', 2);
Et les résultats obtenus sont:

* Janvier : 0
* Février : 500000
* Mars : 2333333.3333333
* Avril : 0
* Mai : 0
* Juin : 0
* Juillet : 0
* Août : 0
* Septembre : 0
* Octobre : 0
* Novembre : 0
* Décembre : 0


PS: J'espère que ton usine fera moins d'erreur que dans mes tests!!!

par fabien_14 » 24 févr. 2008, 11:06

Salut,

En faite on a pas totalement fini car (je devais pas être réveillé mais j'ai oublié qu'il me fallait ceci en partie par million :)

C'est a dire que nous avons les quantité produite mais j'ai une autre table "production"
CREATE TABLE `production` (
  `id` int(2) NOT NULL auto_increment,
  `idligne` int(2) NOT NULL default '0',
  `prod` int(10) NOT NULL default '0',
  `equipe` char(2) NOT NULL default '',
  `date_atelier` date NOT NULL default '0000-00-00',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=2 ;
et j'ai ajouter un champs "idprod" a la table REC
CREATE TABLE `rec` (
  `id` int(2) NOT NULL auto_increment,
  `idligne` int(2) NOT NULL default '0',
  `quantitedef` int(100) NOT NULL default '0',
  `date_atelier` date NOT NULL default '0000-00-00',
  `equipe` varchar(200) NOT NULL default '',
  `idprod` int(10) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=7 ;
Le champs ID de "production" permet de faire la liaison avec REC et le champs idprod.


J'ai donc essayé de faire la liaison mais je n'arrive pas a prendre les 2 valeurs pour faire l'opération : somme_quantitedef " divisé par "somme_production" multiplié par 1000000.

Alors j'ai modifié la requete comme cela mais cela ne fonctionne pas
for ($z=0; $z<12; $z++) {


     $requete  = "SELECT idligne.rec, id.production, SUM(quantitedef.rec) as somme_quantitedef, ";
     $requete  = "SUM(production.prod) AS somme_production, ";
     $requete .= "    YEAR( date_atelier ) AS annee, ";
     $requete .= "    MONTH( date_atelier ) AS mois ";
     $requete .= "FROM production, rec ";
     $requete .= "WHERE production.id = rec.idprod AND ";
     $requete .= " idligne.rec =3 ";     
     $requete .= "    AND year( date_atelier ) =2008 ";
     $requete .= "    AND MONTH( date_atelier ) = ".($z+1)." ";
     $requete .= "GROUP BY MONTH( date_atelier ) ";
$qr1 = mysql_query ($requete);
     $QuelSOMME =  ($qr1) ? mysql_fetch_object($qr1) : 0;
     $x[] = ($QuelSOMME == 0) ? 0: $QuelSOMME->somme_quantitedef / somme_prodction * 1000000;   
}

par zeus » 24 févr. 2008, 10:54

Modération :
fabien_14, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.

par Patriboom » 24 févr. 2008, 05:55

N'oublie pas de mettre "Résolu", c'est notre trophée.

par fabien_14 » 24 févr. 2008, 02:06

Bonsoir,

Merci de ta réponse. Cela marche !!!

Grand merci a toi pour ton aide.

par Patriboom » 23 févr. 2008, 22:28

Salut!

première chose, il n'est pas étonnant que nous ayons un message d'erreur avec _fetch pour les valeurs de $z ou il n'y pas d'erreur (de valeur dans la base), c'était d'ailleurs pourquoi je suggérais en premier lieu d'utiliser _numrows. Voici ce que nous pourrions faire pour éviter cela:

$x = array();

for ($z=0; $z<12; $z++) {
     $requete  = "SELECT SUM(quantitedef) as somme_quantitedef, ";
     $requete .= "    YEAR( date_atelier ) AS annee, ";
     $requete .= "    MONTH( date_atelier ) AS mois ";
     $requete .= "FROM rec ";
     $requete .= "WHERE idligne =3 ";
     $requete .= "    AND year( date_atelier ) =2008 ";
     $requete .= "    AND MONTH( date_atelier ) = ".($z+1)." ";
     $requete .= "GROUP BY MONTH( date_atelier ) ";
//MONTH( date_atelier )
		 print 'Voici la requete: '.$requete.'<br>';
     $result = mysql_query($requete, $connection);

     $QuelSOMME =  ($result) ? mysql_fetch_object($result) : 0;
     $x[] = ($QuelSOMME == 0) ? 0: $QuelSOMME->somme_quantitedef;   
}
$y = array( 
'Janvier', 
'Février', 
'Mars', 
'Avril', 
'Mai', 
'Juin', 
'Juillet', 
'Août', 
'Septembre', 
'Octobre', 
'Novembre', 
'Décembre' 
);

print 'Voici les résultats de chaque mois: <ul>';
for ($z=0; $z<12; $z++) {
		print '<li>'.$y[$z].' : '.$x[$z].'</li>';
} 

Ceci fonctionne, je l'ai essayé.
Il y reste une erreur que toi seul pourra corriger, car je ne croyais pas qu'on puisse faire de SUM sur un champ de caractères (VARCHAR), mais je vois que ça marche. C'est cependant plutôt hasardeux. Si je comprends ton projet, je pense que ce champ devrait être numérique.


Avec le champ quantitedef changé en INTEGER, voici les résultats

* Janvier : 0
* Février : 1
* Mars : 7
* Avril : 0
* Mai : 0
* Juin : 0
* Juillet : 0
* Août : 0
* Septembre : 0
* Octobre : 0
* Novembre : 0
* Décembre : 0


Je n'ai pas essayé de nouveau après avoir changé le champ en VARCHAR. J'obtiens le même résultats, mais je n'ai pas changé les valeurs, ce sont donc tous des chiffres.

Voici les valeurs d'essai:
CREATE TABLE `rec` (
  `id` int(2) NOT NULL auto_increment,
  `idligne` int(2) NOT NULL default '0',
  `quantitedef` varchar(100) NOT NULL,
  `date_atelier` date NOT NULL default '0000-00-00',
  `equipe` varchar(200) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

-- 
-- Contenu de la table `rec`
-- 

INSERT INTO `rec` (`id`, `idligne`, `quantitedef`, `date_atelier`, `equipe`) VALUES 
(1, 3, '3', '2008-03-13', 'Les jambons'),
(2, 2, '2', '2008-02-13', 'Les févriers'),
(3, 3, '4', '2008-03-23', 'Troisième de mars'),
(4, 3, '1', '2008-02-14', 'Deuxième de mars');

par fabien_14 » 23 févr. 2008, 12:20

Re bonjour,

En faite j'ai toujours des erreurs SQL avec les 2 solutions c'est pour cela que j'ai un peu modifié le tout mais sans résultats

Voici mes 2 bases
CREATE TABLE `ligne` (
  `id` int(2) NOT NULL auto_increment,
  `nom` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

CREATE TABLE `rec` (
  `id` int(2) NOT NULL auto_increment,
  `idligne` int(2) NOT NULL default '0',
  `quantitedef` varchar(200) NOT NULL default '',
  `date` date NOT NULL default '0000-00-00',
  `equipe` varchar(200) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=3 ;

J'ai refait une requete mais toujours rien , la meme erreur : mysql_fetch_array(): supplied argument is not a valid MySQL result ...

Voici le code de la page Artichow

<?php

$connection=mysql_connect("xxxx","xxxxxxxxx","xxxxxx") or die("connexion au serveur impossible");
mysql_select_db("xxxxxxxxx"); 


require_once "BarPlot.class.php";

$graph = new Graph(800, 600/*, "Albert", time() + mt_rand(2, 15)*/);
$graph->setTiming(TRUE);
$graph->setAntiAliasing(TRUE);

$x = array();

for ($z=0; $z<12; $z++) {
$result2 = mysql_query("SELECT SUM(quantitedef) as somme_quantitedef, year(date) as annee, month(date) as mois from rec WHERE idligne = '3' AND annee = '2008' AND mois = '.($z+1).' GROUP BY mois ");
$somme = mysql_fetch_assoc($result2); 
$x[] = $somme['somme_quantitedef'];   
} 


$y = array( 
'Janvier', 
'Février', 
'Mars', 
'Avril', 
'Mai', 
'Juin', 
'Juillet', 
'Août', 
'Septembre', 
'Octobre', 
'Novembre', 
'Décembre' 
); 

$plot = new BarPlot($x);

$plot->setSpace(6, 6, 10, 10);

$plot->setBarColor(new Color(100, 100, 100, 50));
$plot->setBarPadding(mt_rand(0, 30) / 100, mt_rand(0, 30) / 100);

$plot->label->hideFirst(TRUE);
$plot->label->hideLast(TRUE);
$plot->label->set($x);
$plot->label->move(0, -23);
$plot->label->setBackgroundGradient(new LinearGradient(new Color(250, 250, 250, 10), new Color(255, 200, 200, 30), 0));
$plot->label->border->setColor(new Color(20, 20, 20, 20));
$plot->label->setPadding(0, 0, 0, 1);
$plot->label->setFont(new Tuffy(10));

$plot->setBackgroundGradient(new LinearGradient(new Color(210, 210, 210), new Color(255, 255, 255), 0));

$plot->grid->setBackgroundColor(new Color(235, 235, 180, 60));

$plot->yAxis->setLabelPrecision(2);
$plot->yAxis->label->setFont(new Tuffy(8));

$plot->xAxis->setLabelText($y);
$plot->xAxis->label->setFont(new Tuffy(8));
$plot->xAxis->label->setAngle(mt_rand(0, 90));

$plot->legend->add($plot, "Test", LEGEND_BACKGROUND);
$plot->legend->setModel(LEGEND_MODEL_BOTTOM);
$plot->legend->setPadding(10, 10, 10, 10);
$plot->legend->setPosition(NULL, 0.85);
$plot->legend->setTextMargin(8, 0);

$graph->add($plot);
$graph->draw();
?>
J'ai volontairement mis idligne = '3' AND annee = '2008' pour être sur , car j'ai inséré des données dans la base.

Merci de votre aide