|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
CRÉATION D'UN GRAPHIQUE AVEC DES STATISTIQUES MYSQL (RELOAD OU NON) OPTIONS UTILES...
Information sur la source
Description
Comme son nom l'indique, ce script trace un graphique, clair et net, de vos statistiques sauvegardés dans une base de données mySql. Très utile et bien expliqué... Si vous avez des problèmes à faire fonctionner le script, dites le moi. Il fait une colonne pour chaque mois de l'année courante (enregistre la/les visite(s) unique(s) (avec cookie) et la/les connexion(s) (sans cookie)).
Source
- <?php
-
- /*
-
- Script réalisé par Kevin Gilbert (KeGi)
-
- une très petite partie de script du graphique est inspirée de www.phpdebutant.org
-
-
- IMPORTANT: vous devez créer une table "stats" et uploader le fichier SQl qui vient avec le zip
-
- Pour afficher le graphique du/des visiteur(s) unique(s):
- <img border="1" src="compteur.php?what=no_reload&save=no" alt="Nombre de visiteurs" /> (affichage sans les reloads et ne sauvegarde pas)
-
- Pour afficher la/les connexion(s):
- <img border="1" src="compteur.php?what=reload&save=no" alt="Nombre de visiteurs" /> (affichage avec les reloads et ne sauvegarde pas)
-
- Pour insérer le code qui enrégistre les visiteurs (invisible):
- <?php $what="save"; $save="yes"; include("compteur.php"); ?> (en début de page sans espace)
-
- pour afficher le nombre de visiteur(s) ce mois-ci :
- <?php $what="save"; $save="no"; include("compteur.php"); echo $hit; ?>
-
- pour afficher le nombre de connexion(s) ce mois-ci :
- <? $what="save"; $save="no"; include("compteur.php"); echo $hit2; ?>
-
- bonne prog ;)
-
- */
-
- if($what==""){ $what="no_reload"; }
-
- if($save==""){ $save="yes"; }
-
- $host = "localhost";
- $user = "root";
- $pass = "";
- $table = "stats";
- mysql_connect($host,$user,$pass);
- mysql_select_db("Base");
-
- $m = date("m"); //numéro du mois
- $a = date("Y"); //année
-
- //partie qui ne compte pas les reloads...
-
- $query = "SELECT * FROM $table WHERE (year='$a' && month='$m' && type='no_reload')";
- $result = mysql_query($query);
- $nbrep = mysql_numrows($result);
-
- if($nbrep=="0"){ //si le mois n'est pas entré, on l'ajoute
-
- if($save=="yes"){
-
- $query = "INSERT INTO $table(hit,year,month,type)";
- $query .= " VALUES('1','$a','$m','no_reload')";
- $result = mysql_query($query);
-
- }
-
- }else{ //sinon on récupère la valeur du compteur
-
- while ($val = mysql_fetch_array($result)) {
- $hit=$val["hit"]; if($hit==""){ $hit = 0; }
-
- }
- }
-
- if(empty($_COOKIE["Visite"])){ //si le visiteur n'a pas de cookie, on incrémente le compteur
- $hit ++;
-
- if($save=="yes"){
-
- setcookie("Visite","ok",time()+365*24*3600); //on lui donne un cookie d'un an
-
- }
-
- }
-
- if($save=="yes"){ //on enregistre le compteur incrémenté ou non...
-
- $query = "UPDATE $table SET hit='$hit'";
- $query .= " WHERE year='$a' && month='$m' && type='no_reload'";
- $result = mysql_query($query);
-
- }
-
- // partie qui compte les reloads... (même chose sauf qu'ici on met le champ type en reload et on ne met pas de cookie)
-
- $query = "SELECT * FROM $table WHERE (year='$a' && month='$m' && type='reload')";
- $result = mysql_query($query);
- $nbrep = mysql_numrows($result);
-
- if($nbrep=="0"){
-
- if($save=="yes"){
-
- $query = "INSERT INTO $table(hit,year,month,type)";
- $query .= " VALUES('1','$a','$m','reload')";
- $result = mysql_query($query);
-
- }
-
- }else{
-
- while ($val = mysql_fetch_array($result)) {
- $hit2=$val["hit"]; if($hit2==""){ $hit2 = 0; }
-
- }
- }
-
- $hit2 ++;
-
- if($save=="yes"){
-
- $query = "UPDATE $table SET hit='$hit2'";
- $query .= " WHERE year='$a' && month='$m' && type='reload'";
- $result = mysql_query($query);
-
- }
-
- if($what!=="save"){
-
- //dessin du graphique...
-
- $query = "SELECT * FROM $table WHERE (year='$a' && type='$what')"; //requette mysql pour savoir quoi afficher
- $result = mysql_query($query);
- $nbrep = mysql_numrows($result);
-
- while ($val = mysql_fetch_array($result)) {
-
- $month = $val["month"];
-
- $mois[$month]=$val["hit"]; if($mois[$month]==""){ $mois[$month] = 0; } //arrabgement des 12 mois ou valeur de 0
-
- }
-
- $nbuse = 0;
-
- $top = 0;
-
- while($nbuse<12){
-
- $nbuse ++;
-
- if($mois[$nbuse]==""){ $mois[$nbuse]="0"; }
-
- if($mois[$nbuse]>$top){ $top=$mois[$nbuse]; }
-
- //on veux savoir qu'elle est la plus grande des valeurs (il doit surement exister une meilleure facon mais ca marche ...)
-
- }
-
-
-
- $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;
-
- header ("Content-type: image/png"); //on entre en mode image
-
-
- $largeurImage = 400; //largeur du graphique
- $hauteurImage = 300; //hauteur du graphique
-
- $topmonth = $top; //Pour mettre la colone la plus haute en rouge
-
- $top = ($top + 10); //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
-
-
-
- ?>
<?php
/*
Script réalisé par Kevin Gilbert (KeGi)
une très petite partie de script du graphique est inspirée de www.phpdebutant.org
IMPORTANT: vous devez créer une table "stats" et uploader le fichier SQl qui vient avec le zip
Pour afficher le graphique du/des visiteur(s) unique(s):
<img border="1" src="compteur.php?what=no_reload&save=no" alt="Nombre de visiteurs" /> (affichage sans les reloads et ne sauvegarde pas)
Pour afficher la/les connexion(s):
<img border="1" src="compteur.php?what=reload&save=no" alt="Nombre de visiteurs" /> (affichage avec les reloads et ne sauvegarde pas)
Pour insérer le code qui enrégistre les visiteurs (invisible):
<?php $what="save"; $save="yes"; include("compteur.php"); ?> (en début de page sans espace)
pour afficher le nombre de visiteur(s) ce mois-ci :
<?php $what="save"; $save="no"; include("compteur.php"); echo $hit; ?>
pour afficher le nombre de connexion(s) ce mois-ci :
<? $what="save"; $save="no"; include("compteur.php"); echo $hit2; ?>
bonne prog ;)
*/
if($what==""){ $what="no_reload"; }
if($save==""){ $save="yes"; }
$host = "localhost";
$user = "root";
$pass = "";
$table = "stats";
mysql_connect($host,$user,$pass);
mysql_select_db("Base");
$m = date("m"); //numéro du mois
$a = date("Y"); //année
//partie qui ne compte pas les reloads...
$query = "SELECT * FROM $table WHERE (year='$a' && month='$m' && type='no_reload')";
$result = mysql_query($query);
$nbrep = mysql_numrows($result);
if($nbrep=="0"){ //si le mois n'est pas entré, on l'ajoute
if($save=="yes"){
$query = "INSERT INTO $table(hit,year,month,type)";
$query .= " VALUES('1','$a','$m','no_reload')";
$result = mysql_query($query);
}
}else{ //sinon on récupère la valeur du compteur
while ($val = mysql_fetch_array($result)) {
$hit=$val["hit"]; if($hit==""){ $hit = 0; }
}
}
if(empty($_COOKIE["Visite"])){ //si le visiteur n'a pas de cookie, on incrémente le compteur
$hit ++;
if($save=="yes"){
setcookie("Visite","ok",time()+365*24*3600); //on lui donne un cookie d'un an
}
}
if($save=="yes"){ //on enregistre le compteur incrémenté ou non...
$query = "UPDATE $table SET hit='$hit'";
$query .= " WHERE year='$a' && month='$m' && type='no_reload'";
$result = mysql_query($query);
}
// partie qui compte les reloads... (même chose sauf qu'ici on met le champ type en reload et on ne met pas de cookie)
$query = "SELECT * FROM $table WHERE (year='$a' && month='$m' && type='reload')";
$result = mysql_query($query);
$nbrep = mysql_numrows($result);
if($nbrep=="0"){
if($save=="yes"){
$query = "INSERT INTO $table(hit,year,month,type)";
$query .= " VALUES('1','$a','$m','reload')";
$result = mysql_query($query);
}
}else{
while ($val = mysql_fetch_array($result)) {
$hit2=$val["hit"]; if($hit2==""){ $hit2 = 0; }
}
}
$hit2 ++;
if($save=="yes"){
$query = "UPDATE $table SET hit='$hit2'";
$query .= " WHERE year='$a' && month='$m' && type='reload'";
$result = mysql_query($query);
}
if($what!=="save"){
//dessin du graphique...
$query = "SELECT * FROM $table WHERE (year='$a' && type='$what')"; //requette mysql pour savoir quoi afficher
$result = mysql_query($query);
$nbrep = mysql_numrows($result);
while ($val = mysql_fetch_array($result)) {
$month = $val["month"];
$mois[$month]=$val["hit"]; if($mois[$month]==""){ $mois[$month] = 0; } //arrabgement des 12 mois ou valeur de 0
}
$nbuse = 0;
$top = 0;
while($nbuse<12){
$nbuse ++;
if($mois[$nbuse]==""){ $mois[$nbuse]="0"; }
if($mois[$nbuse]>$top){ $top=$mois[$nbuse]; }
//on veux savoir qu'elle est la plus grande des valeurs (il doit surement exister une meilleure facon mais ca marche ...)
}
$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;
header ("Content-type: image/png"); //on entre en mode image
$largeurImage = 400; //largeur du graphique
$hauteurImage = 300; //hauteur du graphique
$topmonth = $top; //Pour mettre la colone la plus haute en rouge
$top = ($top + 10); //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
?>
Conclusion
n'oubliez pas d'uploader le script sql sur votre serveur et ne mettez pas d'espace ou de commandes avant le script. laissez vos commentaires. bonne prog ;) cordialement, kevin (kegi@hotmail.com)
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
Historique
- 16 mai 2005 01:50:53 :
- Ajout d'une capture d'écran
- 16 mai 2005 03:01:25 :
- correction de fautes... merci GRenard ;)
pardonnez-moi s'il en reste ...
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
|