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

PHP & Base de données Discussion :

Création d'un graphique à partir de données d'une table


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Décembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2018
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Création d'un graphique à partir de données d'une table
    Bonjour,

    Je rencontre quelques difficultés, j'essaye de faire un graph en fonction de données contenues dans une table.


    [FONCTIONNEL]
    Dans un premier temps j'ai fait une petite page qui me permet d'afficher ma table pour vérifier que j'arrivais à le faire


    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
    43
    44
    45
    46
    47
     
    <html>
    <head>
    <title> </title>
    </head>
    <body>
     
     
    <?php
    echo "************************************************<br/>";
    echo "Affichage des données en base                     <br/>";
    echo "************************************************<br/>";
    echo "                                                <br/>";
     
    $dsn = 'mysql:host=127.0.0.1;dbname=DB;port=3306;charset=utf8';
     
    // Création et test de la connexion
    try {
    $pdo = new PDO($dsn,'LOGIN','PWD');
    }
    catch (PDOException $exception) {
    mail('MAIL', 'PDOException', $exception->getMessage());
    exit('Erreur de connexion à la base de données');
    }
     
    // Requête pour tester la connexion
     
    $query = $pdo->query("SELECT *  FROM `MA_TABLE`");
     
    $resultat = $query->fetchAll();
     
    //Afficher le résultat dans un tableau
    print("<table border=\"1\">");
    foreach ($resultat as $key => $variable)
    {
    print("<tr>");
    print("<td>".$resultat[$key]['temps']."</td>");
    print("<td>".$resultat[$key]['ping']."</td>");
    }
     
    print("</table>");
     
     
    ?>
     
    </body>
    </html>
    Nom : tableau.jpg
Affichages : 701
Taille : 91,3 Ko

    Jusque la pas de problème.

    Dans un second temps j'ai installé un pluggin JPGraphic
    Avec lequel j'ai joué et j'ai réussi à sortir un graph mais avec des valeurs fixes

    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
     
    <?php
     
    // content="text/plain; charset=utf-8"
     
    require_once ('/var/www/html/jpgraph/src/jpgraph.php');
    require_once ('/var/www/html/jpgraph/src/jpgraph_line.php');
     
    // Some (random) data
    $ydata = array(1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0);
     
    // Size of the overall graph
     
    $width=500;
    $height=250;
     
     
    // Create the graph and set a scale.
    // These two calls are always required
     
    $graph = new Graph($width,$height);
    $graph->SetScale('intlin');
     
     
    // Create the linear plot
    $lineplot=new LinePlot($ydata);
     
    // Add the plot to the graph
    $graph->Add($lineplot);
     
    // Display the graph
    $graph->Stroke();
     
    ?>
    Nom : graph.jpg
Affichages : 672
Taille : 15,3 Ko
    [FIN DU FONCTIONNEL]

    La ou ca se corse c'est quand j'essaye d'intégrer les 2 ensembles ....


    J'ai tenté ca :

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    <?php
     
    // content="text/plain; charset=utf-8"
     
    require_once ('/var/www/html/jpgraph/src/jpgraph.php');
    require_once ('/var/www/html/jpgraph/src/jpgraph_line.php');
     
     
    $dsn = 'mysql:host=127.0.0.1;dbname=DB;port=3306;charset=utf8';
     
    // Création et test de la connexion
     
    try {
     
    $pdo = new PDO($dsn,'LOGIN','PWD');
     
    }
    catch (PDOException $exception) {
     
     mail('MAIL', 'PDOException', $exception->getMessage());
     exit('Erreur de connexion à la base de données');
     
    }
     
    // Requête pour tester la connexion
     
     
    $query = $pdo->query("SELECT ping  FROM `MA_TABLE`");
    $resultat = $query->fetchAll();
     
    // Some (random) data
    //$ydata = array(1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0);
     
    // Size of the overall graph
     
    $width=500;
    $height=250;
     
     
    // Create the graph and set a scale.
    // These two calls are always required
     
    $graph = new Graph($width,$height);
    $graph->SetScale('intlin');
     
    foreach ($resultat as $key => $variable)
    {
     
    // Create the linear plot
    $lineplot=new LinePlot($resultat[$key]['ping']);
     
    // Add the plot to the graph
    $graph->Add($lineplot);
    }
     
     
    // Display the graph
     
    $graph->Stroke();
     
    ?>

    Et là c'est la cata ...

    Nom : courbe_hs.jpg
