Créer un graphique avec jpgraph

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Créer un graphique avec jpgraph

Re: Créer un graphique avec jpgraph

par moogli » 15 août 2013, 14:32

donc, premier test, la requête sql ne retourne aucune ligne, normal qu'il n'y ai pas de graphique :)

et c'est totalement normal car le champ dateArriveCourrier est un varchar et un non un type date, donc month ou year retournent null.

Il te faut changer le type de champ en date.

Un exemple de ce que l'on peux faire avec une procédure stockée le changement de colonne sans perdre les données existantes (utile si tu as une base déja bien fournie.

[mysql]
delimiter /
-- supprime la procédure si elle existe (si tu veux rejouer le script d'installation
drop PROCEDURE modifieServiceCourrier /

create procedure modifieServiceCourrier()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE dt VARCHAR(15);
DECLARE id INT(15);
DECLARE selectCursor CURSOR FOR
SELECT id_sc, dateArriveCourrier from servicecourrier;

DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
-- Ajout d'une colonne temportaire
alter table servicecourrier add column tmp date;

-- on sauvegarde les données existantes dans la colonne temporaire.
open selectCursor;
REPEAT FETCH selectCursor INTO id, dt;

UPDATE servicecourrier SET tmp= str_to_date(dt,'%d/%m/%Y') WHERE id_sc = id;

UNTIL done END REPEAT;

close selectCursor;

-- suppresion de la colonne existante
alter table servicecourrier drop column dateArriveCourrier;

-- modification du nom de la colonne temporaire et déplacement après id_sc.
alter table servicecourrier change tmp dateArriveCourrier date not null after id_sc;
END;
/

delimiter ;[/mysql]

pour l'utiliser

[mysql]CALL modifieServiceCourrier()[/mysql]

ensuite tu peux supprimer la procédure qui ne te sert plus à rien :)

j'ai pas trouvé si l'on pouvais exécuter du code sans créer la procédure (j'ai p'tet mal cherché) d'où la procédure stockée.


@+

Re: Créer un graphique avec jpgraph

par msi79 » 15 août 2013, 00:25

voici la structure de ma table et des données :
-- phpMyAdmin SQL Dump
-- version 4.0.4
-- http://www.phpmyadmin.net
--
-- Client: localhost
-- Généré le: Mer 14 Août 2013 à 22:23
-- Version du serveur: 5.6.12-log
-- Version de PHP: 5.4.16

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Base de données: `bdd`
--

-- --------------------------------------------------------

--
-- Structure de la table `servicecourrier`
--

