La Homepage de Floppy
v3.00 - Tutoriaux PHP + MySQL



Un compteur par page
(PHP3 uniquement)

 


Vous pouvez accèder directement à la partie qui vous intéresse en cliquant ci-dessous :
  • Paramétrage du tutorial
  • Information sur le tutorial
  • Création de la table dans MySQL
  • Création du fichier globale.inc.php3
  • Création du fichier fonction.inc.php3
  • Création du fichier menu.html
  • Création des fichiers page01.php3 à page05.php3
  • Création du fichier de statistiques
  • Conclusion



  • Paramétrage du tutorial
     


    Ce tutorial utilise des Valeurs par défaut
    Si vous n'utilisez pas les mêmes valeurs, veuillez les changer et appuyer sur le bouton de validation des modifications
    Pour remettre un champ à sa valeur initiale, cliquez sur sa description
    Modification des paramètres
    Nom de la base de données  : 
    Nom de la table dans la base  : 
    Remarque : ces valeurs apparaitront dans le tutorial sous cette forme : lfa



    Information sur le tutorial
     


    Ce tutorial explique comment créer et mettre à jour une table de la base mySQL, permettant de gérer un compteur par page

    Pour illustrer le tutorial, nous allons créer
  • 1 table dans la base MySQL pour stocker les informations des compteurs
  • 1 fichier include contenant les variables globales au tutorial
  • 1 fichier include contenant les fonctions utilisées dans le tutorial
  • 1 fichier include contenant du code HTML du menu utilisé dans le tutorial
  • 5 pages (page01 à page05) qui auront chacunes leur propre compteur
  • 1 page de statistique qui affichera la liste des 5 pages dans l'ordre de la plus visitée à la moins visitée

    Vous pouvez vous rendre compte du résultat en cliquant ici : résultat du tutorial

    Au préalable, vous devez avoir installé Apache, PHP et MySQL (cf. tutorial sur l'installation d'apache + PHP + MySQL)
    Eventuellement, vous devez avoir installé phpMyAdmin (cf. tutorial sur l'installation de phpMyAdmin)
    Vous devez également avoir un minimum de connaissances sur les bases de données et le SQL (sujets non abordés dans ce tutorial)

    Pour tout complément d'information ou pour toutes questions, vous pouvez me laisser un mail ou poster un message dans le forum

    Merci de ne pas réutiliser ce tutorial sans citer mon site : La homepage de Floppy

    Bonne lecture...



    Création de la table dans MySQL
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier de création de la table, il se trouve dans l'archive compteurs.zip (fichier compteurs.sql)
    2 Créez une base de donnée lfa à l'aide de phpMyAdmin
    3 Créez la table compteurs dans votre base de données lfa, à l'aide de phpMyAdmin
    Cette table est définie ainsi :
    #
    # Structure de la table 'compteurs'
    #
    CREATE TABLE compteurs (
        cle varchar(255) NOT NULL,
        nbHit int(11) DEFAULT '0' NOT NULL,
        nomComplet varchar(255) NOT NULL,
        url varchar(255) NOT NULL,
        PRIMARY KEY (cle),
        UNIQUE cle (cle)
    );
    #
    # Contenu de la table 'compteurs'
    #
    INSERT INTO compteurs VALUES ('page01', '0', 'Première page', 'page01.php3');
    INSERT INTO compteurs VALUES ('page02', '0', 'Deuxième page', 'page02.php3');
    INSERT INTO compteurs VALUES ('page03', '0', 'Troisième page', 'page03.php3');
    INSERT INTO compteurs VALUES ('page04', '0', 'Quatrième page', 'page04.php3');
    INSERT INTO compteurs VALUES ('page05', '0', 'Cinquième page', 'page05.php3');
    Explication : voici l'explication des champs de la table :
  • cle : clé primaire (unique) de la table, identifiant 1 enregistrement unique
  • nbHit : champ contenant le nombre de fois que la page a été consulté
  • nomComplet : nom complet de la page
  • url : url de la page
    Remarque : on insère 5 enregistrements dans la table, correspondant chacun à une page
  • 4 Vous n'aurez plus besoin de phpMyAdmin pour la suite du tutorial




    Création du fichier globale.inc.php3
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier globale.inc.php3, il se trouve dans l'archive compteurs.zip
    2 Créer un fichier d'include globale.inc.php3, contenant les variables globales d'accès à votre base
    Ce fichier est prévu pour un usage en local et un usage sur le serveur de votre hébergeur (Free par exemple), d'où le test sur le HTTP_HOST
    Ce fichier contient ces lignes :
    <?
    if (getenv("HTTP_HOST") == "localhost") {
        // variables globales localhost
        $host = "localhost";
        $base = "lfa";
        $login = "";
        $pass = "";
    } else {
        // variables globales Free
        $host = "sql.free.fr";
        $base = "laurent.fagot";  // à changer
        $login = "laurent.fagot"; // à changer
        $pass = "xxxxxxxx";       // à changer
    }
    ?>
    Explication : voici l'explication des variables utilisées :
  • $host : nom du host (serveur) hébergeant la base
  • $base : nom de la base sur le serveur
  • $login : login pour accèder à la base
  • $pass : mot de passe pour accèder à la base
    Attention : selon si vous utilisez le fichier en local ou sur le serveur, vous devez faire des modifications :
  • Pour la partie variables globales localhost, il ne devrait pas y avoir de modification à effectuer (mise à part $base)
  • Pour la partie variables globales Free, il vous faut modifier les valeurs des lignes marquées par '// à changer' comme suit :
        - $base : votre identifiant de connexion sur Free
        - $login : votre identifiant de connexion sur Free (le même que $base)
        - $pass : votre mot de passe sur Free
    Remarque : si vous utilisez un autre fournisseur d'accès que Free, veuillez adapter les valeurs aux variables




  • Création du fichier fonction.inc.php3
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier fonction.inc.php3, il se trouve dans l'archive compteurs.zip
    2 Créer un fichier d'include fonction.inc.php3, contenant les fonctions d'accès à votre base
    Ce fichier est découpé en fonctions (d'où son nom), et il ne contient que du code PHP
    Ajoutez donc la ligne en début de fichier :
    <?
    3 Fonction connecte() : connexion à la base
    Ajoutez ces ligne au fichier :
    function connecte() {
        global $host, $login, $pass;
        $conn = mysql_connect($host, $login, $pass);
        return $conn;
    }
    Utilise les variables globales $host, $login et $pass, définies dans le fichier globale.inc.php3
    Retourne l'identifiant de la connecion ($conn)
    4 Fonction deconnecte($conn) : déconnexion de la base
    Ajoutez ces ligne au fichier :
    function deconnecte($conn) {
        mysql_close($conn);
    }
    Utilise la variable de connexion $conn, passée en argument et issue de la fonction connecte()
    5 Fonction updateCompteurs($cle) : incrémente le compteur de la page passée en paramètre ($cle)
    Ajoutez ces ligne au fichier :
    function updateCompteurs($cle) {
        global $base;
        $result = mysql_db_query($base, "select * from compteurs where cle = '$cle'");
        $row = mysql_fetch_object($result);
        if ($row) {
            $cpt = $row->nbHit + 1;
            $query = "update compteurs set nbHit = $cpt where cle = '$cle'";
            mysql_db_query($base, $query);
        }
        mysql_free_result($result);
    }
    Utilise la variable globale $base, définie dans le fichier globale.inc.php3
    Accède à l'enregistrement dans la table compteurs dont le champ cle contient la valeur du paramètre $cle
    Si l'enregistrement est trouvé, on récupère la valeur du champ nbHit, on l'incrémente (+1) et on le met à jour dans la table
    6 Fonction getCompteurs($cle) : récupère le nombre de hits de la page passée en paramètre ($cle)
    Ajoutez ces ligne au fichier :
    function getCompteurs($cle) {
        global $base;
        $result = mysql_db_query($base, "select * from compteurs where cle = '$cle'");
        $row = mysql_fetch_object($result);
        if ($row)
            $cpt = $row->nbHit;
        else
            $cpt = 0;
        mysql_free_result($result);
        return $cpt;
    }
    Utilise la variable globale $base, définie dans le fichier globale.inc.php3
    Accède à l'enregistrement dans la table compteurs dont le champ cle contient la valeur du paramètre $cle
    Si l'enregistrement est trouvé, on retoune la valeur du champ nbHit, sinon on retourne la valeur zéro (0)
    7 Fonction getNom($cle) : récupère le nom complet de la page passée en paramètre ($cle)
    Ajoutez ces ligne au fichier :
    function getNom($cle) {
        global $base;
        $result = mysql_db_query($base, "select * from compteurs where cle = '$cle'");
        $row = mysql_fetch_object($result);
        if ($row)
            $res = $row->nomComplet;
        else
            $res = "";
        mysql_free_result($result);
        return $res;
    }
    Utilise la variable globale $base, définie dans le fichier globale.inc.php3
    Accède à l'enregistrement dans la table compteurs dont le champ cle contient la valeur du paramètre $cle
    Si l'enregistrement est trouvé, on retoune la valeur du champ nomComplet, sinon on retourne une chaine vide
    8 Fonction getTotalHitsCompteurs() : retourne le nombre total de hits, toutes pages confondues
    Ajoutez ces ligne au fichier :
    function getTotalHitsCompteurs() {
        global $base;
        $result = mysql_db_query($base, "select sum(nbHit) as total from compteurs");
        $row = mysql_fetch_object($result);
        if ($row)
            $total = $row->total;
        else
            $total = 0;
        mysql_free_result($result);
        return $total;
    }
    Utilise la variable globale $base, définie dans le fichier globale.inc.php3
    Accède à la somme des champs nbHit des enregistrements de la table compteurs
    Si une somme a pu être trouvée, on retourne cette somme, sinon on retourne la valeur zéro (0)
    9 Fermez le fichier PHP en ajoutant cette ligne en fin de fichier :
    ?>




    Création du fichier menu.html
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier menu.html, il se trouve dans l'archive compteurs.zip
    2 Créer un fichier HTML menu.html, contenant le code du menu qui sera utilisé par toutes les autres pages
    Ce fichier comporte les lignes suivantes :
    [<a href="page01.php3">Page 01</a>]
    [<a href="page02.php3">Page 02</a>]
    [<a href="page03.php3">Page 03</a>]
    [<a href="page04.php3">Page 04</a>]
    [<a href="page05.php3">Page 05</a>]
    [<a href="stat.php3">Statistiques</a>]




    Création des fichiers page01.php3 à page05.php3
     


    Etape Description
    1 Si vous souhaitez récupérer les fichiers pagexx.php3, ils se trouvent dans l'archive compteurs.zip
    2 Créer un fichier PHP3 page01.php3, contenant le code de la page 01
    Ce fichier comporte les lignes suivantes :
    <html>
    <head>
    </head>
    <body>
    <font face="Trebuchet MS, Comic Sans MS" size=2>
    <center>
    <?
    include "globale.inc.php3";
    include "fonction.inc.php3";
    $conn = connecte();
    updateCompteurs("page01");
    include "menu.html";
    echo "<br><br><b>" . getNom("page01") . "</b><br>visitée " . getCompteurs("page01") . " fois";
    deconnecte($conn);
    ?>
    </center>
    </font>
    </body>
    </html>
    Explication : voici les explication de la partie en PHP :
  • on charge le fichier globale.inc.php3 (include)
  • on charge le fichier fonction.inc.php3 (include)
  • on ouvre une connexion à la base
  • on lance la mise à jour du compteur sur la page page01
  • on charge le menu HTML (include)
  • on affiche des infos sur la page (nom complet + nombre de hits)
  • on referme la connexion
  • 3 Le principe est identique pour le fichier page02.php3, ou seules changent les références à la page (page02)
    Ce fichier comporte les lignes suivantes :
    <html>
    <head>
    </head>
    <body>
    <font face="Trebuchet MS, Comic Sans MS" size=2>
    <center>
    <?
    include "globale.inc.php3";
    include "fonction.inc.php3";
    $conn = connecte();
    updateCompteurs("page02");
    include "menu.html";
    echo "<br><br><b>" . getNom("page02") . "</b><br>visitée " . getCompteurs("page02") . " fois";
    deconnecte($conn);
    ?>
    </center>
    </font>
    </body>
    </html>
    4 Le principe est identique pour le fichier page03.php3, ou seules changent les références à la page (page03)
    Ce fichier comporte les lignes suivantes :
    <html>
    <head>
    </head>
    <body>
    <font face="Trebuchet MS, Comic Sans MS" size=2>
    <center>
    <?
    include "globale.inc.php3";
    include "fonction.inc.php3";
    $conn = connecte();
    updateCompteurs("page03");
    include "menu.html";
    echo "<br><br><b>" . getNom("page03") . "</b><br>visitée " . getCompteurs("page03") . " fois";
    deconnecte($conn);
    ?>
    </center>
    </font>
    </body>
    </html>
    5 Le principe est identique pour le fichier page04.php3, ou seules changent les références à la page (page04)
    Ce fichier comporte les lignes suivantes :
    <html>
    <head>
    </head>
    <body>
    <font face="Trebuchet MS, Comic Sans MS" size=2>
    <center>
    <?
    include "globale.inc.php3";
    include "fonction.inc.php3";
    $conn = connecte();
    updateCompteurs("page04");
    include "menu.html";
    echo "<br><br><b>" . getNom("page04") . "</b><br>visitée " . getCompteurs("page04") . " fois";
    deconnecte($conn);
    ?>
    </center>
    </font>
    </body>
    </html>
    6 Le principe est identique pour le fichier page05.php3, ou seules changent les références à la page (page05)
    Ce fichier comporte les lignes suivantes :
    <html>
    <head>
    </head>
    <body>
    <font face="Trebuchet MS, Comic Sans MS" size=2>
    <center>
    <?
    include "globale.inc.php3";
    include "fonction.inc.php3";
    $conn = connecte();
    updateCompteurs("page05");
    include "menu.html";
    echo "<br><br><b>" . getNom("page05") . "</b><br>visitée " . getCompteurs("page05") . " fois";
    deconnecte($conn);
    ?>
    </center>
    </font>
    </body>
    </html>




    Création du fichier de statistiques
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier stat.php3, il se trouve dans l'archive compteurs.zip
    2 Créer un fichier PHP stat.php3, contenant le code des statistiques
    Ce fichier comporte les lignes suivantes :
    <?
    include "globale.inc.php3";
    include "fonction.inc.php3";
    $conn = connecte();
    ?>
    <html>
    <head>
    </head>
    <body>
    <font face="Trebuchet MS, Comic Sans MS" size=2>
    <center>
    <? include "menu.html" ?>
    <br><br>
    Ci-dessous se trouve les <b>statistiques</b> du tutorial
    <br><br>
    <table cellspacing=0>
    <tr>
        <td align=center bgcolor="08119a">
            <font face="Trebuchet MS, Comic Sans MS" size=2 color="ffffff">
            Rang
            </font>
        </td>
        <td align=center bgcolor="08119a">
            <font face="Trebuchet MS, Comic Sans MS" size=2 color="ffffff">
            Page
            </font>
        </td>
        <td align=center bgcolor="08119a">
            <font face="Trebuchet MS, Comic Sans MS" size=2 color="ffffff">
            Nombre de hits
            </font>
        </td>
    </tr>
    <?
    $total = getTotalHitsCompteurs();
    $result = mysql_db_query($base, "select * from compteurs order by nbHit desc");
    $ligne = 1;
    $rang = 1;
    while ($row = mysql_fetch_object($result)) {
        $cpt = $row->nbHit;
        $nomComplet = $row->nomComplet;
        $url = $row->url;
        ?>
        <tr>
            <td align=center bgcolor="<? if ($ligne > 0) echo "ffffff"; else echo "eeeeff"; ?>">
                <font face="Trebuchet MS, Comic Sans MS" size=2>
                <? echo $rang ?>
                </font>
            </td>
            <td align=center bgcolor="<? if ($ligne > 0) echo "ffffff"; else echo "eeeeff"; ?>">
                <font face="Trebuchet MS, Comic Sans MS" size=2>
                <? if ($url != "") echo "<a href='$url'>$nomComplet</a>"; else echo $nomComplet; ?>
                </font>
            </td>
            <td align=center bgcolor="<? if ($ligne > 0) echo "ffffff"; else echo "eeeeff"; ?>">
                <font face="Trebuchet MS, Comic Sans MS" size=2>
                <? echo $cpt ?>
                </font>
            </td>
        </tr>
        <?
        $ligne = - $ligne;
        $rang++;
    }
    mysql_free_result($result);
    ?>
    <tr>
        <td align=center bgcolor="08119a" colspan=2>
            <font face="Trebuchet MS, Comic Sans MS" size=2 color="ffffff">
            <b>Total</b>
            </font>
        </td>
            <td align=center bgcolor="08119a">
            <font face="Trebuchet MS, Comic Sans MS" size=2 color="ffffff">
            <b><? echo $total ?></b>
            </font>
        </td>
    </tr>
    </table>
    </center>
    </font>
    <?
    deconnecte($conn);
    ?>
    </body>
    </html>
    Explication : voici les explications générales du fichier :
  • chargement du fichier globale.inc.php3 (include)
  • chargement du fichier fonction.inc.php3 (include)
  • connexion au serveur
  • chargement du menu (include)
  • création d'une table
  • affichage de la première ligne de la table (titre des colonnes)
  • récupération du nombre total de hits
  • requête pour accèder à tous les enregistrements de la table (triés par nombre de hits decroissants)
  • accès à chaque enregistrement (1 par 1)
  • ajout d'une ligne par enregistrement
  • bouclage tant qu'il y a des enregistrements
  • affichage de la dernière ligne du tableau (le total)
  • deconnexion




  • Conclusion
     


    Vous avez maintenant tous les exemples pour accèder et manipuler une base de données MySQL :
  • accès à la base de données (connexion et deconnexion)
  • accès à des enregistrement d'une table
  • mise à jour de champs dans une table...

    Résumé : voici la méthode résumé pour utiliser un compteur sur une page
  • ajoutez un enregistrement dans la table compteurs correspondant à la page
  • au début du fichier,
        - chargez le fichier globale.inc.php3 (include)
        - chargez le fichier fonction.inc.php3 (include)
        - connectez-vous au serveur
        - lancez la mise à jour de la page (updateCompteurs)
  • en fin de fichier, déconnectez-vous du serveur

    Rappels :

    Avant de commencer votre développement :
  • Lancez le serveur Apache
  • Lancez le serveur MySQL

    Pendant le développement :
  • Déposez vos sources dans la racine de votre site web () ou dans un sous-répertoire de cette racine

    Avant de quitter :
  • Arrêtez le serveur MySQL
  • Arrêtez le serveur Apache


    © Floppy /AD - 08/2000