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



Gestion des news
(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
  • Principe du tutorial
  • Création de la table des news dans MySQL
  • Création de la table des logins d'administration dans MySQL
  • Création du fichier d'include global.inc.php3
  • Création du fichier d'include fonction.inc.php3
  • Création du fichier de gestion des frames (frame.html)
  • Création du fichier du menu (newsMenu.html)
  • Création du fichier d'affichage des news (newsAll.php3)
  • Création du fichier de login d'administration des news (newsLogin.php3)
  • Création du fichier d'administration des news (newsAdmin.php3)
  • Création du fichier d'ajout d'une news (newsAdd.php3)
  • Création du fichier de redirection sur l'ajout d'une news (newsAdd2.php3)
  • Création du fichier de modification d'une news (newsMod.php3)
  • Création du fichier de redirection sur la modification d'une news (newsMod2.php3)
  • Création de fichier de redirection sur la suppression d'une news (newsDel.php3)
  • 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 des news dans la base  : 
    Nom de la table des logins dans la base  : 
    Remarque : ces valeurs apparaitront dans le tutorial sous cette forme : lfa



    Information sur le tutorial
     


    Ce tutorial explique comment gérer des news sur votre site (affichage et administration)

    Pour illustrer le tutorial, nous allons créer
  • 1 table dans la base MySQL pour stocker les news
  • 1 table dans la base MySQL pour stocker les administrateurs des news (personnes autorisées à modifier ou supprimer une news)
  • 1 fichier include contenant les variables globales au tutorial
  • 1 fichier include contenant les fonctions utilisées dans le tutorial
  • 1 fichier de gestion des frames (2 frames : 1 menu + le reste)
  • 1 fichier d'affichage du menu (frame du haut)
  • 1 fichier d'affichage de toutes les news depuis 1 mois
  • 1 fichier d'identification pour la gestion des news
  • 1 fichier permettant l'administration des news
  • 1 fichier pour l'ajout d'une news
  • 1 fichier de redirection sur l'ajout d'une news
  • 1 fichier pour la modification d'une news
  • 1 fichier de redirection sur la modification d'une news
  • 1 fichier de redirection sur la suppression d'une news

    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...



    Principe du tutorial
     


    Le principe des news est très simple : on affiche dans l'ordre chronologique inverse (du plus récent au plus ancien) la liste des news du site
    Dans ce tutorial, on affichera uniquement les news du dernier mois (à compter de la date courante) et, sur les news qui ont moins de 7 jours, on rajoutera un petit logo
    Ces valeurs (1 mois et 7 jours) sont facilement modifiables dans les sources

    N'importe qui peut visualiser les news, mais seules les personnes autorisées peuvent en ajouter, en modifier ou en supprimer
    C'est pour cette raison que l'on va également gérer une identification permettant l'accès à l'administration des news



    Création de la table des news dans MySQL
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier de création de la table des news, il se trouve dans l'archive news.zip (fichier newsTable.sql)
    2 Créez une base de donnée lfa à l'aide de phpMyAdmin
    3 Créez la table newsTable dans votre base de données lfa, à l'aide de phpMyAdmin
    Cette table est définie ainsi :
    #
    # Structure de la table 'newsTable'
    #
    CREATE TABLE newsTable (
        datePost datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
        sujet text NOT NULL,
        PRIMARY KEY (datePost)
    );
    #
    # Contenu de la table 'newsTable'
    #
    INSERT INTO newsTable VALUES(now(), 'La gestion des <b>news</b> est en place !');
    Explication : voici l'explication des champs de la table :
  • datePost : clé primaire de la table, en fonction de la date et de l'heure de dépot de la news
  • sujet : texte de la news
    Remarque : Un enregistrement est également inséré dans la table




  • Création de la table des logins d'administration dans MySQL
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier de création de la table des logins, il se trouve dans l'archive news.zip (fichier newsLogin.sql)
    2 Créez la table newsLogin dans votre base de données lfa, à l'aide de phpMyAdmin
    Cette table est définie ainsi :
    #
    # Structure de la table 'newsLogin'
    #
    CREATE TABLE newsLogin (
        login varchar(255) NOT NULL,
        mdp varchar(255) NOT NULL,
        UNIQUE login (login)
    );
    #
    # Contenu de la table 'newsLogin'
    #
    INSERT INTO newsLogin VALUES('login', 'password');
    Explication : voici l'explication des champs de la table :
  • login : clé unique de la table, représeantant l'identifiant d'un administrateur (login)
  • mdp : mot de passe associé à l'identifiant
    Remarque : Un enregistrement est également inséré dans la table. Si vous souhaitez donner les accès d'administration à d'autres personnes, il vous suffit de créer d'autres enregistrements dans cette table
  • 3 Vous n'aurez plus besoin de phpMyAdmin pour la suite du tutorial




    Création du fichier d'include global.inc.php3
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier global.inc.php3, il se trouve dans l'archive news.zip
    2 Créer un fichier d'include global.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 news.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 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 $host, $login, $pass;
        $conn = mysql_connect($host, $login, $pass);
        return $conn;
    }
    Utilise les variables globales $host, $login et $pass, définies dans le fichier global.inc.php3
    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 isLoginNewsOk($ident, $mdp) : retourne vrai (true) ou faux (false) selon si l'identifiant et le mot de passe passés en paramètre sont correctes
    Ajoutez ces lignes au fichier :
    function isLoginNewsOk($ident, $mdp) {
        global $base;
        $result = mysql_db_query($base, "select * from newsLogin where login='$ident' and mdp='$mdp'");
        $row = mysql_fetch_object($result);
        if ($row)
            $res = true;
        else
            $res = false;
        mysql_free_result($result);
        return $res;
    }
    Utilise la variable globale $base, définie dans le fichier global.inc.php3
    Recherche dans la table des logins d'administration si l'enregistrement dont l'identifiant (vallant $ident) et le mot de passe (vallant $mdp) exsite
    Si c'est le cas, la connexion est autorisée (l'utilisateur est un administrateur) et on retourne true, sinon on retourne false
    6 Fonction getNbNews() : retourne le nombre total de news de la base
    Ajoutez ces lignes au fichier :
    function getNbNews() {
        global $base;
        $result = mysql_db_query($base, "select count(*) as cpt from newsTable");
        $row = mysql_fetch_object($result);
        if ($row)
            $cpt = $row->cpt;
        else
            $cpt = 0;
        mysql_free_result($result);
        return $cpt;
    }
    Utilise la variable globale $base, définie dans le fichier global.inc.php3
    Retourne le nombre d'enregistrements contenus dans la table des news
    7 Fonction newsDelete($id) : supprime la news dont la date de dépôt est $id (passée en paramètre)
    Ajoutez ces lignes au fichier :
    function newsDelete($id) {
        global $base;
        mysql_db_query($base, "delete from newsTable where datePost='$id'");
    }
    Utilise la variable globale $base, définie dans le fichier global.inc.php3
    Supprime de la table la news dont la date de dépôt (datePost) vaut $id (passé en paramètre)
    8 Fonction newsAdd($texte) : ajoute une news ($texte) dans la table
    Ajoutez ces lignes au fichier :
    function newsAdd($texte) {
        global $base;
        $dateConnex = date("Y-m-d H:i:s");
        mysql_db_query($base, "insert into newsTable values('$dateConnex', '$texte')");
    }
    Utilise la variable globale $base, définie dans le fichier global.inc.php3
    Récupère la date et l'heure du jour (format "AAAA-MM-JJ hh:mm:ss") et ajoute l'enregistrement dans la table
    Le contenu de la news est dans la variable $texte (passée en paramètre)
    9 Fonction newsModify($id, $texte) : modifie le texte ($texte) de la news dont la date de dépôt est $id (tous 2 passés en paramètres)
    Ajoutez ces lignes au fichier :
    function newsModify($id, $texte) {
        global $base;
        $query = "update newsTable set sujet = '$texte' where datePost = '$id'";
        mysql_db_query($base, $query);
    }
    Utilise la variable globale $base, définie dans le fichier global.inc.php3
    Met à jour le contenu de la news (variable $texte) dont l'identifiant est $id (tous 2 passés en paramètres)
    10 Fermez le fichier PHP en ajoutant cette ligne en fin de fichier :
    ?>




    Création du fichier de gestion des frames (frame.html)
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier frame.html, il se trouve dans l'archive news.zip
    2 Créer un fichier frame.html contenant le code de gestion des 2 frames
    Voici le contenu du fichier :
    <html>
    <head>
        <title>Tutorial - Les news</title>
    </head>
    <frameset framespacing=0 frameborder=0 border=false rows="40,*">
        <frame name=newsMenu scrolling=no noresize src="newsMenu.html">
        <frame name=newsMain scrolling=auto noresize src="newsAll.php3">
    </frameset>
    </html>
    Explication : voici l' explication de ces lignes
  • Définition du frameset : 2 frames (en ligne), dont la 1ere est haute de 40 pixel et l'autre de tout le reste de l'écran
  • Définition de la frame du haut (de nom newsMenu) qui va contenir le menu du tutorial (par défaut, fichier de menu : newsMenu.html
  • Définition de la frame du bas (de nom newsMain) qui va contenir les différents écrans (par défaut, fichier d'affiche de toutes les news du mois : newsAll.php3)




  • Création du fichier du menu (newsMenu.html)
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier newsMenu.html, il se trouve dans l'archive news.zip
    2 Créer un fichier newsMenu.html contenant le code de gestion du menu
    Voici le contenu du fichier :
    <html>
    <head>
        <title>Tutorial - Les news - Menu</title>
        <base target="newsMain">
    </head>
    <body bgcolor="ffffff">
    <center>
    <font face="Trebuchet MS, Comic Sans MS, Helvetica" size=2>
    [<a href="newsAll.php3">Les news depuis 1 mois</a>] [<a href="newsLogin.php3">Administrer les news</a>]
    </font>
    </center>
    </body>
    </html>
    Affiche le menu du tutorial : [Les news depuis 1 mois] (fichier newsAll.php3) et [Administrer les news] (fichier newsLogin.php3)
    Toutes les fenêtres seront ouvertes dans la frame du bas (de nom newsMain) grâce au <base target="newsMain">




    Création du fichier d'affichage des news (newsAll.php3)
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier newsAll.php3, il se trouve dans l'archive news.zip
    2 Créer un fichier newsAll.php3 contenant le code d'affichage des news depuis 1 mois
    Voici le début du contenu du fichier :
    <?
    include "global.inc.php3";
    include "fonction.inc.php3";
    $conn = connecte();
    ?>
    Explication : voici l'explication de ces lignes
  • Chargement du fichier d'include global.inc.php3 contenant les variables de l'application
  • Chargement du fichier d'include fonction.inc.php3 contenant les fonctions de l'application
  • Connexion à la base
  • 3 Voici la suite du fichier :
    <html>
    <head>
        <title>Tutorial - Les news - Toutes les news</title>
    </head>
    <body bgcolor="ffffff">
    <font face="Trebuchet MS, Comic Sans MS, Helvetica" size=2>
    <center>
    Voici les dernières <b>news</b> depuis 1 mois
    <br><br>
    Explication : voici l'explication de ces lignes
    Début du fichier HTML, définition de la police, centrage du texte
    4 voici la suite du fichier :
    <?
    $dateLimite = date("Y-m-d", mktime(0,0,0,date("m") - 1, date("d"), date("Y")));
    $newsLimite = date("Y-m-d", mktime(0,0,0,date("m"), date("d") - 7, date("Y")));
    $result = mysql_db_query($base, "select * from newsTable where datePost > '$dateLimite' order by datePost desc");
    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->sujet;
        ?>
        <table width=100% cellpadding=0 cellspacing=0>
        <tr>
            <td bgcolor="000000">
            <table width=100% cellpadding=3 cellspacing=1 border=0>
            <tr>
                <td bgcolor="08119f" width=95% align=center>
                <font face="Trebuchet MS, Comic Sans MS, Helvetica" size=2 color="ffffff">
                <? if ($row->datePost > $newsLimite)
                    echo "<img src='new.gif'>&nbsp;&nbsp;&nbsp;News du $datePost &nbsp;&nbsp;&nbsp;<img src='new.gif'>";
                else
                    echo "News du $datePost"; ?>
                </font>
                </td>
            </tr>
            <tr>
                <td bgcolor="eeeeff" width=95%>
                <font face="Trebuchet MS, Comic Sans MS, Helvetica" size=2><? echo $txt ?></font>
                </td>
            </tr>
            </table>
        </td></tr>
        </table>
        &nbsp;
        <?
    }
    mysql_free_result($result);
    Explication : voici l'explication de ces lignes
    Détermination de 2 dates limites :
  • Date limite de récupération des news du mois (date courante - 1 mois) : $dateLimite
  • Date limite de l'indicateur de la news (date courante - 7 jours) : $newsLimite
    Pour tous les enregistrements dont la date de dépôt (datePost) est supérieure à la date limite $datelimite :
  • On récupère le texte de la news
  • On affiche la date de dépôt de la news, et si cette date est supérieurs à la date limite $newsLimite, on l'entoure de logo
  • On affiche la news
  • 5 Voici la fin du fichier :
    deconnecte($conn);
    ?>
    </center>
    </font>
    </body>
    </html>
    Explication : voici l'explication de ces lignes
  • Déconnection de la base
  • Fermeture du fichier HTML




  • Création du fichier de login d'administration des news (newsLogin.php3)
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier newsLogin.php3, il se trouve dans l'archive news.zip
    2 Créer un fichier newsLogin.php3 contenant le code de la page d'identification d'un administrateur des news
    Voici le début du contenu du fichier :
    <?
    include "global.inc.php3";
    include "fonction.inc.php3";
    $conn = connecte();
    ?>
    Explication : voici l'explication de ces lignes
  • Chargement du fichier d'include global.inc.php3 contenant les variables de l'application
  • Chargement du fichier d'include fonction.inc.php3 contenant les fonctions de l'application
  • Connexion à la base
  • 3 Voici la suite du fichier :
    <html>
    <head>
        <title>Tutorial - Les news - Login d'administration</title>
    </head>
    <body bgcolor="ffffff">
    <center>
    <font face="Trebuchet MS, Comic Sans MS, Helvetica" size=2>
    <h2>Login d'administration</h2>
    Pour accèder aux fonctions d'administration des <b>news</b>, vous devez vous <b>identifier</b><br>
    (Pour ce tutorial, le login est '<b>login</b>' et le mot de passe est '<b>password</b>')
    <br>
    Explication : voici l'explication de ces lignes
    Début du fichier HTML, définition de la police, centrage du texte, affichage du titre
    4 voici la suite du fichier :
    <form action="newsAdmin.php3" method="GET" name=login>
    <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, Helvetica" size=2 color="ffffff">Identification</font>
            </td>
        </tr>
        <tr>
            <td bgcolor="eeeeff" align=center>
            <table>
            <tr>
                <td align=right><font face="Trebuchet MS, Comic Sans MS, Helvetica" size=2>login :</font></td>
                <td><input type=text name=ident size=30 value="<? echo $ident ?>"></td>
            </tr>
            <tr>
                <td align=right><font face="Trebuchet MS, Comic Sans MS, Helvetica" size=2>mot de passe :</font></td>
                <td><input type=password name=mdp size=30 value="<? echo $mdp ?>"></td>
            </tr>
            <tr>
                <td colspan=2 align=center><input type=submit value="Identifier"></td>
            </tr>
            </table>
            </td>
        </tr>
        </table>
        </td>
    </tr>
    </table>
    </form>
    Explication : voici l'explication de ces lignes
    Mise en place du formulaire de saisie des informations :
  • Champ pour l'identification
  • Champ pour le mot de passe
  • 5 Voici la fin du fichier :
    <?
    if ($erreur != "") {
        echo "<font color='ff0000'><b>Attention</b> : " . urlDecode($erreur) . "</font><br>";
    }
    deconnecte($conn);
    ?>
    </center>
    </font>
    </body>
    </html>
    Explication : voici l'explication de ces lignes
  • Mise en place du texte d'erreur ($erreur) passé en paramètre (si il y en a une)
  • Déconnection de la base
  • Fermeture du fichier HTML




  • Création du fichier d'administration des news (newsAdmin.php3)
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier newsAdmin.php3, il se trouve dans l'archive news.zip
    2 Créer un fichier newsAdmin.php3 contenant le code d'administration des news (lien pour ajouter, modifier et supprimer une news)
    Voici le début du contenu du fichier :
    <?
    include "global.inc.php3";
    include "fonction.inc.php3";
    $conn = connecte();
    if (! isLoginNewsOk($ident, $mdp)) {
        $err = urlEncode("Login ou mot de passe incorrecte !");
        deconnecte($conn);
        header("Location: newsLogin.php3?erreur=$err&ident=$ident&mdp=$mdp");
    }
    ?>
    Explication : voici l'explication de ces lignes
  • Chargement du fichier d'include global.inc.php3 contenant les variables de l'application
  • Chargement du fichier d'include fonction.inc.php3 contenant les fonctions de l'application
  • Connexion à la base
  • Vérification du login et du mote de passe grâce à la fonction isLoginNewsOk. En cas de nom validité, on redirige sur la page d'identification avec un message d'erreur ($err)
  • 3 Voici la suite du fichier :
    <html>
    <head>
        <title>Tutorial - Les news - Administration des news</title>
        <script language="JavaScript">
        <!--
            function conf(rang) {
                return (confirm("Etes-vous sur de vouloir supprimer la news n° " + rang + " ?"));
            }
        //-->
        </script>
    </head>
    <body bgcolor="ffffff">
    <font face="Trebuchet MS, Comic Sans MS, Helvetica" size=2>
    <center>
    <h2>Administration des news</h2>
    Explication : voici l'explication de ces lignes
  • Début du fichier HTML
  • Mise en place de la procédure de demande de confirmation pour une suppression
  • Définition de la police, centrage du texte, affichage du titre
  • 4 voici la suite du fichier :
    <?
    $nbNews = getNbNews();
    if ($nbNews > 0) {
        echo "Il y a actuellement <b>$nbNews</b> news dans la base<br>";
        $nbNewsParPage = 10;
        if ($page == "")
            $page = 1;
        $maxPage = ceil($nbNews / $nbNewsParPage);
        $newsDe = $nbNewsParPage * ($page - 1);
        $newsA = $newsDe + $nbNewsParPage;
        if ($newsA > $nbNews)
            $newsA = $nbNews;
        ?>
    Explication : voici l'explication de ces lignes
    Récupération du nombre de news dans la base, grâce à la fonction getNbNews()
    Si il y a des news :
  • On affiche le nombre de news dans la base
  • On prépare les variables nécessaires à l'affichage des news en paquet de 10 par page (modifiable en changeant la valeur de $nbNewsParPage
  • 5 Voici la suite du fichier :
        <br>
        <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, Helvetica" size=2 color="ffffff">
                <? echo "page $page / $maxPage" ?></font>
                </td>
            </tr>
            <tr>
                <td bgcolor="ffeeee" align=center>
                <font face="Trebuchet MS, Comic Sans MS, Helvetica" size=2>
                <?
                for ($i = 1; $i < $maxPage + 1; $i++) {
                    $from = $nbNewsParPage * ($i - 1) + 1;
                    $to = $from + $nbNewsParPage - 1;
                    if ($to > $nbNews)
                        $to = $nbNews;
                    if ($i == $page)
                        echo "[$from-$to]\n";
                    else
                        echo "[<a href='newsAdmin.php3?page=$i&ident=$ident&mdp=$mdp'>$from-$to</a>]\n";
                }
                ?>
                </font>
                </td>
            </tr>
            </table>
            </td>
        </tr>
        </table>
        <br>
        <img src="ligne10.gif">
        <br><br>
    Explication : voici l'explication de ces lignes
  • Mise en place du bandeau de navigation d'une page à l'autre
  • Affichage de la ligne de séparation entre le bandeau de navigation et les news
  • 6 voici la suite du fichier :
        <?
        $newsLimite = date("Y-m-d", mktime(0,0,0,date("m"), date("d") - 7, date("Y")));
        $result = mysql_db_query($base, "select * from newsTable order by datePost desc limit $newsDe, $nbNewsParPage");
        $cpt = $newsDe + 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->sujet;
            ?>
            <table width=100% cellpadding=0 cellspacing=0>
            <tr>
                <td bgcolor="000000">
                <table width=100% cellpadding=3 cellspacing=1 border=0>
                <tr>
                    <td bgcolor="08119a" align=center width=5%>
                    <font face="Trebuchet MS, Comic Sans MS, Helvetica" size=2 color="ffffff">Rang</font>
                    </td>
                    <td bgcolor="08119a" align=center width=95%>
                    <font face="Trebuchet MS, Comic Sans MS, Helvetica" size=2 color="ffffff">
                    <? if ($row->datePost > $newsLimite)
                        echo "<img src='new.gif'>&nbsp;&nbsp;&nbsp;News du $datePost &nbsp;&nbsp;&nbsp;<img src='new.gif'>";
                    else
                        echo "News du $datePost"; ?>
                    </font>
                    </td>
                </tr>
                <tr>
                    <td bgcolor="eeeeff" align=center width=5%>
                    <font face="Trebuchet MS, Comic Sans MS, Helvetica" size=2><? echo $cpt ?></font>
                    </td>
                    <td bgcolor="eeeeff" width=95%>
                    <font face="Trebuchet MS, Comic Sans MS, Helvetica" size=2><? echo $txt ?></font>
                    </td>
                </tr>
                <tr>
                    <td bgcolor="ffeeee" align=center colspan=2>
                        <font face="Trebuchet MS, Comic Sans MS, Helvetica" size=2>
                        <?
                        echo "[<a href='newsAdd.php3?ident=$ident&mdp=$mdp'>Ajouter</a>]";
                        echo "[<a href='newsMod.php3?id=" . urlEncode($row->datePost) . "&ident=$ident&mdp=$mdp'>Modifier</a>]";
                        echo "[<a href='newsDel.php3?id=" . urlEncode($row->datePost) . "&ident=$ident&mdp=$mdp' onClick='return conf($cpt);'>Supprimer</a>]";
                        ?>
                        </font>
                    </td>
                </tr>
                </table>
            </td></tr>
            </table>
            &nbsp;
            <?
            $cpt++;
        }
        mysql_free_result($result);
    Explication : voici l'explication de ces lignes
    Détermination de la date limite pour l'indicateur de la news (date courante - 7 jours)
    Pour chacunes des news de la page :
  • On affiche la date de dépôt de la news, éventuellement encadrée par le logo si c'est nécessaire
  • On affiche la news
  • On affiche un menu qui permet d'ajouter une autre news, de modifier la news ou de la supprimer (après confirmation)
  • 7 Voici la fin du fichier :
    } else {
        echo "Il n'y a pas de <b>news</b> dans la base<br><br>";
        echo "[<a href='newsAdd.php3?ident=$ident&mdp=$mdp'>Ajouter</a>]";
    }
    deconnecte($conn);
    ?>
    </center>
    </font>
    </body>
    </html>
    Explication : voici l'explication de ces lignes
  • Si il n'y a pas de news dans la base, on affiche un lien qui permet d'en créer une
  • Déconnection de la base
  • Fermeture du fichier HTML




  • Création du fichier d'ajout d'une news (newsAdd.php3)
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier newsAdd.php3, il se trouve dans l'archive news.zip
    2 Créer un fichier newsAdd.php3 contenant le code de saisie d'une nouvelle news
    Voici le début du contenu du fichier :
    <?
    include "global.inc.php3";
    include "fonction.inc.php3";
    $conn = connecte();
    if (! isLoginNewsOk($ident, $mdp)) {
        $err = urlEncode("Login ou mot de passe incorrecte !");
        deconnecte($conn);
        header("Location: newsLogin.php3?erreur=$err&ident=$ident&mdp=$mdp");
    }
    ?>
    Explication : voici l'explication de ces lignes
  • Chargement du fichier d'include global.inc.php3 contenant les variables de l'application
  • Chargement du fichier d'include fonction.inc.php3 contenant les fonctions de l'application
  • Connexion à la base
  • Vérification du login et du mote de passe grâce à la fonction isLoginNewsOk. En cas de nom validité, on redirige sur la page d'identification avec un message d'erreur ($err)
  • 3 Voici la suite du fichier :
    <html>
    <head>
        <title>Tutorial - Les news - Création d'une news</title>
    </head>
    <body bgcolor="ffffff">
    <center>
    <font face="Trebuchet MS, Comic Sans MS, Helvetica" size=2>
    <h2>Création d'une news</h2>
    Saisissez ci-dessous le texte de la news
    <br><br>
    Explication : voici l'explication de ces lignes
  • Début du fichier HTML
  • Centrage du texte, mise en place de la fonte, affichage du titre
  • 4 voici la suite du fichier :
    <form action="newsAdd2.php3" method="GET" name=addnews>
    <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, Helvetica" size=2 color="ffffff">
            Création d'une news</font>
            </td>
        </tr>
        <tr>
            <td bgcolor="eeeeff" align=center>
            <font face="Trebuchet MS, Comic Sans MS, Helvetica" size=2>
            Texte de la news :<br>
            <input type=hidden name=ident value="<? echo $ident ?>">
            <input type=hidden name=mdp value="<? echo $mdp ?>">
            <textarea name=texte cols=50 rows=5></textarea><br>
            <input type=submit value="Enregistrer">
            </font>
            </td>
        </tr>
        </table>
        </td>
    </tr>
    </table>
    </form>
    Explication : voici l'explication de ces lignes
    Mise en place du formulaire de saisie de la news
    5 Voici la fin du fichier :
    <?
    deconnecte($conn);
    ?>
    </center>
    </font>
    </body>
    </html>
    Explication : voici l'explication de ces lignes
  • Déconnection de la base
  • Fermeture du fichier HTML




  • Création du fichier de redirection sur l'ajout d'une news (newsAdd2.php3)
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier newsAdd.php3, il se trouve dans l'archive news.zip
    2 Créer un fichier newsAdd2.php3 contenant le code de redirection après la création d'une news
    Voici le contenu du fichier :
    <?
    include "global.inc.php3";
    include "fonction.inc.php3";
    $conn = connecte();
    if (! isLoginNewsOk($ident, $mdp)) {
        $err = urlEncode("Login ou mot de passe incorrecte !");
        deconnecte($conn);
        header("Location: newsLogin.php3?erreur=$err&ident=$ident&mdp=$mdp");
    }
    newsAdd($texte);
    deconnecte($conn);
    header("Location: newsAdmin.php3?ident=$ident&mdp=$mdp");
    ?>
    Explication : voici l'explication de ces lignes
  • Chargement du fichier d'include global.inc.php3 contenant les variables de l'application
  • Chargement du fichier d'include fonction.inc.php3 contenant les fonctions de l'application
  • Connexion à la base
  • Vérification du login et du mote de passe grâce à la fonction isLoginNewsOk. En cas de nom validité, on redirige sur la page d'identification avec un message d'erreur ($err)
  • Ajout de la news dans la base
  • Deconnexion
  • Redirection sur le fichier d'administration des news
    Remarque : Ce fichier ne sert que de redirection et permet uniquement d'enregistrer une news dans la base et de réafficher la page d'administration




  • Création du fichier de modification d'une news (newsMod.php3)
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier newsMod.php3, il se trouve dans l'archive news.zip
    2 Créer un fichier newsMod.php3 contenant le code de modification d'une news
    Voici le début du contenu du fichier :
    <?
    include "global.inc.php3";
    include "fonction.inc.php3";
    $conn = connecte();
    if (! isLoginNewsOk($ident, $mdp)) {
        $err = urlEncode("Login ou mot de passe incorrecte !");
        deconnecte($conn);
        header("Location: newsLogin.php3?erreur=$err&ident=$ident&mdp=$mdp");
    }
    ?>
    Explication : voici l'explication de ces lignes
  • Chargement du fichier d'include global.inc.php3 contenant les variables de l'application
  • Chargement du fichier d'include fonction.inc.php3 contenant les fonctions de l'application
  • Connexion à la base
  • Vérification du login et du mote de passe grâce à la fonction isLoginNewsOk. En cas de nom validité, on redirige sur la page d'identification avec un message d'erreur ($err)
  • 3 Voici la suite du fichier :
    <html>
    <head>
        <title>Tutorial - Les news - Modification d'une news</title>
    </head>
    <body bgcolor="ffffff">
    <center>
    <font face="Trebuchet MS, Comic Sans MS, Helvetica" size=2>
    <h2>Modification d'une news</h2>
    Ci-dessous se trouve le texte de la <b>news</b> à modifier
    <br><br>
    Explication : voici l'explication de ces lignes
  • Début du fichier HTML
  • Centrage du texte, mise en place de la fonte, affichage du titre
  • 4 voici la suite du fichier :
    <form action="newsMod2.php3" method="GET" name=modnews>
    <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, Helvetica" size=2 color="ffffff">
            Modification d'une news</font>
            </td>
        </tr>
        <tr>
            <td bgcolor="eeeeff" align=center>
            <font face="Trebuchet MS, Comic Sans MS, Helvetica" size=2>Texte de la news<br>
            <input type=hidden name=ident value="<? echo $ident ?>">
            <input type=hidden name=mdp value="<? echo $mdp ?>">
            <input type=hidden name=id value="<? echo $id ?>">
            <?
            $result = mysql_db_query($base, "select * from newsTable where datePost='$id'");
            $row = mysql_fetch_object($result);
            if ($row)
                $res = $row->sujet;
            else
                $res = "";
            mysql_free_result($result);
            ?>
            <textarea name=texte cols=50 rows=5><? echo $res ?></textarea><br>
            <input type=submit value="Enregistrer">
            </font>
            </td>
        </tr>
        </table>
        </td>
    </tr>
    </table>
    </form>
    Explication : voici l'explication de ces lignes
    Mise en place du formulaire de modification de la news, en récupérant la news que l'on doit modifier
    5 Voici la fin du fichier :
    <?
    deconnecte($conn);
    ?>
    </center>
    </font>
    </body>
    </html>
    Explication : voici l'explication de ces lignes
  • Déconnection de la base
  • Fermeture du fichier HTML




  • Création du fichier de redirection sur la modification d'une news (newsMod2.php3)
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier newsMod2.php3, il se trouve dans l'archive news.zip
    2 Créer un fichier newsMod2.php3 contenant le code de redirection après la modification d'une news
    Voici le contenu du fichier :
    <?
    include "global.inc.php3";
    include "fonction.inc.php3";
    $conn = connecte();
    if (! isLoginNewsOk($ident, $mdp)) {
        $err = urlEncode("Login ou mot de passe incorrecte !");
        deconnecte($conn);
        header("Location: newsLogin.php3?erreur=$err&ident=$ident&mdp=$mdp");
    }
    newsModify($id, $texte);
    deconnecte($conn);
    header("Location: newsAdmin.php3?ident=$ident&mdp=$mdp");
    ?>
    Explication : voici l'explication de ces lignes
  • Chargement du fichier d'include global.inc.php3 contenant les variables de l'application
  • Chargement du fichier d'include fonction.inc.php3 contenant les fonctions de l'application
  • Connexion à la base
  • Vérification du login et du mote de passe grâce à la fonction isLoginNewsOk. En cas de nom validité, on redirige sur la page d'identification avec un message d'erreur ($err)
  • Modification de la news
  • Deconnexion
  • Redirection sur le fichier d'administration des news
    Remarque : Ce fichier ne sert que de redirection et permet uniquement de modifier une news et de réafficher la page d'administration




  • Création de fichier de redirection sur la suppression d'une news (newsDel.php3)
     


    Etape Description
    1 Si vous souhaitez récupérer le fichier newsDel.php3, il se trouve dans l'archive news.zip
    2 Créer un fichier newsDel.php3 contenant le code de redirection après la suppression d'une news
    Voici le contenu du fichier :
    <?
    include "global.inc.php3";
    include "fonction.inc.php3";
    $conn = connecte();
    if (! isLoginNewsOk($ident, $mdp)) {
        $err = urlEncode("Login ou mot de passe incorrecte !");
        deconnecte($conn);
        header("Location: newsLogin.php3?erreur=$err&ident=$ident&mdp=$mdp");
    }
    newsDelete($id);
    deconnecte($conn);
    header("Location: newsAdmin.php3?ident=$ident&mdp=$mdp");
    ?>
    Explication : voici l'explication de ces lignes
  • Chargement du fichier d'include global.inc.php3 contenant les variables de l'application
  • Chargement du fichier d'include fonction.inc.php3 contenant les fonctions de l'application
  • Connexion à la base
  • Vérification du login et du mote de passe grâce à la fonction isLoginNewsOk. En cas de nom validité, on redirige sur la page d'identification avec un message d'erreur ($err)
  • Suppression de la news
  • Deconnexion
  • Redirection sur le fichier d'administration des news
    Remarque : Ce fichier ne sert que de redirection et permet uniquement de supprimer une news de la base et de réafficher la page d'administration




  • Conclusion
     


    Vous avez maintenant tous les exemples pour gérer les news sur votre site, avec accès à une base MySQL :
  • accès à la base de données (connexion et deconnexion)
  • accès à des enregistrement d'une table
  • ajout, modification et suppression d'enregistrements 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 - 02/2001