CREATE TABLE IF NOT EXISTS `servicecourrier` (
  `id_sc` int(15) NOT NULL AUTO_INCREMENT,
  `dateArriveCourrier` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
  `NumEnreg` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
  `nomExpediteur` varchar(200) COLLATE utf8_unicode_ci NOT NULL,
  `dateDuCourrier` datetime NOT NULL,
  `Numorigine` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
  `objetCourrier` text COLLATE utf8_unicode_ci NOT NULL,
  `typeCourrier` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
  `accuseEnAttente` enum('0','1') COLLATE utf8_unicode_ci NOT NULL,
  `accuseEnCours` enum('1','2') COLLATE utf8_unicode_ci NOT NULL,
  `usersCR` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id_sc`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=15 ;

--
-- Contenu de la table `servicecourrier`
--

INSERT INTO `servicecourrier` (`id_sc`, `dateArriveCourrier`, `NumEnreg`, `nomExpediteur`, `dateDuCourrier`, `Numorigine`, `objetCourrier`, `typeCourrier`, `accuseEnAttente`, `accuseEnCours`, `usersCR`) VALUES
(1, '04/07/2013', '799', 'YEDE ALICE', '2013-07-04 15:07:01', '7990', 'representer le ministre', '', '1', '2', 'admin'),
(2, '27/07/2013', '800', 'YEDE ALICE', '2013-07-27 18:24:28', '8000', 'representation', '', '0', '1', 'admin'),
(3, '27/07/2013', '801', 'YAO Christine', '2013-07-27 18:50:06', '8001', 'voir la lettre', '', '0', '1', 'admin'),
(4, '27/07/2013', '802', 'YAO Christine', '2013-07-27 19:13:47', '8002', 'message a rendre', '', '0', '1', 'admin'),
(5, '28/07/2013', '803', 'KOUASSI FLORENCE', '2013-07-28 07:52:08', '8003', 'voir la secretaire', '', '0', '1', 'admin'),
(6, '28/07/2013', '804', 'KOUASSI FLORENCE', '2013-07-28 12:27:52', '8004', 'avoir des info', '', '0', '1', 'admin'),
(7, '28/07/2013', '805', 'YAO Christine', '2013-07-28 17:59:21', '8005', 'ras', '', '0', '1', 'admin'),
(8, '28/07/2013', '806', 'KOUASSI FLORENCE', '2013-07-28 19:03:15', '8006', 'ras', '', '0', '1', 'admin'),
(9, '28/07/2013', '807', 'YEA KASSOUM', '2013-07-28 19:06:24', '8007', 'ras', '', '0', '1', 'admin'),
(10, '28/07/2013', '808', 'TOURE SALIM', '2013-07-28 20:24:06', '8008', 'ras', '', '0', '1', 'admin'),
(11, '29/07/2013', '809', 'YEA KASSOUM', '2013-07-29 11:04:13', '8009', 'pour representer le ministre', '', '0', '1', 'admin'),
(12, '29/07/2013', '810', 'TOURE SALIM', '2013-07-29 17:11:23', '8010', 'REPRESENTATION DE MINISTERE', '', '0', '1', 'msi79'),
(13, '31/07/2013', '811', 'FOFANA carine', '2013-07-31 14:43:16', '8001', 'representer le ministre', '', '1', '2', 'admin'),
(14, '14/08/2013', '812', 'zana', '2013-08-14 19:28:38', '80012', 'ras', '', '0', '1', 'admin');
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Re: Créer un graphique avec jpgraph

par moogli » 14 août 2013, 22:30

Salut,

As tu testé la requête sql seul dans un client sql ? (Phpmyadmin ou autre).

Juste histoire de vérifier que tu as bien des données.

Sinon peux tu fournir la structure de la table et un jeux de données pour test (au pire par mp si tu ne veux pas que cela soit sur le forum).

@+

Re: Créer un graphique avec jpgraph

par msi79 » 14 août 2013, 20:45

oui les données sont deja dans la bd . je reupere les données de la bdd pour faire mes stat

Re: Créer un graphique avec jpgraph

par xTG » 14 août 2013, 20:37

Rien ne se passe dans la bdd, mais y as-tu insérer des données ?
Le code que tu nous montres n'insères rien du tout, il récupères des données de la bdd.

Créer un graphique avec jpgraph

par msi79 » 14 août 2013, 19:27

salue j’écris un code pour insérer des images dans ma base de données . je reçois le message :L'insertion s est bien déroulée ! .mais rien ne ce passe dans la bdd.
merci de bien vouloir m'aider.
voici mon code :
<?php
//http://www.phpfacile.com/creer_un_site_web_en_php/courbes_et_histogrammes_avec_jpgraph_1.php5
require_once("../jpGraph/include_path_inc.php");
include ("../jpGraph/src/jpgraph.php");
include ("../jpGraph/src/jpgraph_line.php");
//set_include_path(get_include_path().PATH_SEPARATOR.
                 //dirname(__FILE__)."/jpgraph/");
//set_include_path(get_include_path().PATH_SEPARATOR.'../../jpGraph/src/');

$tableauAnnees = array();
$tableauNombreVentes = array();
$moisFr = array('JAN', 'FEV', 'MAR', 'AVR', 'MAI', 'JUI', 'JUL', 'AOU', 'SEP', 'OCT', 'NOV', 'DEC');

// *********************
// Production de données
// *********************
// Connexion à la BDD
 mysql_connect("localhost","root","") or die("erreur de connexion");
// Sélection de la base de données
mysql_select_db("bddgescour") or die("Erreur de selection de la BD");

$mysqlQuery = mysql_query("
SELECT  
	MONTH(dateArriveCourrier) AS MOIS, 
	COUNT(NumEnreg) AS NOMBRE_COURRIER 
	
FROM servicecourrier
WHERE YEAR(dateArriveCourrier) = '2013' 
GROUP BY MOIS
") or die('Pb de connexion mysql');


// Initialiser le tableau à 0 pour chaques mois ***********************
$tableauVentes2006 = array(0,0,0,0,0,0,0,0,0,0,0,0); 



while ($row_mois = mysql_fetch_array($mysqlQuery)) {
	$tableauVentes2006[$row_mois['MOIS']-1] = $row_mois['NOMBRE_COURRIER']; 
}

// Contrôler les valeurs du tableau
 printf('<pre>%s</pre>', print_r($tableauVentes2006,1));

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

// Création du conteneur
$graph = new Graph(500,300);

// Fixer les marges
$graph->img->SetMargin(40,30,50,40);    

// Mettre une image en fond
//$graph->SetBackgroundImage("images/mael_white.png",BGIMG_FILLFRAME);

// Lissage sur fond blanc (évite la pixellisation)
$graph->img->SetAntiAliasing("white");

// A détailler
$graph->SetScale("textlin");

// Ajouter une ombre
$graph->SetShadow();

// Ajouter le titre du graphique
$graph->title->Set("Graphique 'courbes' : COURRIER 2013");

// Afficher la grille de l'axe des ordonnées
$graph->ygrid->Show();
// Fixer la couleur de l'axe (bleu avec transparence : @0.7)
$graph->ygrid->SetColor('[email protected]');
// Des tirets pour les lignes
$graph->ygrid->SetLineStyle('dashed');

// Afficher la grille de l'axe des abscisses
$graph->xgrid->Show();
// Fixer la couleur de l'axe (rouge avec transparence : @0.7)
$graph->xgrid->SetColor('[email protected]');
// Des tirets pour les lignes
$graph->xgrid->SetLineStyle('dashed');

// Apparence de la police
$graph->title->SetFont(FF_ARIAL,FS_BOLD,11);

// Créer une courbes
$courbe = new LinePlot($tableauVentes2006);

// Afficher les valeurs pour chaque point
$courbe->value->Show();

// Valeurs: Apparence de la police
$courbe->value->SetFont(FF_ARIAL,FS_NORMAL,9);
$courbe->value->SetFormat('%d');
$courbe->value->SetColor("red");

// Chaque point de la courbe ****
// Type de point
$courbe->mark->SetType(MARK_FILLEDCIRCLE);
// Couleur de remplissage
$courbe->mark->SetFillColor("green");
// Taille
$courbe->mark->SetWidth(5);

// Couleur de la courbe
$courbe->SetColor("blue");
$courbe->SetCenter();

// Paramétrage des axes
$graph->xaxis->title->Set("Mois");
$graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->SetTickLabels($moisFr);

// Ajouter la courbe au conteneur
$graph->Add($courbe);

$graph->Stroke();
?>