CRÉATION D'UN GRAPHIQUE AVEC DES STATISTIQUES MYSQL (RELOAD OU NON) OPTIONS UTIL

coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 - 16 mai 2005 à 11:35
kegi Messages postés 164 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 25 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.

https://codes-sources.commentcamarche.net/source/31400-creation-d-un-graphique-avec-des-statistiques-mysql-reload-ou-non-options-utiles

kegi Messages postés 164 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 25 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és 12 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 16 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és 164 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 25 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és 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
5 févr. 2006 à 14:37
c'est dégeu comme code :

#
# 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 !
kegi Messages postés 164 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 25 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és 35 Date d'inscription samedi 1 novembre 2003 Statut Membre Dernière intervention 11 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

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

?>
kegi Messages postés 164 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 25 août 2008
17 mai 2005 à 01:17
Merci pour ton commentaire constructif ;)

cordialement,
kegi@hotmail.com
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
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];

Autrement, ca à l'air sympa.

@++

R@f
Rejoignez-nous