Gestion des commentaires

Attention, depuis PHP 5.5.0, certaines extensions SQL sans doute utilisées dans ce tutoriel peuvent être obsolètes et seront supprimées dans le futur, vous devez donc adapter les codes! Exemples ici.
Nous allons à présent créer une nouvelle page nommé "commentaire.php" qui sera placé dans la partie admin. Cette page va nous permettre d'afficher les 25 derniers commentaires pour accéder aux modifications de ceux-ci (validation,modification,suppression, black-listage) et d'y répondent.

Nous partons du gabarit suivant :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr-fr">

<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<link href="../style.css" rel="stylesheet" type="text/css"/>
<title>Commentaire</title>
</head>

<body>

<div id="moncadre">
<?php include('menu.php');?>
<div class="cadrecentrale">
<h1>Commentaire</h1>
</div>
<?php include('../footer.php');?>
</div>

</body>
</html>
Tout le code à venir va être placé sous la balise "h1" . Pour commencer, on va se faire un petit mémo en couleur pour repérer plus facilement les différents statuts des commentaires :
<span style="border:1px solid black;margin:5px;padding:5px;" class="attentetd">En attente</span>
<span style="border:1px solid black;margin:5px;padding:5px;" class="validertd">Valider</span>
<span style="border:1px solid black;margin:5px;padding:5px;" class="bannitd">Banni</span>
On se connecte à la base de données :
<?php
include('../fonctions.php');
//On se connecte à la base de données
include('../connexion_bd.php');
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es du fichier connexion_bd.php.');
On va chercher les 25 derniers commentaires :
//On sélectionne les données des catégories
$result = mysql_query("SELECT id,id_page,pseudo,date,validation FROM COMMENTAIRE ORDER BY id DESC LIMIT 25");
Si il n'y a rien, on informe le webmaster :
//Si rien, on informe le webmaster
if(mysql_num_rows($result) == 0)
{
    echo '<div class="cadre"><p>Aucun commentaire pour le moment!</p></div>';
}
Si il y a quelque chose, on affiche les données dans un tableau :
//Il y a quelque chose, on affiche
else {
    echo '<table style="width: 100%;" cellpadding="2" cellspacing="2">
<tbody>
    <tr>
    <td class="hauttd">Pseudo/Date</td>
    <td class="hauttd">Modifier/valider</td>
    <td class="hauttd">Répondre</td>
    </tr>';
Dans la boucle while, on change les class CSS des éléments "td" en fonction du statut des commentaires (en plus simple, on change la couleur des cellules) :
while($affiche = mysql_fetch_array($result))
    {
        //On attribue une couleur différente selon le statut du commentaire
        if($affiche['validation'] == 0){$td='<td class="attentetd">';}//gris en attente
        if($affiche['validation'] == 1){$td='<td class="validertd">';}//vert validé
        if($affiche['validation'] == 2){$td='<td class="bannitd">';}//noir blacklisté
On affiche le début des données en créant des liens sur lesquels nous allons faire transiter quelques données :
//On affiche les données
        echo '<tr>'.$td.'Commentaire de '.$affiche['pseudo'].' déposé le '.convertit_date($affiche['date']).'</td>
    '.$td.'<a href="modifier-commentaire.php?id='.$affiche['id'].'&page='.$affiche['id_page'].'&statut='.$affiche['validation'].'"><img src="images/modifier.png" alt="Modifier"/></a></td>
    '.$td.'';
Pour que l'admin puisse répondre aux commentaires, on affiche un logo lui permettant de le faire tout en prenant en compte qu'il ne peut pas se répondre à lui même et que le commentaire doit être au préalable validé :
//Si c'est l'admin, il ne peut se répondre à lui même donc on bloque l'image
        //Si le commentaire na pas été validé, on ne peut pas répondre également
        if($affiche['pseudo']!=$pseudo_admin AND $affiche['validation']==1){
            echo '<a href="repondre-commentaire.php?id='.$affiche['id'].'&page='.$affiche['id_page'].'&pseudo='.$affiche['pseudo'].'"><img src="images/repondre.png" alt="Répondre"/></a>';
        }
Puis on referme le tableau et le reste :
echo '</td></tr>';
    }
    echo '</tbody></table>';
    //On ferme else
}
?>
Dans le dossier "images" de l'administration, récupérez cette image Répondre
Pour finir, ouvrez le fichier "menu.php" et lier cette nouvelle page :
<li><a class="menu" title="Commentaire" href="commentaire.php">Commentaire</a></li>
Visualisation des commentaires
Voir/déposer un commentaire (2) | Signaler un problème