Script de statistiques (graphique)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 951 fois - Téléchargée 29 fois

Contenu du snippet

J'ai fait ce script pour avoir un acces rapide aux stats de mon site web; et j'me suis dit de le déposer ici (il est entièrement de moi).
Ce script affiche numériquement les stats, et graphiquement aussi (sans librairie GD!).
Vous pouvez voir ce que ca donne sur mon site web: http://www.progisland.fr.st/?rubrique=admin/stats

Alors enfait, ca se présente en 2 parties: la page où les stats sont consultables (stats.php), et le script à intégrer aux pages de votre site.

Mon script calcule enfait le nombre de visiteurs uniques à 24h (il distingue les differents utilisateurs par leur IP).
Personellement, je m'en sers ennormement!

Il est encore incomplet (quelques trucs manquent sur la page stats.php et je voudrais completer en faisant les stats détaillées de l'année, pouvoir consulter les stats de n'importe quel jour,...).
Je le mets à jour dès qu'il est complet!

Bon finit de raconter ma vie. Voilà les codes sources! N'oubliez pas de créer la table SQL!

Source / Exemple :


#Requete SQL pour créer la table:
$sql = mysql_query("CREATE TABLE `stats` (
  `id` tinyint(4) NOT NULL auto_increment,
  `come_from` text NOT NULL,
  `ip` text NOT NULL,
  `date` text NOT NULL,
  `user` tinytext NOT NULL,
  `day` tinytext NOT NULL,
  `month` tinytext NOT NULL,
  `Year` int(4) NOT NULL default '0',
  `hour` tinyint(4) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM COMMENT='Table de statistiques de traffic sur ProgIsland' AUTO_INCREMENT=91 ;");

#--------------------------------------------------------------------------
#Page: stats.php (avec code HTML!):

<?
session_start();
mysql_connect("localhost", "votre_login", "votre_pwd");
mysql_select_db("votre_bdd");

$today = date('d/m/Y');
$month = date('F');
$year = date('Y');

//On calcule le mois actuel:
$num_mois = date('m');
$mois = array('Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');

if ($num_mois < "10") { $num_mois = substr($num_mois,1,1); }
$num_mois = $num_mois - 1;
$fr_month = $mois[$num_mois];
//-------------------------

//On calcule le jour actuel (en Fr)
$numero_jour = date('w');
$jours = array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
$current_day = $jours[$numero_jour];
//---------------------------------

?>
<html>

<head>
<title>Statistiques</title>
</head>

<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<p align="center">
<font size="6" face="Verdana" color="#0066CC"><b><u>Statistiques</u></b></font><p align="center">

&nbsp;</p>
<p align="center"><font size="2" face="Verdana"><b><u>Aujourd'hui:<br></u></b></font></p>
<table align="center" border="1" cellspacing="0" width="540" bordercolordark="white" bordercolorlight="black">
    <tr>
        <td width="181" height="15">
            <p align="center"><font size="2" face="Verdana"><u>Date</u></font></p>
        </td>
        <td width="349" height="15" colspan="2">
            <p align="center"><font size="2" face="Verdana"><u>Nombre de visites 
            uniques</u></font></p>
        </td>
    </tr>
    <tr>
        <td width="181" height="117" rowspan="4">
            <p align="center"><font size="2" face="Verdana"><i><?echo $current_day .' '.date('d') .' '. $fr_month;?></i></font></p>
        </td>
        <td width="101" height="28">
            <p align="center"><font size="1" face="Verdana">Nuit - Matin<br></font><font face="Verdana"><i><span style="font-size:7pt;">(0h 
            - 12h)</span></i></font></p>
        </td>
        <td width="244" height="28" valign="middle">
	&nbsp;<? $count_morning = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE date='$today' AND hour<12"));
$visites_morning = $count_morning['COUNT( * )']; ?> <font size="1" face="Verdana"><img src="progressbar.gif" width="<? echo 1 + (2 * $visites_morning); ?>" border="0" height="12" align="middle" alt="<? echo $visites_morning; ?>"> 
            (<?

echo $visites_morning;?>)</font>        </td>
    </tr>
    <tr>
        <td width="101" height="12">
            <p align="center"><font size="1" face="Verdana">Apres-midi<br></font><font face="Verdana"><i><span style="font-size:7pt;">(12h 
            - 18h)</span></i></font></p>
        </td>
        <td width="244" height="12" valign="middle">
            <p> <font size="1" face="Verdana">&nbsp;<? $count_journey = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE date='$today' AND hour>11 AND hour<18"));
$visites_journey = $count_journey['COUNT( * )']; ?>  <img src="progressbar.gif" width="<? echo 1 + (2 * $visites_journey); ?>" border="0" height="12" align="middle" alt="<? echo $visites_journey; ?>"> 
            (<?

echo $visites_journey;?>)</font></p>
        </td>
    </tr>
    <tr>
        <td width="101" height="15">
            <p align="center"><font size="1" face="Verdana">Soir - Nuit<br></font><font face="Verdana"><i><span style="font-size:7pt;">(18h 
            - 0h)</span></i></font></p>
        </td>
        <td width="244" height="15" valign="middle">
            <p> <font size="1" face="Verdana">&nbsp;<? $count_soir = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE date='$today' AND hour>17"));
$visites_soir = $count_soir['COUNT( * )']; ?> <img src="progressbar.gif" width="<? echo 1 + (2 * $visites_soir); ?>" border="0" height="12" align="middle" alt="<? echo $visites_soir; ?>"> 
            (<?
echo $visites_soir;?>)</font></p>
        </td>
    </tr>
    <tr>
        <td width="349" height="14" colspan="2">
            <p align="center"><font size="2" face="Verdana"><?
$count_today = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE date='$today'"));
$visites_today = $count_today['COUNT( * )']; 
echo $visites_today;?></font></p>
        </td>
    </tr>
</table>
<p><font size="2">&nbsp;</font></p>
<hr width="75%">
<p align="center"><font size="2">&nbsp;</font></p>
<p align="center"><font size="2" face="Verdana"><b><u>Stats du mois:</u></b></font></p>
<table align="center" border="1" cellspacing="0" width="540" bordercolordark="white" bordercolorlight="black">
    <tr>
        <td width="132" height="15">
            <p align="center"><font size="2" face="Verdana"><u>Mois</u></font></p>
        </td>
        <td width="398" height="15" colspan="2">
            <p align="center"><font size="2" face="Verdana"><u>Nombre de visites 
            uniques à 24h</u></font></p>
        </td>
    </tr>
    <tr>
        <td width="132" height="10" rowspan="4">
            <p align="center"><font size="2" face="Verdana"><i><?echo $fr_month .' '. date('Y');?></i></font></p>
        </td>
        <td width="114" height="11">
            <p align="center"><font size="1" face="Verdana">1ere partie<br>(du 
            1er au 10)</font></p>
        </td>
        <td width="280" height="11">
            <p align="center"><font size="1" face="Verdana"><i>&nbsp;- Indisponnible 
            -</i></font></p>
        </td>
    </tr>
    <tr>
        <td width="114" height="16">
            <p align="center"><font size="1" face="Verdana">2e partie<br>(du 
            11&nbsp;au 20)</font></p>
        </td>
        <td width="280" height="16">
            <p align="center"><font size="1" face="Verdana"><i>&nbsp;- Indisponnible 
            -&nbsp;</i></font></p>
        </td>
    </tr>
    <tr>
        <td width="114" height="12">
            <p align="center"><font size="1" face="Verdana">3e partie<br>(du 
            20 au <? echo date('t'); ?>)</font></p>
        </td>
        <td width="280" height="12">
            <p align="center"><font size="1" face="Verdana"><i>&nbsp;- Indisponnible 
            -&nbsp;</i></font></p>
        </td>
    </tr>
    <tr>
        <td width="398" height="12" colspan="2">
            <p align="center"><font size="2" face="Verdana"><?
$count_month = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE month='$month'"));
$visites_month = $count_month['COUNT( * )']; 
echo $visites_month;?>&nbsp;</font></p>
        </td>
    </tr>
</table>
<p><font size="2">&nbsp;</font></p>
<p align="center"><font size="2" face="Verdana"><b><u>Stats de l'année:</u></b></font></p>
<table align="center" border="1" cellspacing="0" width="540" bordercolordark="white" bordercolorlight="black">
    <tr>
        <td width="105" height="15">
            <p align="center"><font size="2" face="Verdana"><u>Année</u></font></p>
        </td>
        <td width="448" height="15" colspan="2">
            <p align="center"><font size="2" face="Verdana"><u>Nombre de visites 
            uniques à 24h</u></font></p>
        </td>
    </tr>
    <tr <? if ($month == "January") { echo 'bgcolor="white"'; } ?>>
        <td width="105" height="88" rowspan="13">
            <p align="center"><font size="2" face="Verdana" color="black"><i><? echo $year; ?></i></font></p>
        </td>
        <td width="110" height="5">
            <p align="center"><font size="1" face="Verdana">Janvier</font></p>
        </td>
        <td width="334" height="5">
            <p><font size="1" face="Verdana">&nbsp;(<?
$count_janvier = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE month='January' AND year='$year'"));
$visites_janvier = $count_janvier['COUNT( * )']; 
echo $visites_janvier;?>)</font></p>
        </td>
    </tr>
    <tr <? if ($month == "Ferbruary") { echo 'bgcolor="white"'; } ?>>
        <td width="110" height="5">
            <p align="center"><font size="1" face="Verdana">Février</font></p>
        </td>
        <td width="334" height="5">
            <p><font size="1" face="Verdana">&nbsp;(<?
$count_fevrier = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE month='February' AND year='$year'"));
$visites_fevrier = $count_fevrier['COUNT( * )']; 
echo $visites_fevrier;?>)</font></p>
        </td>
    </tr>
    <tr <? if ($month == "March") { echo 'bgcolor="white"'; } ?>>
        <td width="110" height="5">
            <p align="center"><font size="1" face="Verdana">Mars</font></p>
        </td>
        <td width="334" height="5">
            <p><font size="1" face="Verdana">&nbsp;(<?
$count_mars = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE month='March' AND year='$year'"));
$visites_mars = $count_mars['COUNT( * )']; 
echo $visites_mars;?>)</font></p>
        </td>
    </tr>
    <tr <? if ($month == "April") { echo 'bgcolor="white"'; } ?>>
        <td width="110" height="5">
            <p align="center"><font size="1" face="Verdana">Avril</font></p>
        </td>
        <td width="334" height="5">
            <p><font size="1" face="Verdana">&nbsp;(<?
$count_avril = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE month='April' AND year='$year'"));
$visites_avril = $count_avril['COUNT( * )']; 
echo $visites_avril;?>)</font></p>
        </td>
    </tr>
    <tr <? if ($month == "May") { echo 'bgcolor="white"'; } ?>>
        <td width="110" height="5">
            <p align="center"><font size="1" face="Verdana">Mai</font></p>
        </td>
        <td width="334" height="5">
            <p><font size="1" face="Verdana">&nbsp;(<?
$count_mai = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE month='May' AND year='$year'"));
$visites_mai = $count_mai['COUNT( * )']; 
echo $visites_mai;?>)</font></p>
        </td>
    </tr>
    <tr <? if ($month == "June") { echo 'bgcolor="white"'; } ?>>
        <td width="110" height="5">
            <p align="center"><font size="1" face="Verdana">Juin</font></p>
        </td>
        <td width="334" height="5">
            <p><font size="1" face="Verdana">&nbsp;(<?
$count_juin = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE month='June' AND year='$year'"));
$visites_juin = $count_juin['COUNT( * )']; 
echo $visites_juin;?>)</font></p>
        </td>
    </tr>
    <tr <? if ($month == "July") { echo 'bgcolor="white"'; } ?>>
        <td width="110" height="5">
            <p align="center"><font size="1" face="Verdana">Juillet</font></p>
        </td>
        <td width="334" height="5">
            <p><font size="1" face="Verdana">&nbsp;(<?
$count_juillet = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE month='July' AND year='$year'"));
$visites_juillet = $count_juillet['COUNT( * )']; 
echo $visites_juillet;?>)</font></p>
        </td>
    </tr>
    <tr <? if ($month == "August") { echo 'bgcolor="white"'; } ?>>
        <td width="110" height="5">
            <p align="center"><font size="1" face="Verdana">Aout</font></p>
        </td>
        <td width="334" height="5">
            <p><font size="1" face="Verdana">&nbsp;(<?
$count_aout = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE month='August' AND year='$year'"));
$visites_aout = $count_aout['COUNT( * )']; 
echo $visites_aout;?>)</font></p>
        </td>
    </tr>
    <tr <? if ($month == "September") { echo 'bgcolor="white"'; } ?>>
        <td width="110" height="5">
            <p align="center"><font size="1" face="Verdana">Septembre</font></p>
        </td>
        <td width="334" height="5">
            <p><font size="1" face="Verdana">&nbsp;(<?
$count_septembre = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE month='September' AND year='$year'"));
$visites_septembre = $count_septembre['COUNT( * )']; 
echo $visites_septembre;?>)</font></p>
        </td>
    </tr>
    <tr <? if ($month == "October") { echo 'bgcolor="white"'; } ?>>
        <td width="110" height="5">
            <p align="center"><font size="1" face="Verdana">Octobre</font></p>
        </td>
        <td width="334" height="5">
            <p><font size="1" face="Verdana">&nbsp;(<?
$count_octobre = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE month='October' AND year='$year'"));
$visites_octobre = $count_octobre['COUNT( * )']; 
echo $visites_octobre;?>)</font></p>
        </td>
    </tr>
    <tr <? if ($month == "November") { echo 'bgcolor="white"'; } ?>>
        <td width="110" height="7">
            <p align="center"><font size="1" face="Verdana">Novembre</font></p>
        </td>
        <td width="334" height="7">
            <p><font size="1" face="Verdana">&nbsp;(<?
$count_novembre = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE month='November' AND year='$year'"));
$visites_novembre = $count_novembre['COUNT( * )']; 
echo $visites_novembre;?>)</font></p>
        </td>
    </tr>
    <tr <? if ($month == "December") { echo 'bgcolor="white"'; } ?>>
        <td width="110" height="11">
            <p align="center"><font size="1" face="Verdana">Décembre</font></p>
        </td>
        <td width="334" height="11">
            <p><font size="1" face="Verdana">&nbsp;(<?
$count_decembre = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE month='December' AND year='$year'"));
$visites_decembre = $count_decembre['COUNT( * )']; 
echo $visites_decembre;?>)</font></p>
        </td>
    </tr>
    <tr>
        <td width="448" height="12" colspan="2">
            <p align="center"><font size="2" face="Verdana" color="black"><?$count_year = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE year='$year'"));
$visites_year = $count_year['COUNT( * )']; 
echo $visites_year;?></font></p>
        </td>
    </tr>
</table>
<p>&nbsp;</p>
<hr width="75%">
<p>&nbsp;</p>
<p align="center"><u><b><font size="2" face="Verdana">Comparatifs hebdomadaires 
généraux:</font></b></u></p>
<table align="center" border="1" cellspacing="0" bordercolordark="white" bordercolorlight="black">
    <tr>
        <td width="116" height="13">
            <p align="center"><font size="2" face="Verdana"><u>Jour</u></font></p>
        </td>
        <td width="408" height="13">
            <p align="center"><font size="2" face="Verdana"><u>Visites uniques 
            à 24h</u></font></p>
        </td>
    </tr>
    <tr>
        <td width="116" height="12">
            <p align="center"><font size="1" face="Verdana">Lundi</font></p>
        </td>
        <td width="408" height="12">
            <p><font size="1" face="Verdana">&nbsp;<?
$count_monday = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE day='Monday'"));
$visites_monday = $count_monday['COUNT( * )']; 
echo $visites_monday;?></font></p>
        </td>
    </tr>
    <tr>
        <td width="116" height="11">
            <p align="center"><font size="1" face="Verdana">Mardi</font></p>
        </td>
        <td width="408" height="11">
            <p><font size="1" face="Verdana">&nbsp;<?
$count_tuesday = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE day='tuesday'"));
$visites_tuesday = $count_tuesday['COUNT( * )']; 
echo $visites_tuesday;?></font></p>
        </td>
    </tr>
    <tr>
        <td width="116" height="15">
            <p align="center"><font size="1" face="Verdana">Mercredi</font></p>
        </td>
        <td width="408" height="15">
            <p><font size="1" face="Verdana">&nbsp;<?
$count_wednesday = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE day='wednesday'"));
$visites_wednesday = $count_wednesday['COUNT( * )']; 
echo $visites_wednesday;?></font></p>
        </td>
    </tr>
    <tr>
        <td width="116" height="10">
            <p align="center"><font size="1" face="Verdana">Jeudi</font></p>
        </td>
        <td width="408" height="10">
            <p><font size="1" face="Verdana">&nbsp;<?
$count_thursday = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE day='thursday'"));
$visites_thursday = $count_thursday['COUNT( * )']; 
echo $visites_thursday;?></font></p>
        </td>
    </tr>
    <tr>
        <td width="116" height="11">
            <p align="center"><font size="1" face="Verdana">Vendredi</font></p>
        </td>
        <td width="408" height="11">
            <p><font size="1" face="Verdana">&nbsp;<?
$count_friday = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE day='friday'"));
$visites_friday = $count_friday['COUNT( * )']; 
echo $visites_friday;?></font></p>
        </td>
    </tr>
    <tr>
        <td width="116" height="14">
            <p align="center"><font size="1" face="Verdana">Samedi</font></p>
        </td>
        <td width="408" height="14">
            <p><font size="1" face="Verdana">&nbsp;<?
$count_saturday = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE day='saturday'"));
$visites_saturday = $count_saturday['COUNT( * )']; 
echo $visites_saturday;?></font></p>
        </td>
    </tr>
    <tr>
        <td width="116" height="5">
            <p align="center"><font size="1" face="Verdana">Dimanche</font></p>
        </td>
        <td width="408" height="5">
            <p><font size="1" face="Verdana">&nbsp;<?
$count_sunday = mysql_fetch_array(mysql_query("SELECT COUNT( * ) FROM `stats` WHERE day='sunday'"));
$visites_sunday = $count_sunday['COUNT( * )']; 
echo $visites_sunday;?></font></p>
        </td>
    </tr>
</table>
<p><? mysql_close(); ?></p>
</body>

</html>

#-------------------------------------------------------------
#Script PHP: à intégrer à chaque page du site Web:

<?mysql_connect("localhost", "votre_login", "votre_pwd");
mysql_select_db("votre_bdd");

//On s'occupe des stats
$comefrom = $_SERVER['HTTP_REFERER'];
$ip = $_SERVER['REMOTE_ADDR'];
$date = date('d/m/Y');
$user_coming = "Visiteur";
$day = date('l');
$month = date('F');
$year = date('Y');
$hour = date('H');

#Facultatif:
#Uniquement si vous utilisez les sesisons ($_SESSION['login'] pour le Login de la session)
#----------------------------------------------------------------------
if (!empty($_SESSION['login'])) { $user_coming == $_SESSION['login']; }
#----------------------------------------------------------------------

$trafic = mysql_query("SELECT * FROM stats WHERE ip='$ip' AND date='$date'");
$stats = mysql_fetch_array($trafic);

if ((!isset($stats['id'])) || ($stats['date'] != $date)) {
mysql_query("INSERT INTO stats VALUES('', '$comefrom', '$ip', '$date', '$user_coming', '$day', '$month', '$year', '$hour')");
}
//Fin des stats

mysql_close();?>
	    ?>

Conclusion :


Vous pouvez voir ce que ca donne sur mon site web: http://www.progisland.fr.st/?rubrique=admin/stats

N'oubliez pas de créer une image nommée progressbar.gif (la barre jaune que vous voyez sur ma page de stats).
Voilà! J'attends des commentaires et suggestions! :D

A voir également

Ajouter un commentaire

Commentaires

Papy440
Messages postés
19
Date d'inscription
mardi 19 novembre 2002
Statut
Membre
Dernière intervention
15 juillet 2010
-
Je suis allé sur ton site et... euh, ça marche pas. Il doit y avoir un petit problème au niveau de ta base de données.
Mais ton code m'interesse beaucoup. Je te félicite.
Sais-tu utiliser les instructions de dessins en PHP et pourrais-tu me dire s'il est possible de réaliser les graphiques en dessinant sur une page HTML ?
bbcluny
Messages postés
66
Date d'inscription
mardi 25 mars 2003
Statut
Membre
Dernière intervention
29 septembre 2008
-
un petit zip aurai été bien
chicodeespagna
Messages postés
3
Date d'inscription
lundi 21 mars 2005
Statut
Membre
Dernière intervention
8 avril 2005
-
Merci,

Ton code est excellent juste un petit probleme :
Notice: Undefined index: count( * ) in c:\documents and settings\stagiaire\mes documents\perso\easyphp1-8\easyphp1-8\www\modifie2\propo.php on line 335

je comprend pas cette erreur peux tu m'aider

Merci encore pour ce magnifique code
bebe47
Messages postés
14
Date d'inscription
dimanche 19 février 2006
Statut
Membre
Dernière intervention
23 juillet 2006
-
j'aime bien

seulement tu devrais gérer les erreurs mysql

mysql_query("...") or die("Erreur SQL: ".mysql_error());
calosacu
Messages postés
1
Date d'inscription
jeudi 23 décembre 2004
Statut
Membre
Dernière intervention
5 octobre 2006
-
Bueno a mi no me salio errores, esta bien el codigo lo voy a colocar en mis futuras paginas web

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.