Création de la table, ajout des fonctions et mise en place du style CSS

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.
Ce tutoriel destiné à ajouter un petit système de commentaires lié à la création d'un site dynamique n'est sans doute pas ce qu'il ce fait de mieux, c'est "basique" mais fonctionnel et si vous pensez pouvoir l'améliorer, n'hésitez pas à utiliser le système de commentaires du site ou le forum pour en discuter ;). Prévoyez également un thermos de café, un tube d’antalgique, un sandwich voir même des cheveux de rechanges ... Histoire de voir ou vous mettez les pieds, vous pouvez voir la démo sur le site de testes http://creer.ton.site.free.fr.

Création de la table COMMENTAIRE :
--
-- Structure de la table `COMMENTAIRE`
--

CREATE TABLE IF NOT EXISTS `COMMENTAIRE` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_page` int(11) NOT NULL,
  `pseudo` text COLLATE latin1_general_ci NOT NULL,
  `email` varchar(50) COLLATE latin1_general_ci NOT NULL,
  `commentaire` text COLLATE latin1_general_ci NOT NULL,
  `ip` text COLLATE latin1_general_ci NOT NULL,
  `date` int(11) NOT NULL,
  `validation` enum('0','1','2') COLLATE latin1_general_ci NOT NULL,
  `suivre_sujet` varchar(3) COLLATE latin1_general_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;
Explication des champs :
id :  identifiant du commentaire.
id_page : identifiant de l'article.
pseudo : pseudo de l'utilisateur.
email : email de l'utilisateur.
commentaire : commentaire de l'utilisateur.
ip : adresse IP de l'utilisateur.
date : date au format timestamp.
validation : permet de savoir si le commentaire est en attente ou validé ou black-listé. Il prend 3 statuts différents. 0 » en attente | 1 » validé | 2 » black-listé. Un commentaire black-listé interdit l'IP et l'adresse email de l'auteur de poster un nouveau commentaire.
suivre_sujet : permet de savoir si l'utilisateur souhaite suivre les commentaires ou pas. Il prend 2 statuts différents, "Oui" et "Non". Si le statut du commentaire est sur "Oui", l'internaute recevra un email à chaque fois qu'un nouveau commentaire est validé par l'administrateur. L'utilisateur pourra également se désabonner des commentaires qu'il suit à chaque réception d'une notification.

Concernant le système de commentaires, nous allons utiliser quelques fonctions. Ouvrez le fichier "fonctions.php" et ajoutez-y les fonctions suivantes :
//Adresse email du webmaster
$adresse_email = "***";
//Pseudo du webmaster
$pseudo_admin = "***";

//Fonction pour l'ip
function getIp()
{
    if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
    {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    elseif(isset($_SERVER['HTTP_CLIENT_IP']))
    {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    }
    else
    {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

//Fonction pour générer un captcha aléatoire
function generer_code($taille)
{
    $caracteres = array("a", "b", "c", "d", "e", "f","g", "h", "i", "j", "k", "l","m",
    "n", "o", "p", "q", "r","s", "t", "u", "v", "w", "x","y","z", 0, 1, 2, 3, 4, 5, 6,
    7, 8, 9);
    $caracteres_aleatoires = array_rand($caracteres, $taille);
    $pass = "";
    foreach($caracteres_aleatoires as $i)
    {
        $pass .= $caracteres[$i];
    }
        return $pass;  
}
$pass = generer_code(8);

//Fonction pour convertir un timestamp en date française (utilisé dans les commentaires)
function convertit_date($timestamp_actuel) {
    setlocale(LC_TIME,'fr_FR','french','French_France.1252','fr_FR.ISO8859-1','fra');
    return ucwords(strftime("%A %d %B %Y", $timestamp_actuel));
}

//Fonction pour convertir un timestamp en date  (utilisé dans l'envoie du mail au webmaster)
function convertit_timestamp_en_date($timestamp_actuel) {
    return date("j-m-Y @ H:i:s", $timestamp_actuel);
}
La variable $adresse_email permet au webmaster de recevoir un mail quand un commentaire est posté.
La variable $pseudo_admin permet d'afficher le pseudo de l'admin et de modifier la couleur du cadre du commentaire de l'admin. dans le système de commentaires.
N'oubliez pas de remplir ces 2 variables!

Histoire que ce ne soit pas trop moche, nous intégrons quelques mises en formes CSS dans le fichier style.css.
.commentaire{
height: auto;
border: 1px solid #DDD;
margin:5px;
padding:5px;
background:#F7F7F7;
}
.cadre-commentaire{
height: auto;
background:#F1F7F7;
margin:5px;
padding:5px;
}
.cadre-commentaire-admin{
height: auto;
background:#DDD;
margin:5px;
padding:5px;
}
.form label,.form input,.form textarea,.form select{
display: block;
width: auto;
float: left;
margin-bottom: 10px;
background:white;
border:1px solid #DDD;
}
.form label {
text-align: right;
width: 150px;
padding-right: 20px;
padding-top:5px;
font-weight:bold;
background:#F7F7F7;
border:none;
}
.form br {
clear: left;
}
.form input[type=submit],.form input[type=reset]{
width: 70px;
margin-right:5px;
}
.commentaire-thematique {
color:#AAA;
font-size: 20px;
font-weight:bold;
margin: 5px 5px 20px 5px;
display:block;
}
.capcha{
color:white;
background:#0AF;
margin:5px;
padding:2px;
font-weight:bold;
float:left;
}
.date{
float:right;
}
.ok{
color:white;
height:auto;
margin:5px;
padding:5px;
background-color:#618F19;
font-weight:bold;
}
td {
text-align: center;
border: 1px solid #FFFFFF;
background-color:#FBFBFB ;
color:#000000;
}
.hauttd {
text-align: center;
font-weight: bold;
background-color:#ECFAFF;
}
.attentetd {
background-color: #FBFBFB;
}
.bannitd {
background-color: #000;
color: #FFF;
}
.validertd{
background-color: #669900;
}

Voir/déposer un commentaire (12) | Signaler un problème