Comment adapté ma table pour faire un type de graphique

Eléphant du PHP | 106 Messages

22 mai 2012, 22:35

Bonjour je souhaiterai adapté un graphique à ma base que cela fonctionne tout simplement.

Y-a-t-il une solution pour adapté et faire fonctionner ma table vente avec les graph ci-dessous ?

http://www.advsofteng.com/gallery_pie.html



Structure de la table `vente`
  
CREATE TABLE `vente` (
  `id_vente` bigint(20) NOT NULL auto_increment,
  `id_produit` int(11) NOT NULL,
  `quantite` int(11) NOT NULL,
  `prix` float NOT NULL,
  `dates` datetime NOT NULL,
  PRIMARY KEY  (`id_vente`),
  KEY `vente_produit` (`id_produit`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=97 ;
Contenu de la table `vente`
INSERT INTO `vente` VALUES (1, 1, 3521, 0, '2008-01-01 02:02:00');
INSERT INTO `vente` VALUES (2, 1, 4325, 0, '2008-02-01 02:02:01');
INSERT INTO `vente` VALUES (3, 1, 3854, 0, '2008-03-01 02:02:02');
INSERT INTO `vente` VALUES (4, 1, 4002, 0, '2008-04-01 02:02:03');
INSERT INTO `vente` VALUES (5, 1, 4213, 0, '2008-05-01 02:02:04');
INSERT INTO `vente` VALUES (6, 1, 2856, 0, '2008-06-01 02:02:05');
INSERT INTO `vente` VALUES (7, 1, 3842, 0, '2008-07-01 02:02:06');
INSERT INTO `vente` VALUES (8, 1, 4125, 0, '2008-08-01 02:02:07');
INSERT INTO `vente` VALUES (9, 1, 3954, 0, '2008-09-01 02:02:08');
INSERT INTO `vente` VALUES (10, 1, 3845, 0, '2008-10-01 02:02:09');
INSERT INTO `vente` VALUES (11, 1, 3910, 0, '2008-11-01 02:02:10');
INSERT INTO `vente` VALUES (12, 1, 3601, 0, '2008-12-01 02:02:11');
INSERT INTO `vente` VALUES (13, 2, 3856, 0, '2008-01-01 02:02:00');
INSERT INTO `vente` VALUES (14, 2, 4232, 0, '2008-02-01 02:02:01');
INSERT INTO `vente` VALUES (15, 2, 4125, 0, '2008-03-01 02:02:02');
INSERT INTO `vente` VALUES (16, 2, 4102, 0, '2008-04-01 02:02:03');
INSERT INTO `vente` VALUES (17, 2, 3986, 0, '2008-05-01 02:02:04');
INSERT INTO `vente` VALUES (18, 2, 4025, 0, '2008-06-01 02:02:05');
INSERT INTO `vente` VALUES (19, 2, 3965, 0, '2008-07-01 02:02:06');
INSERT INTO `vente` VALUES (20, 2, 4023, 0, '2008-08-01 02:02:07');
INSERT INTO `vente` VALUES (21, 2, 3852, 0, '2008-09-01 02:02:08');
INSERT INTO `vente` VALUES (22, 2, 4015, 0, '2008-10-01 02:02:09');
INSERT INTO `vente` VALUES (23, 2, 4023, 0, '2008-11-01 02:02:10');
INSERT INTO `vente` VALUES (24, 2, 3803, 0, '2008-12-01 02:02:11');
INSERT INTO `vente` VALUES (25, 3, 2508, 0, '2008-01-01 02:02:00');
INSERT INTO `vente` VALUES (26, 3, 2325, 0, '2008-02-01 02:02:01');
INSERT INTO `vente` VALUES (27, 3, 3012, 0, '2008-03-01 02:02:02');
INSERT INTO `vente` VALUES (28, 3, 2931, 0, '2008-04-01 02:02:03');
INSERT INTO `vente` VALUES (29, 3, 2540, 0, '2008-05-01 02:02:04');
INSERT INTO `vente` VALUES (30, 3, 2451, 0, '2008-06-01 02:02:05');
INSERT INTO `vente` VALUES (31, 3, 2365, 0, '2008-07-01 02:02:06');
INSERT INTO `vente` VALUES (32, 3, 2802, 0, '2008-08-01 02:02:07');
INSERT INTO `vente` VALUES (33, 3, 2732, 0, '2008-09-01 02:02:08');
INSERT INTO `vente` VALUES (34, 3, 2412, 0, '2008-10-01 02:02:09');
INSERT INTO `vente` VALUES (35, 3, 2854, 0, '2008-11-01 02:02:10');
INSERT INTO `vente` VALUES (36, 3, 2812, 0, '2008-12-01 02:02:11');
INSERT INTO `vente` VALUES (37, 4, 3945, 0, '2008-01-01 02:02:00');
INSERT INTO `vente` VALUES (38, 4, 3651, 0, '2008-02-01 02:02:01');
INSERT INTO `vente` VALUES (39, 4, 3543, 0, '2008-03-01 02:02:02');
INSERT INTO `vente` VALUES (40, 4, 2968, 0, '2008-04-01 02:02:03');
INSERT INTO `vente` VALUES (41, 4, 3125, 0, '2008-05-01 02:02:04');
INSERT INTO `vente` VALUES (42, 4, 3025, 0, '2008-06-01 02:02:05');
INSERT INTO `vente` VALUES (43, 4, 3211, 0, '2008-07-01 02:02:06');
INSERT INTO `vente` VALUES (44, 4, 2985, 0, '2008-08-01 02:02:07');
INSERT INTO `vente` VALUES (45, 4, 2856, 0, '2008-09-01 02:02:08');
INSERT INTO `vente` VALUES (46, 4, 3012, 0, '2008-10-01 02:02:09');
INSERT INTO `vente` VALUES (47, 4, 2942, 0, '2008-11-01 02:02:10');
INSERT INTO `vente` VALUES (48, 4, 3215, 0, '2008-12-01 02:02:11');
INSERT INTO `vente` VALUES (49, 1, 3245, 0, '2008-01-01 02:02:00');
INSERT INTO `vente` VALUES (50, 1, 4124, 0, '2008-02-01 02:02:01');
INSERT INTO `vente` VALUES (51, 1, 4002, 0, '2008-03-01 02:02:02');
INSERT INTO `vente` VALUES (52, 1, 3845, 0, '2008-04-01 02:02:03');
INSERT INTO `vente` VALUES (53, 1, 4125, 0, '2008-05-01 02:02:04');
INSERT INTO `vente` VALUES (54, 1, 3120, 0, '2008-06-01 02:02:05');
INSERT INTO `vente` VALUES (55, 1, 3456, 0, '2008-07-01 02:02:06');
INSERT INTO `vente` VALUES (56, 1, 4021, 0, '2008-08-01 02:02:07');
INSERT INTO `vente` VALUES (57, 1, 4213, 0, '2008-09-01 02:02:08');
INSERT INTO `vente` VALUES (58, 1, 4036, 0, '2008-10-01 02:02:09');
INSERT INTO `vente` VALUES (59, 1, 3842, 0, '2008-11-01 02:02:10');
INSERT INTO `vente` VALUES (60, 1, 3752, 0, '2008-12-01 02:02:11');
INSERT INTO `vente` VALUES (61, 2, 3512, 0, '2008-01-01 02:02:00');
INSERT INTO `vente` VALUES (62, 2, 3965, 0, '2008-02-01 02:02:01');
INSERT INTO `vente` VALUES (63, 2, 4315, 0, '2008-03-01 02:02:02');
INSERT INTO `vente` VALUES (64, 2, 3956, 0, '2008-04-01 02:02:03');
INSERT INTO `vente` VALUES (65, 2, 4210, 0, '2008-05-01 02:02:04');
INSERT INTO `vente` VALUES (66, 2, 3965, 0, '2008-06-01 02:02:05');
INSERT INTO `vente` VALUES (67, 2, 4256, 0, '2008-07-01 02:02:06');
INSERT INTO `vente` VALUES (68, 2, 4162, 0, '2008-08-01 02:02:07');
INSERT INTO `vente` VALUES (69, 2, 3362, 0, '2008-09-01 02:02:08');
INSERT INTO `vente` VALUES (70, 2, 4102, 0, '2008-10-01 02:02:09');
INSERT INTO `vente` VALUES (71, 2, 3856, 0, '2008-11-01 02:02:10');
INSERT INTO `vente` VALUES (72, 2, 3967, 0, '2008-12-01 02:02:11');
INSERT INTO `vente` VALUES (73, 3, 2921, 0, '2008-01-01 02:02:00');
INSERT INTO `vente` VALUES (74, 3, 2723, 0, '2008-02-01 02:02:01');
INSERT INTO `vente` VALUES (75, 3, 3114, 0, '2008-03-01 02:02:02');
INSERT INTO `vente` VALUES (76, 3, 3124, 0, '2008-04-01 02:02:03');
INSERT INTO `vente` VALUES (77, 3, 2632, 0, '2008-05-01 02:02:04');
INSERT INTO `vente` VALUES (78, 3, 2745, 0, '2008-06-01 02:02:05');
INSERT INTO `vente` VALUES (79, 3, 2845, 0, '2008-07-01 02:02:06');
INSERT INTO `vente` VALUES (80, 3, 2965, 0, '2008-08-01 02:02:07');
INSERT INTO `vente` VALUES (81, 3, 2865, 0, '2008-09-01 02:02:08');
INSERT INTO `vente` VALUES (82, 3, 2563, 0, '2008-10-01 02:02:09');
INSERT INTO `vente` VALUES (83, 3, 2965, 0, '2008-11-01 02:02:10');
INSERT INTO `vente` VALUES (84, 3, 3012, 0, '2008-12-01 02:02:11');
INSERT INTO `vente` VALUES (85, 4, 4032, 0, '2008-01-01 02:02:00');
INSERT INTO `vente` VALUES (86, 4, 4012, 0, '2008-02-01 02:02:01');
INSERT INTO `vente` VALUES (87, 4, 4301, 0, '2008-03-01 02:02:02');
INSERT INTO `vente` VALUES (88, 4, 3501, 0, '2008-04-01 02:02:03');
INSERT INTO `vente` VALUES (89, 4, 3215, 0, '2008-05-01 02:02:04');
INSERT INTO `vente` VALUES (90, 4, 3145, 0, '2008-06-01 02:02:05');
INSERT INTO `vente` VALUES (91, 4, 3352, 0, '2008-07-01 02:02:06');
INSERT INTO `vente` VALUES (92, 4, 3102, 0, '2008-08-01 02:02:07');
INSERT INTO `vente` VALUES (93, 4, 4021, 0, '2008-09-01 02:02:08');
INSERT INTO `vente` VALUES (94, 4, 3521, 0, '2008-10-01 02:02:09');
INSERT INTO `vente` VALUES (95, 4, 3017, 0, '2008-11-01 02:02:10');
INSERT INTO `vente` VALUES (96, 4, 3452, 0, '2008-12-01 02:02:11');

Mammouth du PHP | 1029 Messages

29 mai 2012, 20:04

Ce n'est pas ta table que tu dois modifier, mais faire les bonnes requêtes pour afficher un résultat.

Par exemple la requête suivante, qui ne sert à rien mais qui retourne le pourcentage d'un produit par rapport à tout les produits se trouvant dans ta table, ici c'est basique puisque cela fait 25 %, mais bon
SELECT id_produit,COUNT(id_produit) as nbr_produit,(SELECT COUNT(id_produit) from vente) AS produit_total,(100/(SELECT COUNT(id_produit) from vente))*COUNT(id_produit) AS pourcentage
FROM vente
GROUP BY id_produit

A partir de ce résultat tu peux faire un graphique.
L'expérience est la somme de toutes nos erreurs.

Eléphant du PHP | 106 Messages

30 mai 2012, 22:43

Merci pour la requête sa marche mais comment faire le graphique ? pour afficher un résultat ?

Un beau graphique histo ou autres ?


merci

Mammouth du PHP | 1029 Messages

30 mai 2012, 23:11

Ben comme je ne connais pas cette librairie, je me baserais sur l'exemple anglepie.php et PDO en sachant que je ne sais pas ce que cela donneras.
<?php
require_once("../lib/phpchartdir.php");

$connexion = new PDO("mysql:host='localhost';dbname=tadb", 'utilisateur', 'mot_de_passe'); // connexion à la BDD
 
$resultats=$connexion->query("SELECT id_produit,COUNT(id_produit) AS nbr_produit,(SELECT COUNT(id_produit) FROM vente) AS produit_total,(100/(SELECT COUNT(id_produit) FROM vente))*COUNT(id_produit) AS pourcentage
FROM vente
GROUP BY id_produit"); 
$resultats->setFetchMode(PDO::FETCH_OBJ); // on dit qu'on veut que le résultat soit récupérable sous forme d'objet
while( $ligne = $resultats->fetch() ) // on récupère la liste des membres
{
        # The data for the pie chart
$data[] = $ligne->pourcentage;
# The labels for the pie chart
$labels[] = $ligne->id_produit;
}

# Determine the starting angle and direction based on input parameter
$angle = 0;
$clockwise = true;



# Create a PieChart object of size 280 x 240 pixels
$c = new PieChart(280, 240);

# Set the center of the pie at (140, 130) and the radius to 80 pixels
$c->setPieSize(140, 130, 80);

# Add a title to the pie to show the start angle and direction
if ($clockwise) {
    $c->addTitle("Start Angle = $angle degrees\nDirection = Clockwise");
} else {
    $c->addTitle("Start Angle = $angle degrees\nDirection = AntiClockwise");
}

# Set the pie start angle and direction
$c->setStartAngle($angle, $clockwise);

# Draw the pie in 3D
$c->set3D();

# Set the pie data and the pie labels
$c->setData($data, $labels);

# Explode the 1st sector (index = 0)
$c->setExplode(0);

# Output the chart
header("Content-type: image/png");
print($c->makeChart2(PNG));
?>

L'expérience est la somme de toutes nos erreurs.

Eléphant du PHP | 106 Messages

02 juin 2012, 12:56

J'ai rien à l'écran :cry:
ci joint le message
Attention : require_once (/ lib / phpchartdir.php.). [ function.require-once ]: failed to open stream: Aucun fichier ou répertoire dans C: \ wamp \ www \ IMPORT2014 \ graphique.php en ligne 2 

Fatal error : require_once () [ function.require ]: Failed l'ouverture nécessaire »/ lib / phpchartdir.php.». (include_path = 'C:. \ php5 \ pear') dans C: \ wamp \ www \ IMPORT2014 \ graphique.php sur ligne 2
Je pense qu'il faut faire l'installation mais comment faire pour installer ChartDirector svp pour les graphiques ?
qq'un peut-il m'aider pour l'installation :

http://php.developpez.com/comparatifs/graphismes/
Installation : Pour Windows :
1.	rajouter la ligne extension=phpchartdir421.dll au fichier de configuration php.ini
2.	copier les bibliothèques systèmes (fichiers lib/*.dll) dans le répertoire extensions/ de PHP
3.	copier le script lib/phpchartdir.php dans un répertoire de votre site copie du script PHP qui contient les classes.Cela nécessite d'avoir accès à la configuration système du serveur, utilisation réservée aux possesseurs de serveurs dédiés.
Formats de sortie :	PNG, JPEG, BMP, WBMP et GIF
Ne sais pas ou cela se trouve ? qui peut m'aiguiller ?

merci de votre aide svp car pour rappel j'aimerai effectuer plusieurs graph ect.. depuis la table cmenbert / hito / courbe ect... MERCI

Mammouth du PHP | 1029 Messages

04 juin 2012, 08:23

Ben commencer par acheter cette librairie, puisque c'est avec celle là que vous voulez travailler, vous trouverez alors tout ce qu'il vous faut pour faire l'installation.
L'expérience est la somme de toutes nos erreurs.

Eléphant du PHP | 106 Messages

04 juin 2012, 23:17

Bonjour,
Ben commencer par acheter cette librairie, puisque c'est avec celle là que vous voulez travailler, vous trouverez alors tout ce qu'il vous faut pour faire l'installation.
Je souhaite faire qq chose de gratuit est simple pour l'instant histoire de me familiariser 1-/ BDD 2-/ Requête 3-/ Graphique.

C'est le dernier point que je n'arrive pas à afficher.

Merci si vous pouviez m'aider.

Mammouth du PHP | 1029 Messages

05 juin 2012, 15:33

Ben commence par le début et installe une librairie graphique, personne ne le fera à ta place.
L'expérience est la somme de toutes nos erreurs.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

05 juin 2012, 17:22

Modération :
Afin d'obtenir plus de réponses, le sujet a été déplacé dans un forum plus approprié.

Merci de prendre le temps de lire les règlements
ainsi que l'intitulé de chaque forum avant de poster un nouveau sujet.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 106 Messages

08 juin 2012, 17:05

Bonjour,

Justement pour installer la librairie je n'arrive pas :(

Eléphant du PHP | 106 Messages

09 juin 2012, 12:48

j'ai crée une base de donnée et j'aimerai faire des statistiques.
j'ai vu sur le net que jpgraph et approprié pour cela.
j'ai donc télécharger la version jpgraph-3.0.7.tar.gz . j'ai tenté de suivre les instruction pour son utilisation mais depuis j'arrive pas .
alors je vous décri comment j'ai procédé .
- j'utilise wamp serveur qui se situe sur c:/wamp
- mes fichiers PHP se trouvent dans c:/wamp/www/jpgraph
j'ai crée un dossier jpgraph :c:/wamp/jpgraph
j'ai décompressé le contenu de src qui se trouve dans le dossier jpgraph (c:/wamp/jpgraph)
j'ai verifé la version de PHP qui est 5.3
j'ai vérifie extension=php_gd2.dll qui bien décommenté ---> permis c marqué

Pour m'assurer que ça marche j'ai tenté de suivre sur le site PHP facile un exemple . mais ca m'affiche rien.
alors je me di que le problème se situe au niveau des liens pour acceder au dossier jpgrah.
mon problème est que je sais même pas ou enregistrer le code ci-dessous .
est-ce que je l'enregistrer dans le même dossier jpgraph . en plus comment l'utiliser.

voici le code php prie comme exemple .le lien est :
http://eric-pommereau.developpez.com/tutoriels/decouver...

Mammouth du PHP | 1029 Messages

12 juin 2012, 23:09

Pourtant plus clair que ça http://eric-pommereau.developpez.com/tu ... ction#LI-E.

Cela va être dur.
L'expérience est la somme de toutes nos erreurs.

Eléphant du PHP | 106 Messages

14 juin 2012, 00:00

Merci Maitrepylos de me venir en aide mais voila le point bloquant :

peut être mon code

Voici la composition de mon répertoire:

Emplacement -- > C:\wamp\www\IMPORT2015-JPGOK\monprojet\tutoJpGraph\src --> puis monscriptgraphique.php

monscriptgraphique.php : détail ci-dessous

la requête fonctionne bien dans phpmyadmin,et rien ne s 'affiche à l'"cran pour mon graphique.
J'ai installé la version de JPgraphe / le
GD2 et marqué permis.
Je vous ai mis la table, la requête , le dossier pour ce connecter, maintenant comment faire ? si c simple j'aimerais comprendre ou est mon erreur ?

Merci pour votre aide



<?php
// ********************************************************************
// PARTIE : Includes et initialisation des variables
// ********************************************************************
 
// Inclusion de la librairie JpGraph
//include ("../jpGraph/jpgraph.php");
//include ("../jpGraph/jpgraph_pie.php");
 
//include ("../jpGraph/src/jpGraph.php");
//include ("../jpGraph/src/jpGraph_pie.php");
 
//require_once ("C:\wamp\www\IMPORT2015-JPGOK\monprojet\tutoJpGraph\src\jpgraph.php");
//require_once ("C:\wamp\www\IMPORT2015-JPGOK\monprojet\tutoJpGraph\src\jpgraph_pie.php");
//include ("/jpGraph/jpgraph.php");
 
//include ( "../tutoJpGraph/src/jpgraph.php");
//include ("../tutoJpGraph/src/jpgraph_pie.php")
 
include ("../IMPORT2015-JPGOK/monprojet/tutoJpGraph/src/jpgraph.php"); 
include ("../IMPORT2015-JPGOK/monprojet/tutoJpGraph/src/jpgraph_pie.php");
 
// Constantes (connection mysql)
define('MYSQL_HOST', 'localhost');
define('MYSQL_USER', 'root');
define('MYSQL_PASS', '');
define('MYSQL_DATABASE', 'tutoriel');
 
// Tableaux de données destinées à JpGraph
$tableauAnnees = array();
$tableauNombreVentes = array();
 
// ********************************************************************
// PARTIE : Production des données avec Mysql
// ********************************************************************
 
$sql = <<<EOF
	SELECT  
		YEAR(`DTHR_VENTE`) AS ANNEE,
		COUNT(ID) AS NBR_VENTES  
	FROM `ventes`
	GROUP BY YEAR(`DTHR_VENTE`)
EOF;
 
// Connexion à la BDD
$mysqlCnx = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Pb de connxion mysql');
 
// Sélection de la base de données
@mysql_select_db(MYSQL_DATABASE) or die('Pb de sélection de la base');
 
// Requête
$mysqlQuery = @mysql_query($sql, $mysqlCnx) or die('Pb de requête');
 
// Fetch sur chaque enregistrement
while ($row = mysql_fetch_array($mysqlQuery,  MYSQL_ASSOC)) {
	// Alimentation des tableaux de données
	$tableauAnnees[] = 'Année ' . $row['ANNEE'];
	$tableauNombreVentes[] = $row['NBR_VENTES'];
}
 
// ********************************************************************
// PARTIE : Création du graphique 
// ********************************************************************
 
// On spécifie la largeur et la hauteur du graphique conteneur 
$graph = new PieGraph(400,300);
 
// Titre du graphique
$graph->title->Set("Volume des ventes par années");
 
// Créer un graphique secteur (classe PiePlot)
$oPie = new PiePlot($tableauNombreVentes);
 
// Légendes qui accompagnent chaque secteur, ici chaque année
$oPie->SetLegends($tableauAnnees);
 
// position du graphique (légèrement à droite)
$oPie->SetCenter(0.4); 
 
$oPie->SetValueType(PIE_VALUE_ABS);
 
// Format des valeurs de type entier
$oPie->value->SetFormat('%d');
 
// Ajouter au graphique le graphique secteur
$graph->Add($oPie);
 
// Provoquer l'affichage (renvoie directement l'image au navigateur)
$graph->Stroke();
?>

ViPHP
ViPHP | 2577 Messages

14 juin 2012, 08:56

Je n'ai pas le temps de répondre entièrement à ton problème.

Par contre sur la méthode, tu devrais commencer par faire des graphiques simple comme un rectangle de couleur, un trait... ensuite tu pourras mettre ensemble les petites fonctions réalisées pour faire tes beaux graphiques. Rien sert sert de vouloir de suite faire un graphique complexe à partir de base de données.

Mammouth du PHP | 1029 Messages

14 juin 2012, 16:03

La requête SQL n'est pas correcte.

Essaye d'abord avec de données dans un tableau que tu remplis toi même.
L'expérience est la somme de toutes nos erreurs.