IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[JpGraph] Problème d'affichage de données d'une requête


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Points : 3
    Points
    3
    Par défaut [JpGraph] Problème d'affichage de données d'une requête
    Bonjour,

    J'ai un petit soucis avec l'affichage d'un camembert de la lib JPGraph.
    En effet, le code ci dessous m'affiche un
    jpgraph error 15009, illegal pie plot, sum of all data is zero for pie plot
    Là où je ne comprends pas, c'est que lorsque je rentre les données manuellement, cela marche alors que dans les deux cas, il s'agit d'un tableau avec les mêmes données.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?php 
    require_once ('jpgraph/src/jpgraph.php');
    require_once ('jpgraph/src/jpgraph_pie.php');
     
     
    	$req = 'SELECT mesdonnees FROM matable ';
    	$sql = mysql_query($req);	
    	$values = array();
     
    	//$donnees = array(1,5,8,9,7,7);
     
    	while ( $data = mysql_fetch_assoc($sql))
    	{
    		$values[] = $data['mesdonnees'];
    	}
    	/*echo '<pre>';
            print_r($donnees);
            echo '</pre>';
    	echo '<br />';
    	echo '<pre>';
            print_r($values);
            echo '</pre>';
    	*/
     
    	$largeur = 600;
    	$hauteur = 600;
     
    	// Initialisation du graphique
    	$graphe = new PieGraph($largeur, $hauteur);
     
    	// Creation du camembert
    	$camembert = new PiePlot($values); // avec $donnees cela marche
    	// Ajout du camembert au graphique
    	$graphe->add($camembert);
     
    	// Ajout du titre du graphique
    	$graphe->title->set("Titre du graphique");
     
    	// Affichage du graphique
    	$graphe->stroke();
     
    ?>
    Auriez vous un indice ?

  2. #2
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Points : 889
    Points
    889
    Par défaut
    Bonjour.
    Commence par faire un print_r ou un var_dump de $values en ligne 16 pour vérifier les données fournies.

    Yves

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Voici le print_r de $values :
    Array
    (
    [0] => 8
    [1] => 9
    [2] => 7
    [3] => 3
    [4] => 3
    [5] => 4
    [6] => 9
    [7] => 45
    [8] => 7
    [9] => 12
    [10] => 16
    [11] => 6
    [12] => 2
    )

  4. #4
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Points : 889
    Points
    889
    Par défaut
    Bizarre ...
    c'est peut-être un problème de typage.
    var_dump est plus précis que print_r car donne le type string ou autre.
    Tu peux essayer de forcer le typage en utilisant floatval
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $values[] = floaval($data['mesdonnees']);

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Avec un var_dump sur $donnees :
    array(6) {
    [0]=>
    int(1)
    [1]=>
    int(5)
    [2]=>
    int(8)
    [3]=>
    int(9)
    [4]=>
    int(7)
    [5]=>
    int(7)
    }
    et sur $values :
    array(13) {
    [0]=>
    string(1) "8"
    [1]=>
    string(1) "9"
    [2]=>
    string(1) "7"
    [3]=>
    string(1) "3"
    [4]=>
    string(1) "3"
    [5]=>
    string(1) "4"
    [6]=>
    string(1) "9"
    [7]=>
    string(2) "45"
    [8]=>
    string(1) "7"
    [9]=>
    string(2) "12"
    [10]=>
    string(2) "16"
    [11]=>
    string(1) "6"
    [12]=>
    string(1) "2"
    }
    Étrange, d'autant que dans la BDD le type de 'mesdonnees' est int.
    Et en forçant le typage avec floatval, même erreur.

  6. #6
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Points : 889
    Points
    889
    Par défaut
    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $values[] = 1*$data['mesdonnees'];
    Ça devrait forcer le type.

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Cela force le type mais toujours même erreur.
    Là, je ne comprends pas du tout et ça fait un moment que je suis dessus.

  8. #8
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Points : 889
    Points
    889
    Par défaut
    j'ai testé ton code et il fonctionne tout à fait bien sans besoin de caster ...
    J'ai fais une petite requête pour voir et ce code
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <?php
    require_once ('jpgraph/jpgraph.php');
    require_once ('jpgraph/jpgraph_pie.php');
    require_once("../include/Util.php");
    $connexion = Connexion (NOM,PASSEADMIN,BASE,SERVEUR);
    $req = "SELECT count( * ) AS nb, theme
    FROM data_01
    GROUP BY theme";
    $sql = mysql_query($req);	
    $values = array();
     
    $donnees = array(1,5,8,9,7,7);
     
    while ( $data = mysql_fetch_assoc($sql))
    {
    	$values[] = $data['nb'];
    }
    /*
    echo '<pre>';
    	var_dump($donnees);
    	echo '</pre>';
    echo '<br />';
    echo '<pre>';
    	var_dump($values);
    	echo '</pre>';
    */
     
    $largeur = 600;
    $hauteur = 600;
     
    // Initialisation du graphique
    $graphe = new PieGraph($largeur, $hauteur);
     
    // Creation du camembert
    // $camembert = new PiePlot($donnees);
    $camembert = new PiePlot($values); // avec $donnees cela marche
    // Ajout du camembert au graphique
    $graphe->add($camembert);
     
    // Ajout du titre du graphique
    $graphe->title->set("Titre du graphique");
     
    // Affichage du graphique
    $graphe->stroke();
     
    ?>
    donne le camembert suivant


    Avec $donnees et $values qui valent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    array (size=6)
      0 => int 1
      1 => int 5
      2 => int 8
      3 => int 9
      4 => int 7
      5 => int 7
     
     
    array (size=19)
      0 => string '5' (length=1)
      1 => string '1' (length=1)
      2 => string '4' (length=1)
      3 => string '1' (length=1)
      4 => string '1' (length=1)
      5 => string '13' (length=2)
      6 => string '3' (length=1)
      7 => string '1' (length=1)
      8 => string '6' (length=1)
      9 => string '3' (length=1)
      10 => string '1' (length=1)
      11 => string '1' (length=1)
      12 => string '4' (length=1)
      13 => string '1' (length=1)
      14 => string '2' (length=1)
      15 => string '31' (length=2)
      16 => string '2' (length=1)
      17 => string '2' (length=1)
      18 => string '7' (length=1)
    Images attachées Images attachées  

  9. #9
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    D'où vient l'erreur dans mon code alors ? Je ne saisis pas...

  10. #10
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Points : 889
    Points
    889
    Par défaut
    Je te conseille de repartir de mon code et de le modifier

  11. #11
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Peux-tu me donner data_01 ?

  12. #12
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Points : 889
    Points
    889
    Par défaut
    Ça n'aurait aucun sens.
    Tu dois juste remplacer ma requête par la tienne
    En revanche, si tu postes ta requête, je pourrai en vérifier la syntaxe

  13. #13
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    C’était simplement pour connaitre la structure de ta table et donc pour remplacer avec mes équivalents, comme tu utilises un alias et que je ne connais pas très bien ce concept.

  14. #14
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Points : 889
    Points
    889
    Par défaut
    Poste ta requête si tu veux que je la verifie ou y ajouter un alias

  15. #15
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Citation Envoyé par thearno Voir le message
    […] comme tu utilises un alias et que je ne connais pas très bien ce concept.
    C'est vraiment pas compliqué, c'est juste un renommage.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT count( * ) AS nb, theme
    FROM data_01
    GROUP BY theme

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    $values[] = $data['nb'];

    S'il n'y avait pas l'alias, la donnée s'appellerait "count( * )" (à la casse et aux espaces près – vérifie le nom en faisant print_r($data)) et tu les récupèrerais en écrivant $data['count( * )'].

  16. #16
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2014
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Désolé, je suis un peu perdu...
    Comment modifier ma requête si je ne comprends pas quelle erreur elle contient ?

Discussions similaires

  1. Problème d'affichage de donnée d'une ArrayList dans une ListView
    Par eristoff72 dans le forum Composants graphiques
    Réponses: 84
    Dernier message: 16/01/2017, 13h28
  2. Problème d'affichage des données d'une DataTable
    Par DarkSeiryu dans le forum Windows Forms
    Réponses: 12
    Dernier message: 18/03/2009, 18h01
  3. Réponses: 5
    Dernier message: 02/02/2009, 17h23
  4. Réponses: 3
    Dernier message: 11/10/2007, 13h18
  5. [MySQL] Problème avec affichage des données d'une base MySQL
    Par leclone dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 27/12/2006, 13h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo