TUTO PHP - ESPACE COMMENTAIRE

PrimFX Boris ('PrimFX') Le 10 avril 2016

Vous avez été quelques uns à me demander un tuto sur la création d'un espace commentaire... Le voici ! Bien sûr, je vous montre comme d'habitude une base qui pourra être adaptée selon vos envies ainsi que la structure globale de votre site 😉
Code du tuto:
<meta charset="utf-8" />
<?php
$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_commentaires;charset=utf8','root','');
if(isset($_GET['id']) AND !empty($_GET['id'])) {
   $getid = htmlspecialchars($_GET['id']);
   $article = $bdd->prepare('SELECT * FROM articles WHERE id = ?');
   $article->execute(array($getid));
   $article = $article->fetch();
   if(isset($_POST['submit_commentaire'])) {
      if(isset($_POST['pseudo'],$_POST['commentaire']) AND !empty($_POST['pseudo']) AND !empty($_POST['commentaire'])) {
         $pseudo = htmlspecialchars($_POST['pseudo']);
         $commentaire = htmlspecialchars($_POST['commentaire']);
         if(strlen($pseudo) < 25) {
            $ins = $bdd->prepare('INSERT INTO commentaires (pseudo, commentaire, id_article) VALUES (?,?,?)');
            $ins->execute(array($pseudo,$commentaire,$getid));
            $c_msg = "<span style='color:green'>Votre commentaire a bien été posté</span>";
         } else {
            $c_msg = "Erreur: Le pseudo doit faire moins de 25 caractères";
         }
      } else {
         $c_msg = "Erreur: Tous les champs doivent être complétés";
      }
   }
   $commentaires = $bdd->prepare('SELECT * FROM commentaires WHERE id_article = ? ORDER BY id DESC');
   $commentaires->execute(array($getid));
?>
<h2>Article:</h2>
<p><?= $article['contenu'] ?></p>
<br />
<h2>Commentaires:</h2>
<form method="POST">
   <input type="text" name="pseudo" placeholder="Votre pseudo" /><br />
   <textarea name="commentaire" placeholder="Votre commentaire..."></textarea><br />
   <input type="submit" value="Poster mon commentaire" name="submit_commentaire" />
</form>
<?php if(isset($c_msg)) { echo $c_msg; } ?>
<br /><br />
<?php while($c = $commentaires->fetch()) { ?>
   <b><?= $c['pseudo'] ?>:</b> <?= $c['commentaire'] ?><br />
<?php } ?>
<?php
}
?>

A propos de l'auteur

PrimFX
Boris ('PrimFX')

Je m'appelle Boris, j'ai 22 ans et je suis passionné d'informatique. Suite à mes études (Licence Informatique puis MSc Computer Science au Trinity College Dublin), je gère l'entreprise Single Quote co-fondée en 2019 et je profite de mon temps libre pour partager ma passion à travers des vidéos & articles 😃

Votre commentaire

Vous devez être connecté pour poster un commentaire. Se connecter ou Créer un compte

Commentaires 29

  • JJM-valdoise Le 2 avril, à 11:25 (Édité le 2 avril 2022 à 11:26) | Répondre

    Salut,
    Désoler mais je suis nul et j'ai un site en HTML5 et CSS3. Donc j'aimerais savoir si c'était possible de tout resevoir sur un boite mail (GMAIL) (axel.colas08@gamil.com). Voici la meinne si tu veux me contacter.
    Merci et c'est du super boulo.

  • Baeni Le 6 juin, à 16:23 | Répondre

    Salut tout le monde, j'ai un problème par rapport à l'espace commentaire.jai 3 tables en relation dont table article, table utilisateur et table commentaire, le système fonctionne très bien mais j'aimerai afficher le nom de chaque utilisateur à son commentaire au lieu de son id

  • pauclair Le 13 novembre, à 16:19 | Répondre

    bonjour!
    @sosoa si tu a bien crée les deux table comme dans la vidéo et insérer depuis de phpmyadmin des articles vérifie que tu a bien renseigner le nom des tables si ses le cas ajout ce code sur le lien dans la bar d'adresse du navigateur : ?id=1 comme ceci : http://localhost/article/commentaire.php?id=1 voila si ton lien ressemble a sa tout devrais êtres bons

  • gaby2501 Le 28 juin, à 09:31 | Répondre

    Bonjour,
    J'ai essayé d'intégrer ce tuto espace commentaire à mon site en lien avec mon espace admin et mon espace membre que j'ai créé grâce à vos tutos (Ces deux dernières parties fonctionnent très bien) mais du coup, j'ai laissé toute mes tables dans le même dossier. Je n'arrive pas à trouver d'ou vient mon erreur car la parties espace commentaire ne s'affiche pas.

  • _youri Le 24 juin, à 02:31 | Répondre

    impossible de faire tourner la page php chez moi !

  • makisq Le 3 avril, à 18:02 | Répondre

  • ben6 Le 28 septembre, à 22:10 | Répondre

    un tres bon tuto

  • nimol Le 5 août, à 16:30 | Répondre

    @PrimFX Comment afficher le nombre de commentaire.

  • Profil introuvable Le 1 août, à 03:22 | Répondre

    @Flopfireman Bonjour,

    les 3 premiers demandes de code sont gratuit.

    A bientot sur Prixmfx.com

  • MarvinMuller1997 Le 2 juin, à 10:48 | Répondre

    Salut PrimFX esque je pourrais avoir une photo de la table article de ce tuto please

  • Flopfireman Le 20 mai, à 17:34 | Répondre

    J'ai demandé le code. La première fois ça a pas marché. J'ai rechargé, maintenant il me demande d'avoir le compte premium. Je pensais que c'était gratuit !!?!?

  • chiccatelo Le 15 mars, à 21:24 | Répondre

    @hmedo oui moi aussi j'ai le méme probléme

  • Flata Le 23 janvier, à 18:13 | Répondre

    @PrimFX | Membre Premium et comment on fait pour mettre en place un système des réponses "Commentaires imbriqués" genre ?

  • malanezo Le 8 janvier, à 10:26 | Répondre

    moi aussi

  • steph5533 Le 29 décembre, à 19:40 | Répondre

    @Firegun tu as trouvé la solution? figure toi que j'ai le meme probleme.. quand j'enleve get id cela s'affiche mais j'ai d'autres erreurs

  • Firegun Le 27 novembre, à 12:37 | Répondre

    Salut j'ai créer mes tables et tout comme montré dans la video dans une bdd que j'ai appelé "test" du coup j ai modifié la troisième ligne en remplaçant le "espace_commentaires" mais quand je charge ma page rien ne s'affiche quelqu'un pour m'aider svp ?
    bonne journée

  • sosoa Le 24 juin, à 23:41 | Répondre

    Bonjour, excellent tuto. Pareil ma page ne s'affiche pas. Avez-vous une solution à ce problème qui intéresserons sûrement d'autres personnes?

  • hmedo Le 24 juin, à 14:42 | Répondre

    salut j'ai fait un copié collé du code et ma page n'affiche rien

  • naser Le 22 juin, à 02:12 | Répondre

    bonne soirée !! mon page n'affiche pas !! quel est le pb ?

  • ddc Le 4 juin, à 05:16 | Répondre

    impossible d'inserer le commentaire au niveau de la base de données .que faut il faire?

  • bob67 Le 16 mai, à 08:58 | Répondre

    Salut, une petite info complementaire pour le tuto, mettre une ancre dans le Form et la pointer au meme endroit histoire que quand on clic sur le bouton valider que la page remonte pas.

  • PrimFX Le 18 avril, à 16:54 | Répondre

    @theagar Pas si tu anticipes ça et que tu vérifies la présence du même commentaire sur le même article déjà existant avant de l'insérer dans ta base de donnée, comme je te l'ai dit dans un commentaire précédent :p

  • theagar Le 17 avril, à 21:08 | Répondre

    @PrimFX Et le problème c'est qu'il peut y avoir des doublons... :/

  • PrimFX Le 17 avril, à 18:46 | Répondre

    @theagar Ah si tu en as déjà un, oui :p Il te reste la technique de vérification des doublons du coup ;-)

  • theagar Le 17 avril, à 18:37 | Répondre

    @PrimFX mais le header('Location:...') va faire une headers already sent... :/

  • PrimFX Le 17 avril, à 15:51 | Répondre

    @theagar Effectivement, mais tu peux contourner ça en faisant par exemple une redirection type header('Location:...'); sur la même page que celle où a été posté le commentaire ! Comme ça, en rafraîchissant la page, l'action de renvoyer le formulaire ne sera plus proposée :D Pour que ce soit encore plus safe, tu peux vérifier si un commentaire qui contient le même "id_article" et le même "contenu" existe déjà, histoire d'éviter tout doublon ;-)

  • M69-74 Le 13 avril, à 14:36 | Répondre

    Encore un superbe tuto @PrimFX , merci !

  • JUBAKAB Le 10 avril, à 19:03 | Répondre

    Merci pour ce tuto génial, mais ce qui serais bien pour les débutants c'est que tu montres comment à la place de choisir un pseudo faire avec l'espace membre... etc ...

  • theagar Le 10 avril, à 15:56 | Répondre

    @PrimFX Le problème est que si l'utilisateur rafraîchit la page 30 fois le commentaire s'insère 30 fois dans ta bdd, non?