Affichages : 644
Taille : 10,8 Ko

    Au cas ou :
    PHP 7
    MariaDB
    JPGraph 4.2.6

    PS : J'ai hésiter à poster directement ds JPGraph mais je pense avoir plus de réponse ici

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Es-tu sûr que les données sont bien ramenées ?

    Avant toute chose, s'assurer que les données sont bien présentes.
    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
    
    foreach ($resultat as $key => $variable)
    {
     var_dump($resultat[$key]['ping']);
    
    
     var_dump($variable);
    // Create the linear plot
    //$lineplot=new LinePlot($resultat[$key]['ping']);
     
    // Add the plot to the graph
    //$graph->Add($lineplot);
    }
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  3. #3
    Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Décembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2018
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Oui et non, ta réponse me fait penser que tu penses que mes variables ne sont pas bonnes (j'ai anonymisé une partie mais je n'ai pas fait sur celle ci ^^)

    Les données sont bien présentes dans le premier tableau, dans le 1er script donc mes variables sont bonnes, je pense que mon problème est plus sur la partie boucle et affichage des points ... Mais je n'arrive pas à trouver :/

  4. #4
    Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Décembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2018
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Du coup ta réponse m'a permis d'avancer ...

    En fait j'ai modifié la requete ligne 51

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    
    <?php
    
    // content="text/plain; charset=utf-8"
    
    require_once ('/var/www/html/jpgraph/src/jpgraph.php');
    require_once ('/var/www/html/jpgraph/src/jpgraph_line.php');
    
    
    $dsn = 'mysql:host=127.0.0.1;dbname=DBNAME;port=3306;charset=utf8';
    
    // Création et test de la connexion
    
    try {
    
    $pdo = new PDO($dsn,'LOGIN','PWD');
    
    }
    catch (PDOException $exception) {
    
     mail('MAIL', 'PDOException', $exception->getMessage());
     exit('Erreur de connexion à la base de données');
    
    }
    
    // Requête pour tester la connexion
    
    
    $query = $pdo->query("SELECT ping  FROM `ping_snoopy`");
    $resultat = $query->fetchAll();
    
    // Some (random) data
    //$ydata = array(1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0);
    
    // Size of the overall graph
    
    $width=500;
    $height=250;
    
    
    // Create the graph and set a scale.
    // These two calls are always required
    
    $graph = new Graph($width,$height,"auto");
    $graph->SetScale('intlin');
    
    foreach ($resultat as $key => $variable)
    {
    
    // Create the linear plot
    $lineplot=new LinePlot($resultat[$key]);
    
    // Add the plot to the graph
    $graph->Add($lineplot);
    }
    // Display the graph
    $graph->Stroke();
    
    ?>

    J'obtiens ceci du coup

    Nom : courbe_hs2.jpg
Affichages : 646
Taille : 9,4 Ko

  5. #5
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    $resultat[$key] retourne un tableau. Comme je m’y attendais Lineplot attend 2 paramètres x et y.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  6. #6
    Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Décembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2018
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par badaze Voir le message
    $resultat[$key] retourne un tableau. Comme je m’y attendais Lineplot attend 2 paramètres x et y.
    Alors à priori (je ne suis pas sure de moi il y a bien longtemps que je n'ai pas fait ca), je dirais oui à cette affirmation :$resultat[$key] retourne un tableau.

    Par contre à l'autre j'en suis moins sure puisque quand je mets des valeurs fixes (dans le 2eme code et en laissé en commentaire ds le 3ème fichier) j'ai bien mes points. A priori c'est $graph->SetScale('intlin'); qui fait que l'on a les données X

  7. #7
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Tu as un exemple fonctionnel avec des données aléatoire.

    Pourquoi quand tu passe à des données réelle tu ne fais plus la même chose ?

    La seule chose à faire c'est prendre l'exemple qui marche et remplacer les données aléatoire par des données qui viennent de ta base. Tu auras éventuellement un formatage à faire en fonction de comment tu extrais tes données , mais au aucun cas il faut recréer plusieurs lineplot dans une boucle ...

    Un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ydata = $query->fetchAll(PDO::FETCH_COLUMN, 0);
    devrait pas être loin de suffire je pense.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Décembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2018
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par grunk Voir le message
    Tu as un exemple fonctionnel avec des données aléatoire.

    Pourquoi quand tu passe à des données réelle tu ne fais plus la même chose ?
    En fait j'ai découpé en plusieurs étapes ce que je voulais faire car il y a longtemps que je n'ai pas codé.
    Donc j'ai commencé par voir si j'arrivais a extraire mes données de la base en les affichant simplement (premiere fichier ds ma demande)
    Puis j'ai essayé de faire un graphique avec des données fixes bidons (deuxieme fichier ds ma demande)
    Et j'ai ensuite essayé de brancher ma base de données sur le graphique ... Et la cata

    Citation Envoyé par grunk Voir le message
    La seule chose à faire c'est prendre l'exemple qui marche et remplacer les données aléatoire par des données qui viennent de ta base. Tu auras éventuellement un formatage à faire en fonction de comment tu extrais tes données , mais au aucun cas il faut recréer plusieurs lineplot dans une boucle ...

    Un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ydata = $query->fetchAll(PDO::FETCH_COLUMN, 0);
    devrait pas être loin de suffire je pense.
    J'essaye de suite je te redis.

  9. #9
    Candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Décembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2018
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Magnifique

    Nom : shema_presque_ok.jpg
Affichages : 651
Taille : 18,6 Ko

    Maintenant je m'attaque à ma dernière étape, que l'axe des Y soit des valeurs en base également

    Merci pour ton aide grunk

Discussions similaires

  1. Réponses: 10
    Dernier message: 06/04/2015, 22h30
  2. [Débutant] Créer un graphique à partir des données d'une combobox
    Par Rockafeller dans le forum VB.NET
    Réponses: 0
    Dernier message: 20/10/2013, 00h22
  3. Dessiner des graphiques à partir des données d'une BD MySQL
    Par condor_01 dans le forum Général Java
    Réponses: 6
    Dernier message: 24/04/2008, 09h35
  4. Réponses: 1
    Dernier message: 10/10/2007, 10h42
  5. Réponses: 4
    Dernier message: 05/07/2006, 15h47

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