TUTO PHP - ESPACE COMMENTAIRE


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
PrimFX

Salut tout le monde ! Je m'appelle Boris, j'ai 18 ans et je suis passionné d'informatique et de technologie. Je partage cette passion à travers mes vidéos que tu peux retrouver sur YouTube sous le nom de PrimFX ou bien sur ce site bien sûr (tutoriels de programmation (HTML, CSS, PHP), gameplays, vlogs high-tech...). @+

A voir aussi

25 Commentaires

POSTER UN COMMENTAIRE

Vous devez être connecté pour pouvoir poster un commentaire...

Pas encore de compte ? Créez-en un ici !



  • Photo de profil de theagar

    theagar

    10 April 2016 à 15:56

    @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?

  • Photo de profil de JUBAKAB

    JUBAKAB

    10 April 2016 à 19:03

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

  • Photo de profil de Marius Chalumeau

    Marius Chalumeau

    13 April 2016 à 14:36

    Encore un superbe tuto @PrimFX , merci !

  • Photo de profil de PrimFX

    PrimFX | Membre Premium

    17 April 2016 à 15:51

    @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 😄 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 ;-)

  • Photo de profil de theagar

    theagar

    17 April 2016 à 18:37

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

  • Photo de profil de PrimFX

    PrimFX | Membre Premium

    17 April 2016 à 18:46

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

  • Photo de profil de theagar

    theagar

    17 April 2016 à 21:08

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

  • Photo de profil de PrimFX

    PrimFX | Membre Premium

    18 April 2016 à 16:54

    @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 😋

  • Photo de profil de bob67

    bob67

    16 May 2016 à 08:58

    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.

  • Photo de profil de ddc

    ddc

    04 June 2016 à 05:16

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

  • Photo de profil de naser

    naser

    22 June 2016 à 02:12

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

  • Photo de profil de hmedo

    hmedo

    24 June 2016 à 14:42

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

  • Photo de profil de sosoa

    sosoa

    24 June 2016 à 23:41

    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?

  • Photo de profil de Firegun

    Firegun

    27 November 2016 à 12:37

    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

  • Photo de profil de steph5533

    steph5533

    29 December 2016 à 19:40

    @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

  • Photo de profil de malanezo

    malanezo

    08 January 2017 à 10:26

    moi aussi

  • Photo de profil de Flata

    Flata

    23 January 2017 à 18:13

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

  • Photo de profil de chiccatelo

    chiccatelo

    15 March 2017 à 21:24

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

  • Photo de profil de Flopfireman

    Flopfireman

    20 May 2017 à 17:34

    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 !!?!?

  • Photo de profil de MarvinMuller1997

    MarvinMuller1997

    02 June 2017 à 10:48

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

  • Photo de profil de Drazozo

    Drazozo

    01 August 2017 à 03:22

    @Flopfireman Bonjour,



    les 3 premiers demandes de code sont gratuit.



    A bientot sur Prixmfx.com

  • Photo de profil de nimol

    nimol

    05 August 2017 à 16:30

    @PrimFX Comment afficher le nombre de commentaire.

  • Photo de profil de ben6

    ben6

    28 September 2017 à 22:10

    un tres bon tuto

  • Photo de profil de makisq

    makisq

    03 April 2018 à 18:02

  • Photo de profil de _youri

    _youri

    24 June 2018 à 02:31

    impossible de faire tourner la page php chez moi !