Script de statistiques (graphique)

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

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.