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



Un livre d'or
(PHP4 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 global.inc.php
  • Création du fichier fonction.inc.php
  • Création du fichier de saisie d'un message
  • Création du fichier de sauvegarde d'un message
  • Création du fichier d'affichage du livre d'or
  • 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 utiliser un livre d'or, en accèdant à une table de la base mySQL

    Pour illustrer le tutorial, nous allons créer
  • 1 table dans la base MySQL pour stocker les informations du livre
  • 1 fichier include contenant les variables globales au tutorial
  • 1 fichier include contenant les fonctions utilisées dans le tutorial
  • 1 fichier permettant la création d'un nouveau message dans le livre
  • 1 fichier permettant la sauvegarde du message dans la base
  • 1 fichier permettant l'affichage du livre d'or

    Vous pouvez vous rendre compte du résultat en regardant le livre d'or du site, qui reprend exactement le principe expliqué ici

    Au préalable, vous devez avoir installé Apache, PHP 4 et MySQL (cf. tutorial sur l'installation d'apache + PHP 4 + 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 livredor.zip (fichier livredor.sql)
    2 Créez une base de donnée lfa à l'aide de phpMyAdmin
    3 Créez la table livredor dans votre base de données lfa, à l'aide de phpMyAdmin
    Cette table est définie ainsi :
    #
    # Structure de la table 'livredor'
    #
    CREATE TABLE livredor (
        datePost datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
        comment text NOT NULL,
        auteur varchar(255) NOT NULL,
        mail varchar(255) NOT NULL,
        url varchar(255) NOT NULL,
        PRIMARY KEY (datePost)
    );
    INSERT INTO livredor VALUES (now(), 'Bravo, vous avez installés votre <b>livre d\'or</b> !', 'Floppy', 'floppy@fr.st', 'http://www.floppy.fr.st');
    Explication : voici l'explication des champs de la table :
  • datePost : clé primaire de la table, identifiant 1 enregistrement unique
  • comment : commentaire
  • auteur : auteur du message
  • mail : mail de l'auteur
  • url : url du site de l'auteur
    Remarque : Un enregistrement est également inséré dans la table
  • 4 Vous n'aurez plus besoin de phpMyAdmin pour la suite du tutorial




    Création du fichier global.inc.php
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier global.inc.php, il se trouve dans l'archive livredor.zip
    2 Créer un fichier d'include global.inc.php, 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.php
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier fonction.inc.php, il se trouve dans l'archive livredor.zip
    2 Créer un fichier d'include fonction.inc.php, contenant les fonctions d'accès à votre base
    Ce fichier est découpé en foncions (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 lignes au fichier :
    function connecte() {
        global $base, $host, $login, $pass;
        $conn = mysql_connect($host, $login, $pass);
        mysql_select_db($base);
        return $conn;
    }
    Utilise les variables globales $base, $host, $login et $pass, définies dans le fichier globale.inc.php
    Retourne l'identifiant de la connecion ($conn)
    4 Fonction deconnecte($conn) : déconnexion de la base
    Ajoutez ces lignes 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 getNbLivredor : retourne le nombre de messages dans le livre
    Ajoutez ces lignes au fichier :
    function getNbLivredor() {
        $result = mysql_query("select count(*) as res from livredor");
        $row = mysql_fetch_object($result);
        if ($row)
            $res = $row->res;
        else
            $res = 0;
        mysql_free_result($result);
        return $res;
    }
    Retourne le nombre de messages stockés dans le livre d'or
    6 Fonction addLivredor($auteur, $mail, $url, $comment) : ajoute un enregistrement dans le livre
    Ajoutez ces lignes au fichier :
    function addLivredor($auteur, $mail, $url, $comment) {
        $dateConnex = date("Y-m-d H:i:s");
        mysql_query("insert into livredor values('$dateConnex', '$comment', '$auteur', '$mail', '$url')");
    }
    Ajoute un enregistrement dans la table livredor, avec comme paramètres la date et l'heure courante ($datePost), le commentaire ($comment), le nom (ou le pseudo) de l'auteur ($auteur), le mail de l'auteur ($mail)et l'url de son site web ($url)
    7 Fermez le fichier PHP en ajoutant cette ligne en fin de fichier :
    ?>




    Création du fichier de saisie d'un message
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier addlivre.php, il se trouve dans l'archive livredor.zip
    Pour plus de clarté, le fichier et les explications sont séparés en plusieurs parties
    2 Créer un fichier addlivre.php contenant le code de saisie d'un nouveau commentaire
    Voici le début du fichier :
    <?
    include "global.inc.php";
    include "fonction.inc.php";
    $conn = connecte();
    ?>
    Explication : voici les explication de ces lignes
  • Chargement du fichier d'include global.inc.php contenant les variables de l'application
  • Chargement du fichier d'include fonction.inc.php contenant les fonctions de l'application
  • Connexion à la base
  • 3 Voici la suite du fichier :
    <html>
    <head>
        <title>Ajout d'un commentaire dans le livre d'or</title>
        <script language="JavaScript">
        <!--
        function validate(enreg) {
            if (document.enreg.auteur.value == "") {
                alert("Veuillez saisir votre nom ou votre pseudo.");
                document.enreg.auteur.focus();
                return false;
            }
            if (document.enreg.comment.value == "") {
                alert("Veuillez saisir votre commentaire.");
                document.enreg.comment.focus();
                return false;
            }
        }
        //-->
    </script>
    </head>
    <body>
    Explication : voici les explication de ces lignes
    Début du fichier HTML, et définition des fonctions en Javascript de vérification des champs auteur et commentaire qui doivent être renseignés
    4 Voici la suite du fichier :
    <center>
    <font face="Trebuchet MS, Comic Sans MS" size=2>
    Saisissez ci-dessous le commentaire
    <br><br>
    <form action="livreadd.php" method="post" name=enreg onSubmit="return validate(this)">
    <table cellpadding=0 border=0>
    <tr>
        <td bgcolor="000000">
        <table width=100% cellpadding=3 cellspacing=1 border=0>
        <tr>
            <td bgcolor="08119A" align=center><font face="Trebuchet MS, Comic Sans MS" size=2 color="FFFFFF">Ajout d'un commentaire</td>
        </tr>
        <tr>
            <td bgcolor="EEEEFF" align=center>
                <table width=100%>
                <tr>
                    <td align=right><font face="Trebuchet MS, Comic Sans MS" size=2>Nom (ou pseudo)</font></td>
                    <td align=center><font face="Trebuchet MS, Comic Sans MS" color="FF0000" size=2> <b>*</b> </font></td>
                    <td><input type=text name=auteur></td>
                </tr>
                <tr>
                    <td align=right><font face="Trebuchet MS, Comic Sans MS" size=2>Email</font></td>
                    <td> </td>
                    <td><input type=text name=mail></td>
                </tr>
                <tr>
                    <td align=right><font face="Trebuchet MS, Comic Sans MS" size=2>Site web</font></td>
                    <td> </td>
                    <td><input type=text name=url></td>
                </tr>
                <tr>
                    <td align=right><font face="Trebuchet MS, Comic Sans MS" size=2>Commentaire</font></td>
                    <td align=center><font face="Trebuchet MS, Comic Sans MS" color="FF0000" size=2> <b>*</b> </font></td>
                    <td><textarea name=comment cols=50 rows=5></textarea></td>
                </tr>
                <tr>
                <td colspan=3 align=center>
                    <input type=submit value="Enregistrer">
                    </font>
                </td>
                </tr>
                </table>
            </td>
            </tr>
        </table>
        </td>
    </tr>
    </table>
    </form>
    Explication : voici les explication de ces lignes
    Mise en place des champs du formulaire de saisie contenant
  • l'auteur du message
  • le mail de l'auteur (champ facultatif)
  • l'url du site de l'auteur (champ facultatif)
  • le commentaire à inclure dans le livre d'or
    Lors de la validation du formulaire, il y a une vérification des champs auteur et commentaire (cf fonction Javascript), et si la validation a réussie, il y a ouverture du fichier livreadd.php
  • 5 Voici la fin du fichier :
    <?
    deconnecte($conn);
    ?>
    </center>
    </font>
    </body>
    </html>
    Explication : voici les explication de ces lignes
  • Deconnexion de la base
  • Fermeture du fichier HTML




  • Création du fichier de sauvegarde d'un message
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier livreadd.php, il se trouve dans l'archive livredor.zip
    3 Créer un fichier livreadd.php contenant le code de sauvegarde du commentaire
    Voici le contenu du fichier :
    <?
    include "global.inc.php";
    include "fonction.inc.php";
    $conn = connecte();
    $auteur = $HTTP_POST_VARS["auteur"];
    $mail = $HTTP_POST_VARS["mail"];
    $url = $HTTP_POST_VARS["url"];
    $comment = $HTTP_POST_VARS["comment"];
    addLivredor($auteur, $mail, $url, $comment);
    deconnecte($conn);
    header("Location: livre.php");
    ?>
    Explication : voici les explication des lignes
  • Chargement du fichier d'include global.inc.php contenant les variables de l'application
  • Chargement du fichier d'include fonction.inc.php contenant les fonctions de l'application
  • Connexion à la base
  • Ajout de l'enregistrement dans la base
  • Deconnexion de la base
  • Redirection vers la page d'affichage




  • Création du fichier d'affichage du livre d'or
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier livre.php, il se trouve dans l'archive livredor.zip
    Pour plus de clarté, le fichier et les explications sont séparés en plusieurs parties
    2 Créer un fichier livre.php contenant le code d'affichage du livre d'or
    Voici le début du fichier :
    <?
    include "global.inc.php";
    include "fonction.inc.php";
    $conn = connecte();
    ?>
    Explication : voici les explication de ces lignes
  • Chargement du fichier d'include global.inc.php contenant les variables de l'application
  • Chargement du fichier d'include fonction.inc.php contenant les fonctions de l'application
  • Connexion à la base
  • 3 Voici la suite du fichier :
    <html>
    <head>
        <title>Livre d'or</title>
    </head>
    <body>
    <center>
    <font face="Trebuchet MS, Comic Sans MS" size=2>
    Il y a actuellement <b><? echo getNbLivredor() ?></b> commentaires dans le livre<br>
    Explication : voici les explication de ces lignes
  • Début du fichier HTML
  • Affichage du nombre de commentaires dans le livre (via la fonction getNbLivredor())
  • 4 Voici la suite du fichier :
    <?
    $nbComm = getNbLivredor();
    $nbCommParPage = 10;
    if (isset($HTTP_GET_VARS["page"]))
        $page = $HTTP_GET_VARS["page"];
    else
        $page = 1;
    $maxPage = ceil($nbComm / $nbCommParPage);
    $commDe = $nbCommParPage * ($page - 1);
    $commA = $commDe + $nbCommParPage;
    if ($commA > $nbComm)
        $commA = $nbComm;
    ?>
    <br>
    Explication : voici les explication de ces lignes
    Définition des variables pour l'affichage :
  • $nbComm : nombre total de commentaires dans le livre d'or
  • $nbCommParPage : nombre de commentaires à afficher par page (changer cette valeur selon vos préférences)
  • $page : page du livre actuellement affichée
  • $maxPage : nombre maximum de pages dans le livre
  • $commDe : numéro du premier commentaire de la page en cours
  • $commA : numéro du dernier commentaire de la page en cours
  • 5 Voici la suite du fichier :
    <table width=100% cellpadding=0 border=0>
    <tr>
        <td bgcolor="000000">
        <table width=100% cellpadding=3 cellspacing=1 border=0>
        <tr>
            <td bgcolor="FF0000" align=center>
            <font face="Trebuchet MS, Comic Sans MS" size=2 color="FFFFFF">
            <? echo "page $page / $maxPage" ?></font>
            </td>
        </tr>
        <tr>
            <td bgcolor="FFEEEE" align=center>
            <font face="Trebuchet MS, Comic Sans MS" size=2>
            <?
            for ($i = 1; $i < $maxPage + 1; $i++) {
                $from = $nbCommParPage * ($i - 1) + 1;
                $to = $from + $nbCommParPage - 1;
                if ($to > $nbComm)
                    $to = $nbComm;
                if ($i == $page)
                    echo "[$from-$to]\n";
                else
                    echo "[<a href='livre.php?page=$i'>$from-$to</a>]\n";
            }
            ?>
            </font>
            </td>
        </tr>
        </table>
        </td>
    </tr>
    </table>
    <br>
    <img src="ligne10.gif">
    <br><br>
    Explication : voici les explication de ces lignes
    Mise en place de la barre d'information indiquant :
  • La page actuellement affichée / le nombre de pages dans le livre
  • Les liens sur toutes les pages du livre
  • 6 Voici la suite du fichier :
    <?
    $newsLimite = date("Y-m-d", mktime(0,0,0,date("m"), date("d") - 7, date("Y")));
    $result = mysql_query("select * from livredor order by datePost desc limit $commDe, $nbCommParPage");
    $cpt = $commDe + 1;
    while ($row = mysql_fetch_object($result)) {
        $datePost = substr($row->datePost, 8, 2) . "-" . substr($row->datePost, 5, 3) . substr($row->datePost, 0, 4) . substr($row->datePost, 10, 9);
        $txt = $row->comment;
        $auteur = $row->auteur;
        $mail = $row->mail;
        $url = $row->url;
        ?>
        <table width=100% cellpadding=0 cellspacing=0>
        <tr>
            <td bgcolor="000000">
            <table width=100% cellpadding=3 cellspacing=1 border=0>
            <tr>
                <td bgcolor="08119A" width=5% align=center><font face="Trebuchet MS, Comic Sans MS" size=2 color="FFFFFF">Rang</font></td>
                <td bgcolor="08119A" width=95%>
                <table width=100%>
                <tr>
                    <td width=90% align=center>
                        <font face="Trebuchet MS, Comic Sans MS" size=2 color="FFFFFF">
                        <?
                        if ($row->datePost > $newsLimite)
                            echo "<img src='new.gif'>  <b>$auteur</b> ($datePost)  <img src='new.gif'>";
                        else
                            echo "<b>$auteur</b> ($datePost)";
                        ?>
                        </font>
                    </td>
                    <td width=10% align=right>
                        <?
                        if ($mail != "")
                            echo "<a href='mailto:$mail'><img src='mail.gif' border=0 alt='Envoyer un mail à $auteur'></a>";
                        if ($url != "")
                            echo "  <a href='$url' target='_blank'><img src='maison.gif' border=0 alt='Allez sur le site de $auteur'></a>";
                        ?>
                    </td>
                </tr>
                </table>
                </td>
            </tr>
            <tr>
                <td bgcolor="EEEEFF" width=5% align=center><font face="Trebuchet MS, Comic Sans MS" size=2><? echo $cpt ?></font></td>
                <td bgcolor="EEEEFF" width=95%><font face="Trebuchet MS, Comic Sans MS" size=2><? echo $txt ?></font></td>
            </tr>
            <tr>
                <td align=center bgcolor="FFEEEE" colspan=2 width=100%>
                    <font face="Trebuchet MS, Comic Sans MS" size=2>[<a href="addlivre.php">Ajouter</a>]</font>
                </td>
            </tr>
            </table>
        </td></tr>
        </table>
        <br>
        <?
        $cpt++;
    }
    mysql_free_result($result);
    Explication : voici les explication de ces lignes
    Mise en forme de chacuns des commentaires du livre dans un tableau contenant :
  • Le rang du commentaire dans le livre
  • Un icone 'new' si le commentaire a été posté il y a moins de 7 jours
  • Le nom de l'auteur du commentaire
  • La date à laquelle a été posté le commentaire
  • Un icone 'lettre' si l'auteur a saisie son email
  • Un icone 'maison' si l'auteur a saisie l'url de son site
  • Le commentaire
  • Une ligne permettant l'ajout d'un nouveau commentaire
  • 7 Voici la fin du fichier :
    deconnecte($conn);
    ?>
    </center>
    </font>
    </body>
    </html>
    Explication : voici les explication de ces lignes
  • Deconnexion de la base
  • Fermeture du fichier HTML




  • Conclusion
     


    Vous avez maintenant tous les exemples pour manipuler un livre d'or, avec accès à une base MySQL :
  • accès à la base de données (connexion et deconnexion)
  • accès à des enregistrement d'une table
  • ajout de champs dans une table...

    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 - 01/2003