CRÉATION D'UN GRAPHIQUE AVEC DES STATISTIQUES MYSQL (RELOAD OU NON) OPTIONS UTIL
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 2013
-
16 mai 2005 à 11:35
kegi
Messages postés164Date d'inscriptionjeudi 23 octobre 2003StatutMembreDernière intervention25 août 2008
-
22 févr. 2008 à 02:45
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
kegi
Messages postés164Date d'inscriptionjeudi 23 octobre 2003StatutMembreDernière intervention25 août 2008 22 févr. 2008 à 02:45
Bonjour,
bon, ça fait longtemps que j'ai fait cette source, c'est merdique,
je te conseil de t'en faire une en php5, ensuite, utilise le ajax pour rafraichir,
mais, avec un graphique à bandes, il est inutile de rafraichir aussi souvent, si tu as un graphique à ligne brisé, là, ça peut être intéressant.
mais... au 5 secondes, si tu as beaucoup de visiteurs, ça doit rallentir un peu ton serveur, non ?
Cordiallement,
Kevin
superslouma
Messages postés12Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention16 mai 2008 26 juil. 2006 à 13:31
Merci coockiesch pour ton script .
je suis entrain de produire un script semblable. mais je veux que le graphique soit automatiquement mis à jours.
par exemple chaque 5 secondes se passe une actualisation.
j'ai essayé avec history.go(0) au niveau du html mais ça a foirrrrréééé.
Si quelqu'un peut m'aider...
kegi
Messages postés164Date d'inscriptionjeudi 23 octobre 2003StatutMembreDernière intervention25 août 2008 6 févr. 2006 à 08:57
Tu as raison, j'était dans ma phase "je sais appuyer sur un bouton donc j'envoie n'importe quelle source bidon" un tableau aurait été mieux qu'une boucle ici... Merci quand même du commentaire ;)
Cordialement,
Kevin (kegi@hotmail.com)
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 5 févr. 2006 à 14:37
t'as oublié tout les or die() pour est erreurs de connexions et de requettes !
kegi
Messages postés164Date d'inscriptionjeudi 23 octobre 2003StatutMembreDernière intervention25 août 2008 4 nov. 2005 à 04:47
Salut,
tu doit afficher le fichier php en image...
ex:
Je te donne cette réponse en suposant que tu débute en php, si je me trompe et que l'erreur n'est pas à cette endroit, dit moi ;)
cordialement,
kevin (kegi@hotmail.com)
oki972
Messages postés35Date d'inscriptionsamedi 1 novembre 2003StatutMembreDernière intervention11 octobre 2007 18 oct. 2005 à 22:28
salut!!
J'utilise ta source pour essayer de faire un petit module de statistiques. Je prends chaque mois de l'année et je calcule ce que j'ai dépensé pour mes interventions.
Malheureusement le graphique ne sort pas, j'cherche mais je trouve pas, peut-on m'aider?
Voici ma source :
<?php
header ("Content-type: image/png"); //on entre en mode image
$m = date("m"); //numéro du mois
$a = date("Y"); //année
//Pour tous les mois de l'année on va calculer le cout engendrer !
for($i=1;$i<=12;$i++){
$nbJours_sql2 = nbjour($i,$a);
if ($i<10) $m = "0".$i; else $m=$i;
$premierjour_sql = "$a"."-"."$m"."-"."01";
$dernierjour_sql = "$a"."-"."$m"."-"."$nbJours_sql2";
//maintenant qu'on les dates concernées pour chaque mois on peut faire notre requete
$req0 mysql_query("SELECT * from dbinterventions p ,dbplanning q WHERE p.int_ID q.pla_IDIntervention AND p.int_Date>='$premierjour_sql' and p.int_Date<='$dernierjour_sql'");
//
$total = 0;
$cout = 0;
while ($rs = mysql_fetch_object($req0)) {
//
$heuredeb = $rs->pla_HeureDebut;
$heurefin = $rs->pla_HeureFin;
$heuredeb = substr($heuredeb,0,5);
$heuredeb = str_replace(':','',$heuredeb);
$heurefin = substr($heurefin,0,5);
$heurefin = str_replace(':','',$heurefin);
if ($heurefin!=0) {
if ($heurefin<=$heuredeb) {
//Etape 1
$hfin = substr($heurefin,0,2);
$mfin = substr($heurefin,2,2);
$heurefin = $hfin+($mfin/60);
$tampon_duree = $heurefin - $minuit;
//Etape 2
$minuit2=24;
$hdeb = substr($heuredeb,0,2);
$mdeb = substr($heuredeb,2,2);
$heuredeb = $hdeb+($mdeb/60);
$tamponduree2 = $minuit2 - $heuredeb;
//Totalisons...
$duree = $tampon_duree+$tamponduree2;
$cout = $rs->pla_Coefficient * $rs->pla_TauxHoraire * round($duree,2);
}else{
$hdeb = substr($heuredeb,0,2);
$mdeb = substr($heuredeb,2,2);
$hfin = substr($heurefin,0,2);
$mfin = substr($heurefin,2,2);
//Maintenant on transforme les deux o format décimal ..
//Pour cela, on divise les minutes par 60 et on arrondi au centième
$heuredeb = $hdeb+($mdeb/60);
$heurefin = $hfin+($mfin/60);
$duree = $heurefin-$heuredeb;
//Cout
$cout = $rs->pla_Coefficient * $rs->pla_TauxHoraire * round($duree,2);
}
}else{
$duree=0;
//Cout
$cout = $rs->pla_Coefficient * $rs->pla_TauxHoraire * round($duree,2);
}
//echo $cout;
$total = $total + $cout;
}
//
$mois[$i] = round($total,2);
// exit;
$largeurImage = 700; //largeur du graphique
$hauteurImage = 300; //hauteur du graphique
$topmonth = $top; //Pour mettre la colone la plus haute en rouge
$top = ($top + 1000); //une marge d'erreur pour voir les chiffres en dessus des colones
$im = ImageCreate($largeurImage, $hauteurImage) //on créer l'image
or die ("Erreur lors de la création du graphique");
$blanc = ImageColorAllocate ($im, 255, 255, 255); //couleurs préfaite...
$noir = ImageColorAllocate ($im, 0, 0, 0);
$bleu = ImageColorAllocate ($im, 0, 0, 255);
$rouge = ImageColorAllocate ($im, 255, 0, 0);
ImageLine ($im, 10, $hauteurImage-10, $largeurImage-10, $hauteurImage-10, $noir);
for ($mois=1; $mois<=12; $mois++) { //assosiation des lettre avec les numéro de mois, encore là surement pas la meilleure facon mais ça marche ...
for ($mois=1; $mois<=12; $mois++) { //dessinage des colones...
if($visites[$mois-1]==$topmonth){ //si c'est la plus haute ou égale : Rouge
$hauteurImageRectangle = round(($visites[$mois-1]*$hauteurImage)/$visitesMax);
ImageFilledRectangle ($im, $mois*30-7, $hauteurImage-$hauteurImageRectangle, $mois*30+7, $hauteurImage-10, $rouge);
ImageString ($im, 0, $mois*30-7, $hauteurImage-$hauteurImageRectangle-10, $visites[$mois-1], $rouge);
}else{ //sinon Bleu
$hauteurImageRectangle = round(($visites[$mois-1]*$hauteurImage)/$visitesMax);
ImageFilledRectangle ($im, $mois*30-7, $hauteurImage-$hauteurImageRectangle, $mois*30+7, $hauteurImage-10, $bleu);
ImageString ($im, 0, $mois*30-7, $hauteurImage-$hauteurImageRectangle-10, $visites[$mois-1], $rouge);
}
}
ImagePng ($im); //affichage de l'image ...
mysql_close(); //fermeture de la connexion mysql
?>
kegi
Messages postés164Date d'inscriptionjeudi 23 octobre 2003StatutMembreDernière intervention25 août 2008 17 mai 2005 à 01:17
Merci pour ton commentaire constructif ;)
cordialement,
kegi@hotmail.com
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 16 mai 2005 à 11:35
Salut!
Pas tout le temps de regarder mais deux petites remarques: Pour commencer, il faut tester les retours mysql ( connextion, sélection de base, query, ... )
if(!@mysql_connect($host,$user,$pass) || !@mysql_select_db("Base"))
die('Erreur');
Idem pour les requêtes
Pour les mois, tu peux faire:
$mois_lettres = array('J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D');
$mois_lettre = $mois_lettres[ $mois - 1];
22 févr. 2008 à 02:45
bon, ça fait longtemps que j'ai fait cette source, c'est merdique,
je te conseil de t'en faire une en php5, ensuite, utilise le ajax pour rafraichir,
mais, avec un graphique à bandes, il est inutile de rafraichir aussi souvent, si tu as un graphique à ligne brisé, là, ça peut être intéressant.
mais... au 5 secondes, si tu as beaucoup de visiteurs, ça doit rallentir un peu ton serveur, non ?
Cordiallement,
Kevin
26 juil. 2006 à 13:31
je suis entrain de produire un script semblable. mais je veux que le graphique soit automatiquement mis à jours.
par exemple chaque 5 secondes se passe une actualisation.
j'ai essayé avec history.go(0) au niveau du html mais ça a foirrrrréééé.
Si quelqu'un peut m'aider...
6 févr. 2006 à 08:57
Cordialement,
Kevin (kegi@hotmail.com)
5 févr. 2006 à 14:37
#
# if($mois=="1"){ $mois_lettre = "J"; }
#
# if($mois=="2"){ $mois_lettre = "F"; }
#
# if($mois=="3"){ $mois_lettre = "M"; }
#
# if($mois=="4"){ $mois_lettre = "A"; }
#
# if($mois=="5"){ $mois_lettre = "M"; }
#
# if($mois=="6"){ $mois_lettre = "J"; }
#
# if($mois=="7"){ $mois_lettre = "J"; }
#
# if($mois=="8"){ $mois_lettre = "A"; }
#
# if($mois=="9"){ $mois_lettre = "S"; }
#
# if($mois=="10"){ $mois_lettre = "O"; }
#
# if($mois=="11"){ $mois_lettre = "N"; }
#
# if($mois=="12"){ $mois_lettre = "D"; }
#
pourquoi ne pas faire de boucles ?
t'as oublié tout les or die() pour est erreurs de connexions et de requettes !
4 nov. 2005 à 04:47
tu doit afficher le fichier php en image...
ex:
Je te donne cette réponse en suposant que tu débute en php, si je me trompe et que l'erreur n'est pas à cette endroit, dit moi ;)
cordialement,
kevin (kegi@hotmail.com)
18 oct. 2005 à 22:28
J'utilise ta source pour essayer de faire un petit module de statistiques. Je prends chaque mois de l'année et je calcule ce que j'ai dépensé pour mes interventions.
Malheureusement le graphique ne sort pas, j'cherche mais je trouve pas, peut-on m'aider?
Voici ma source :
<?php
header ("Content-type: image/png"); //on entre en mode image
include("../../Mysql/connexion.php");
function nbjour($m,$a)
{
if(($a%4)==0)
{
$fev=29;
}
else
{
$fev=28;
}
$mois = array(0,31,$fev,31,30,31,30,31,31,30,31,30,31);
for($x=1;$x<13;$x++)
{
if($m == $x)
{
return $mois[$x];
}
}
}
$m = date("m"); //numéro du mois
$a = date("Y"); //année
//Pour tous les mois de l'année on va calculer le cout engendrer !
for($i=1;$i<=12;$i++){
$nbJours_sql2 = nbjour($i,$a);
if ($i<10) $m = "0".$i; else $m=$i;
$premierjour_sql = "$a"."-"."$m"."-"."01";
$dernierjour_sql = "$a"."-"."$m"."-"."$nbJours_sql2";
//maintenant qu'on les dates concernées pour chaque mois on peut faire notre requete
$req0 mysql_query("SELECT * from dbinterventions p ,dbplanning q WHERE p.int_ID q.pla_IDIntervention AND p.int_Date>='$premierjour_sql' and p.int_Date<='$dernierjour_sql'");
//
$total = 0;
$cout = 0;
while ($rs = mysql_fetch_object($req0)) {
//
$heuredeb = $rs->pla_HeureDebut;
$heurefin = $rs->pla_HeureFin;
$heuredeb = substr($heuredeb,0,5);
$heuredeb = str_replace(':','',$heuredeb);
$heurefin = substr($heurefin,0,5);
$heurefin = str_replace(':','',$heurefin);
if ($heurefin!=0) {
if ($heurefin<=$heuredeb) {
//Etape 1
$hfin = substr($heurefin,0,2);
$mfin = substr($heurefin,2,2);
$heurefin = $hfin+($mfin/60);
$tampon_duree = $heurefin - $minuit;
//Etape 2
$minuit2=24;
$hdeb = substr($heuredeb,0,2);
$mdeb = substr($heuredeb,2,2);
$heuredeb = $hdeb+($mdeb/60);
$tamponduree2 = $minuit2 - $heuredeb;
//Totalisons...
$duree = $tampon_duree+$tamponduree2;
$cout = $rs->pla_Coefficient * $rs->pla_TauxHoraire * round($duree,2);
}else{
$hdeb = substr($heuredeb,0,2);
$mdeb = substr($heuredeb,2,2);
$hfin = substr($heurefin,0,2);
$mfin = substr($heurefin,2,2);
//Maintenant on transforme les deux o format décimal ..
//Pour cela, on divise les minutes par 60 et on arrondi au centième
$heuredeb = $hdeb+($mdeb/60);
$heurefin = $hfin+($mfin/60);
$duree = $heurefin-$heuredeb;
//Cout
$cout = $rs->pla_Coefficient * $rs->pla_TauxHoraire * round($duree,2);
}
}else{
$duree=0;
//Cout
$cout = $rs->pla_Coefficient * $rs->pla_TauxHoraire * round($duree,2);
}
//echo $cout;
$total = $total + $cout;
}
//
$mois[$i] = round($total,2);
// exit;
}
$top = max($mois);
//dessin du graphique...
$visites = array($mois[1], $mois[2], $mois[3], $mois[4], $mois[5], $mois[6], $mois[7], $mois[8], $mois[9], $mois[10], $mois[11], $mois[12]);
$pl=0;
$largeurImage = 700; //largeur du graphique
$hauteurImage = 300; //hauteur du graphique
$topmonth = $top; //Pour mettre la colone la plus haute en rouge
$top = ($top + 1000); //une marge d'erreur pour voir les chiffres en dessus des colones
$im = ImageCreate($largeurImage, $hauteurImage) //on créer l'image
or die ("Erreur lors de la création du graphique");
$blanc = ImageColorAllocate ($im, 255, 255, 255); //couleurs préfaite...
$noir = ImageColorAllocate ($im, 0, 0, 0);
$bleu = ImageColorAllocate ($im, 0, 0, 255);
$rouge = ImageColorAllocate ($im, 255, 0, 0);
ImageLine ($im, 10, $hauteurImage-10, $largeurImage-10, $hauteurImage-10, $noir);
for ($mois=1; $mois<=12; $mois++) { //assosiation des lettre avec les numéro de mois, encore là surement pas la meilleure facon mais ça marche ...
if($mois=="1"){ $mois_lettre = "J"; }
if($mois=="2"){ $mois_lettre = "F"; }
if($mois=="3"){ $mois_lettre = "M"; }
if($mois=="4"){ $mois_lettre = "A"; }
if($mois=="5"){ $mois_lettre = "M"; }
if($mois=="6"){ $mois_lettre = "J"; }
if($mois=="7"){ $mois_lettre = "J"; }
if($mois=="8"){ $mois_lettre = "A"; }
if($mois=="9"){ $mois_lettre = "S"; }
if($mois=="10"){ $mois_lettre = "O"; }
if($mois=="11"){ $mois_lettre = "N"; }
if($mois=="12"){ $mois_lettre = "D"; }
ImageString ($im, 0, $mois*30, $hauteurImage-10, $mois_lettre, $noir);
}
ImageLine ($im, 10, 10, 10, $hauteurImage-10, $noir);
$visitesMax = $top; //maximum des colones
for ($mois=1; $mois<=12; $mois++) { //dessinage des colones...
if($visites[$mois-1]==$topmonth){ //si c'est la plus haute ou égale : Rouge
$hauteurImageRectangle = round(($visites[$mois-1]*$hauteurImage)/$visitesMax);
ImageFilledRectangle ($im, $mois*30-7, $hauteurImage-$hauteurImageRectangle, $mois*30+7, $hauteurImage-10, $rouge);
ImageString ($im, 0, $mois*30-7, $hauteurImage-$hauteurImageRectangle-10, $visites[$mois-1], $rouge);
}else{ //sinon Bleu
$hauteurImageRectangle = round(($visites[$mois-1]*$hauteurImage)/$visitesMax);
ImageFilledRectangle ($im, $mois*30-7, $hauteurImage-$hauteurImageRectangle, $mois*30+7, $hauteurImage-10, $bleu);
ImageString ($im, 0, $mois*30-7, $hauteurImage-$hauteurImageRectangle-10, $visites[$mois-1], $rouge);
}
}
ImagePng ($im); //affichage de l'image ...
mysql_close(); //fermeture de la connexion mysql
?>
17 mai 2005 à 01:17
cordialement,
kegi@hotmail.com
16 mai 2005 à 11:35
Pas tout le temps de regarder mais deux petites remarques: Pour commencer, il faut tester les retours mysql ( connextion, sélection de base, query, ... )
if(!@mysql_connect($host,$user,$pass) || !@mysql_select_db("Base"))
die('Erreur');
Idem pour les requêtes
Pour les mois, tu peux faire:
$mois_lettres = array('J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D');
$mois_lettre = $mois_lettres[ $mois - 1];
Autrement, ca à l'air sympa.
@++
R@f