Mes données ne sont pas récupérées par mes tableaux

AlexMarie007 Messages postés 20 Date d'inscription vendredi 15 mai 2015 Statut Membre Dernière intervention 22 décembre 2015 - Modifié par AlexMarie007 le 14/12/2015 à 11:57
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 3 mars 2016 à 15:25
Bonjour, l'utilisation des librairies est importante mais savoir les utiliser est encore meilleure. j'apprends la programmation orientée objet php et je souhaite réaliser des statistiques par le biais de jpgraph php. J'ai créé le code pouvant m'afficher mes données en secteur; j'ai défini $tabloannee[] =array() et $tablonbaffaire[]=array() pour recevoir en fonction de la requète les données de ma table statistique, les passer en tableau mais il ne retourne rien, je ne comprends pas la raison alors je vous poste mon code source pour observation.
Car le message d'erreur:
JpGraph Error: 15009 Illegal pie plot. Sum of all data is zero for Pie Plot


<?php
// *************************************************
// Includes et initialisation des variables
// *************************************************

// Inclusion de la librairie JpGraph
include ("../lib/jpgraph/src/jpgraph.php");
include ("..//lib/jpgraph/src/jpgraph_pie.php");

// Tableaux de données destinées à JpGraph
$tabloannees = array();
$tabloaffaire = array();

// ************************************************
// Production des données avec Mysql \\
// ************************************************

// Connexion à la BDD
$bdd = new PDO('mysql:host=localhost;dbname=gestionalertes','root','*****');

// Sélection de la base de données
$echo = "SELECT nbaffaire_realisee,annee FROM statistique ";

$prepare = $bdd->query($echo);

// Requête
$recois = $prepare->setFetchMode(PDO::FETCH_ASSOC);
//setFetchMode(PDO::FETCH_ASSOC);

// Fetch sur chaque enregistrement
while ($recois = $prepare->fetch() >0) {
// Alimentation des tableaux de données
$tabloannees[] = $recois['annee'];
$tabloaffaire[] = $recois['nbaffaire_realisee'];
}

//echo $tabloannees."".$tabloaffaire[];

// ************************************************
// Création du graphique
// ************************************************

// On spécifie la largeur et la hauteur du graphique conteneur
$graph = new PieGraph(400,300);

// Titre du graphique
$graph->title->Set("Volume des affaires par années");

// Créer un graphique secteur (classe PiePlot)
$oPie = new PiePlot($tabloaffaire);

// Légendes qui accompagnent chaque secteur, ici chaque année
$oPie->SetLegends($tabloannees);

// position du graphique (légèrement à droite)
$oPie->SetCenter(0.4);

$oPie->SetValueType(PIE_VALUE_ABS);

// Format des valeurs de type entier
$oPie->value->SetFormat('%d');

// Ajouter au graphique le graphique secteur
$graph->Add($oPie);

// Provoquer l'affichage (renvoie directement l'image au navigateur)
$graph->Stroke();




J'ai impunément besoin de votre aide

2 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
Modifié par jordane45 le 3/03/2016 à 15:25
Bonjour,

Essayes ça :



Déjà.. place la connexion de ta BDD dans un fichier à part
que tu n'auras qu'à inclure dans les pages où tu en auras besoin.
<?php 
// Fichier cnxBDD.php
//-------------------------------//

//pour afficher les erreurs php:
error_reporting(E_ALL);

try {
  $bdd = new PDO('mysql:host=localhost;dbname=gestionalertes','root','*****');
  // set the PDO error mode to exception
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
    echo $sql . "<br>" . $e->getMessage();
}




Puis dans ta page
<?php
//----------------------------------------------//
//Au début de ta page php
//----------------------------------------------//

//Affichage des erreurs php
error_reporting(E_ALL);

//connexion à la BDD
require_once "cnxBDD.php";


// Inclusion de la librairie JpGraph
include ("../lib/jpgraph/src/jpgraph.php");
include ("..//lib/jpgraph/src/jpgraph_pie.php");

// Tableaux de données destinées à JpGraph
$tabloannees = array();
$tabloaffaire = array();


 try{
  $sql = "SELECT nbaffaire_realisee,annee FROM statistique ";
    $prepare = $bdd->prepare($sql); 
   $prepare->execute();
  //on stocke le résultat dans un array
  $recois = $prepare->fetchAll();
  
 }catch (PDOException $e) {
  // en cas d'erreur dans la requete
    echo "<br>Erreur : ".$e->getMessage();
 }
 
 foreach($recois as $R ){
    // Alimentation des tableaux de données
    $tabloannees[] =  $R['annee'];
    $tabloaffaire[] = (float)$R['nbaffaire_realisee'];
  }
 

// ************************************************
//  Création du graphique
// ************************************************

// On spécifie la largeur et la hauteur du graphique conteneur
$graph = new PieGraph(400,300);

// Titre du graphique
$graph->title->Set("Volume des affaires par années");

// Créer un graphique secteur (classe PiePlot)
$oPie = new PiePlot($tabloaffaire);

// Légendes qui accompagnent chaque secteur, ici chaque année
$oPie->SetLegends($tabloannees);

// position du graphique (légèrement à droite)
$oPie->SetCenter(0.4);

$oPie->SetValueType(PIE_VALUE_ABS);

// Format des valeurs de type entier
$oPie->value->SetFormat('%d');

// Ajouter au graphique le graphique secteur
$graph->Add($oPie);

// Provoquer l'affichage (renvoie directement l'image au navigateur)
$graph->Stroke();
 



Cordialement, 
Jordane                                                                 
0
arguiot Messages postés 29 Date d'inscription jeudi 3 mars 2016 Statut Membre Dernière intervention 21 juin 2016
3 mars 2016 à 13:43
essai d'enlever l'espace a la fin de ta requête
$echo = "SELECT nbaffaire_realisee,année FROM statistique ";
-1
Rejoignez-nous