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 :

Association PHP, MySQL, JpGraph. [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 67
    Par défaut Association PHP, MySQL, JpGraph.
    Bonjour,

    Tout d'abord, j'espère que je poste ce message au bon endroit, et si ce n'est pas le cas, m'en excuse par avance. Étant donné que ce sujet prend en compte plusieurs choses, je ne savais pas trop...

    Mon problème est le suivant*: Entrer des données dans un graphique JpGraph. Mais ce serait trop facile s'il n'y avait que cela…
    Ma table « compteurs » ressemble à ceci :

    Nom : Sans titre.jpeg
Affichages : 402
Taille : 25,5 Ko

    Chaque jour, si l'imprimante est allumée, un nouveau compteur s'ajoute. Il peut être équivalent à celui de la veille s'il n'y a pas eu d'impression, ou être différent s'il y en a eu.

    Mon objectif est de créer un graphique par imprimante montrant la différence entre chaque compteur, pour voir si les imprimantes sont beaucoup utilisées ou pas.
    En gros si mon compteur du 11/05/14 est à 12000, et celui du 12/05/14 à 12096, il faudrait que j'arrive à calculer cette différence pour que mon histogramme m'affiche une barre équivalente à 96, Puis, si le 13/05/14, le compteur est toujours à 12096, il faudrait que l'histogramme affiche une barre équivalente à 0, puis si le 14/05/14, le compteur est 12150, la barre affichera 54, etc.
    De plus, mon histogramme doit, à chaque fois, afficher les 30 dernières dates.

    Pour l'instant, j'ai réussi à écrire une requête me permettant de récupérer les 30 dernières dates :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT 	compteur AS COMPT,
    	date_releve AS JOUR
    FROM compteurs
    WHERE id_imprimante = 4
    ORDER BY date_releve DESC
    LIMIT 0,30;
    Cette requête a été intégrée dans ce code de JpGraph :

    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    <?php
     
    include ("../jpgraph/src/jpgraph.php");
    include ("../jpgraph/src/jpgraph_bar.php");
     
    define('MYSQL_HOST', 'localhost');
    define('MYSQL_USER', 'root');
    define('MYSQL_PASS', 'a');
    define('MYSQL_DATABASE', 'imprimantes_test');
     
    $tableauDate = array();
    $tableauCompteurs = array();
     
    // ************************************************
    // Extraction des données dans la base de données *
    // ************************************************
     
    $sql = <<<EOF
    	SELECT 	compteur AS COMPT,
    		date_releve AS JOUR
    	FROM compteurs
    	WHERE id_imprimante = 4
    	ORDER BY date_releve ASC
    	LIMIT 0,30
    EOF;
     
    $mysqlCnx = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Problème de connexion mysql');
     
    @mysql_select_db(MYSQL_DATABASE) or die('Problème de sélection de la base');
     
    $mysqlQuery = @mysql_query($sql, $mysqlCnx) or die('Problème de requête');
     
    while ($row = mysql_fetch_array($mysqlQuery,  MYSQL_ASSOC)) 
    {
    	$tableauDate[] = ' ' . $row['JOUR'];
    	$tableauCompteurs[] = $row['COMPT'];
    }
     
    // ***********************
    // Création du graphique *
    // ***********************
     
     
    // Construction du conteneur
    // Spécification largeur et hauteur
    $graph = new Graph(1000,250);
     
    // Réprésentation linéaire
    $graph->SetScale("textlin");
     
    // Ajouter une ombre au conteneur
    $graph->SetShadow();
     
    // Fixer les marges
    $graph->img->SetMargin(40,30,25,40); // Gauche, droit, haut, bas
     
    // Création du graphique histogramme
    $bplot = new BarPlot($tableauCompteurs);
     
    // Spécification des couleurs des barres
    $bplot->SetFillColor(array('red', 'green', 'blue'));
     
    // Une ombre pour chaque barre
    $bplot->SetShadow();
     
    // Afficher les valeurs pour chaque barre
    $bplot->value->Show();
     
    // Fixer l'aspect de la police
    $bplot->value->SetFont(FF_ARIAL,FS_NORMAL,9);
     
    // Modifier le rendu de chaque valeur
    // $bplot->value->SetFormat('%d ventes');
     
    // Ajouter les barres au conteneur
    $graph->Add($bplot);
     
    // Le titre
    $graph->title->Set("Graphique 'HISTOGRAMME' : Compteurs");
    $graph->title->SetFont(FF_FONT1,FS_BOLD);
     
    // Titre pour l'axe horizontal(axe x) et vertical (axe y)
    $graph->xaxis->title->Set("Date");
    $graph->yaxis->title->Set("Impressions par jour");
     
    $graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
    $graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);
     
    // Légende pour l'axe horizontal
    $graph->xaxis->SetTickLabels($tableauDate);
     
    // Afficher le graphique
    $graph->Stroke();
     
    ?>
    J'ai récupéré ce code dans ce tutoriel, et l'ai adapté à mon cas. Le problème est qu'il m'affiche un graphique avec des barres à la même hauteur entre 10000 et 12000 (à moins que l'écart ne soit trop léger pour que la différence puisse se voir).
    Voici l'image du rendu :

    Nom : test_graph_histo_impr.php.png
Affichages : 380
Taille : 7,5 Ko

    Donc il est évident que mon axe des ordonnées prend en compte les compteurs à proprement parler (en même temps, je lui dis de les prendre donc c'est logique). Moi je voudrais qu'il affiche la différence entre chaque jour !

    Encore un dernier point : sur le code que j'ai donné le graphique est beaucoup trop petit pour pouvoir lire les dates complètes. Du coup, il faut que je change la taille à au moins 3000 ! Mais ça ne rentrera jamais sur mon site à la fin… Y'a-t-il un moyen de faire une sorte de déroulement sur le côté ? Je ne sais pas si je me fais comprendre…
    Et pour la date, peut-on l'afficher en format dd/mm plutôt que yyyy-mm-dd ?

    Comment faire ? Je suis totalement perdue…

    Merci par avance !
    Anju

    Edit :
    J'ajoute qu'au final du projet, je dois avoir une page Web avec la liste de toutes mes imprimantes, et quand je clique sur une imprimante, le graphique qui correspond apparaît.
    Est-ce vraiment possible de faire tout ça en ne faisant qu'UNE seule page ?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Août 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 11
    Par défaut
    Oui avec du php et un formulaire.

    Peut être que ca serait mieux de gérer 1 à 1 dans ta boucle while les barres de tableau.

    Je ne connait pas jpGraph...

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 67
    Par défaut
    Le php et le formulaire c'est pour la site web à la fin ? :o

    Ça risque d'être long de faire les barres une à une...

    Je vais attendre de voir si mon problème inspire d'autres personnes !

    Merci pour ta réponse

  4. #4
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 67
    Par défaut
    J'ai finalement réussi à faire la différence entre chaque compteur !

    Du coup, le sujet est réglé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Problème avec Jpgraph+PHP+Mysql
    Par nitro97130 dans le forum PHP & Base de données
    Réponses: 21
    Dernier message: 07/08/2012, 10h04
  2. [Associé] Editeur de jeux web cherche associé Directeur Technique star du PHP-MySQL
    Par emmanuel.dechezelles dans le forum Autres
    Réponses: 0
    Dernier message: 15/06/2012, 17h51
  3. [Associé] Recherche développeur PHP/MySql
    Par mustguar dans le forum Autres
    Réponses: 0
    Dernier message: 09/01/2008, 22h32

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