Créez des graphiques dynamiques à partir de MySQL

- 25 août 2018 à 22:36 - Dernière réponse :
Messages postés
23250
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 novembre 2018
- 30 août 2018 à 09:32
Bonjour,
pour mon projet, j'ai crée un un ensemble de tickets (objets) et j'ai les enregistré dans ma base de données à partie d'un formulaire.
Un Ticket à attribut priorité : { urgent, moyenne, baisse }
Maintenant je veux créer un graphe a partir des valeurs enregistrées dans ma base de données et je ne sais pas comment faire pour récupérer les valeurs de ma base de données pour créer le graphe en temps réel
c'est à dire je veux afficher les rapports de Volumes (nombre de Tickets dont l'état est urgent, nombre de Tickets dont l'état est moyenne , nombre de Tickets dont l'état est baisse )

sachant que j'use le framework Symfony 3.4 .

merci
Afficher la suite 

Votre réponse

8 réponses

Messages postés
5
Date d'inscription
mercredi 29 août 2018
Dernière intervention
29 août 2018
- Modifié par jordane45 le 29/08/2018 à 19:55
-1
Merci
1 - Créez la base de données
Dans cet exemple, nous représentons les ventes d'une société sur l'année. La table "ventes" comporte deux champs : "mois" et "ca" (chiffre d'affaires). Pour créer cette table, connectez-vous à MySQL au travers de PHPmyAdmin, créez une nouvelle base intitulée "ventes", puis une table du même nom.Ajoutez le champ "mois", en précisant comme type de données "varchar(10)", puis procédez de même pour créer le champ "ca" qui sera de type "integer(10)". Lorsque votre structure de base de données est créée, ajoutez les paramètres d'une année, soit manuellement, soit en exécutant une requête "Insert into". Elle devra avoir la forme : "INSERT IGNORE INTO ventes VALUES('Janvier','125000');".
2 - Récupérez les informations de la base
Lorsque votre base de données est créée, vous devez ensuite récupérer différentes informations utilisables pour les représentations graphiques. Créez un composant du nom de "donnees.php" et connectez-vous à la base à l'aide de l'instruction "mysql_connect()" en précisant le nom du serveur, le login et le mot de passe de l'administrateur. La connexion entre le serveur d'application et la base de données étant établie, sélectionnez la table sur laquelle vous allez travailler à l'aide de "mysql_select_db". Vous devez ensuite effectuer deux requêtes sur les informations.La première consiste à calculer le chiffre d'affaires total sur l'année ainsi que le meilleur mois de ventes. Vous pouvez effectuer ces deux calculs dans la même requête afin de simplifier le code et d'améliorer les performances. Appuyez-vous pour cela sur une requête du type "SELECT SUM(ca),MAX(ca) FROM ventes". Exécutez l'ordre à l'aide de l'instruction "mysql_query" puis conservez le résultat dans une variable temporaire que vous appellerez "$res" (pour résultat). Il ne vous reste plus qu'à affecter à la variable "$totalmax" le résultat de "SUM(ca)" et à la variable "$maxca", le résultat de "MAX(ca)".Pour faciliter les manipulations, vous allez stocker le reste des données (mois et chiffre d'affaires correspondant) dans un tableau. Commencez par sélectionner les informations dans la base, puis stockez-les dans une variable temporaire. Utilisez ensuite une boucle "While" pour entreposer dans chaque ligne du tableau les critères correspondant à un mois d'activité. Déclarez le tableau "$data" et affectez les mois à "$data[$i][0]" (la première colonne du tableau). Procédez de même pour les chiffres d'affaires que vous stockerez dans "$data[$i][1]" (la seconde colonne du tableau).
3 - Prévoyez la réutilisation du code
Avant d'écrire le code qui est chargé de représenter les informations, vous devez architecturer votre développement de façon à pouvoir le réutiliser dans plus d'une page. Les fonctions PHP ont été conçues pour cela. Il s'agit simplement d'encapsuler un bout de code PHP dans une sorte de container vers lequel on peut transmettre des variables. Celui-ci exécute ensuite ses instructions et renvoie un résultat.Cette approche facilite la maintenance du site et permet de factoriser le code tout en simplifiant les développements. Comme vous allez créer deux fonctions, nommez votre fichier "lib.graphi que.php" pour bien montrer qu'il s'agit d'un fichier qui stocke un ensemble de fonctions portant sur le même thème.
4 - Affichez les données sous forme de graphique
La première fonction va représenter les données dans un histogramme. Pour cela, elle a besoin d'un certain nombre de paramètres : $data (mois et chiffres d'affaires), $maxca (le CA du meilleur mois), $i (le nombre de mois), $cf (la couleur du fond du graphique) et $titre (le titre du graphique). Ces paramètres sont passés dans la ligne "function Graphique($data,$maxca,$i,$cf,$titre)". Définissez la couleur de fond du graphique à l'aide d'un tableau HTML et de la propriété "bgcolor". Insérez le titre du graphique entre le premier et le second tableau.Vous êtes maintenant prêt à créer les histogrammes. Ils sont construits dans une colonne HTML (). Chacune d'elles comporte trois informations : le chiffre d'affaires en K?, le mois et une image. Définissez la hauteur de l'image en pourcentage en calculant le rapport "ca/camax". Il ne vous reste plus qu'à inclure ce traitement dans une boucle pour traiter l'ensemble des mois. Pour que la fonction retourne un résultat, ajoutez la ligne "return ($graph);".
5 - Présentez les informations dans un tableau
La création du tableau suit la même logique. Une boucle aide à créer les 12 lignes du tableau en indiquant à chaque fois le mois ($data[$i][0]), le chiffre d'affaires ($data[$i][1]), le pourcentage que représente le chiffre d'affaires du mois par rapport au total de l'année. La boucle "While" parcourt le tableau ligne après ligne.Vous pouvez en profiter pour effectuer quelques traitements conditionnels au passage. Surlignez par exemple le meilleur mois en l'affichant en vert si le CA du mois est égal au plus gros mois de l'année : "if ($maxca==$data[$i][1])". Vous pouvez aussi ajouter une représentation graphique du rapport chiffre d'affaires du mois sur total de l'année. Ce n'est alors plus la hauteur, mais la largeur de l'image qui sera variable.
6 - Utilisez la librairie
Pour créer la page qui affichera les graphiques, il vous suffit d'inclure les différentes librairies (donnees.php et lib.graphique.php) et d'appeler les fonctions que vous souhaitez utiliser. C'est également dans ce script que vous devez préciser les paramètres de présentation tels que le titre du graphique et/ou du tableau et la couleur de fond.
Les outils utilisés
Apache 1.3.x
PHP 4.x
mySQL 3.2x
Un éditeur de texte de type Notepad.exe
Un navigateur

Pour en savoir +
phpinfo.net/phorum/
Le forum de la communauté ************ regorge de développeurs de tous niveaux. Tous se font un point d'honneur de s'entraider, et il est rare qu'une question ne trouve pas sa réponse au bout de quelques minutes. Lorsque vous bloquez sur un point précis, après avoir parcouru pendant des heures la documentation PHP, n'hésitez pas à vous y rendre pour trouver de l'aide.
Messages postés
23250
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 novembre 2018
> nejeh - 29 août 2018 à 16:25
Si j'avais eu la réponse.... elle serait déjà écrite dans la discussion...
désolé.
après... ta question n'est pas super précise....
Tu bloques sur quoi exactement ? La récupération des données dans la BDD.... ou bien la génération d'un graphique à partir de ces données ?
Visiblement tu pourrais t'orienter vers le bundle https://packagist.org/packages/ob/highcharts-bundle
https://github.com/marcaube/ObHighchartsBundle/blob/HEAD/Resources/doc/usage.md
Merci pour ton aide, mais j'ai besoin d'une solution symfony 3.4, si vous avez une idée merci de me répondre!
Messages postés
23250
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 novembre 2018
> nejeh - 29 août 2018 à 19:55
Il me semble que ce bundle fonctionne aussi en synfony 3

Mais bon.. sinon il y a aussi
https://github.com/cmen/CMENGoogleChartsBundle/blob/master/Resources/doc/installation.md

Après... je ne suis pas là pour remplacer ton moteur de recherches... même si ça ne m'a pris que 30 petites secondes de recherche pour chacun des liens que je t'ai donné....

Bonne continuation.
nejeh >
Messages postés
23250
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 novembre 2018
- 30 août 2018 à 09:25
Merci beaucoup moi j'ai trouvé 2 bundles qui font ça mais je suis bloqué sur la génération d'un graphique à partir de ces données ?
Messages postés
23250
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 novembre 2018
> nejeh - 30 août 2018 à 09:32

moi j'ai trouvé 2 bundles qui font ça mais je suis bloqué sur la génération d'un graphique à partir de ces données

Oui et ??

Tu es bloqué... c'est à dire ?
ça manque clairement de détail .... comment espères tu qu'on puisse te répondre ?
Par exemple :
Quel bundle as tu choisi ? Qu'as tu commencé à faire ? Sur quoi bloques tu exactement ???
Commenter la réponse de gigoballeto

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.