CRÉER UN FORUM EN PHP - #7 Poster des réponses

PrimFX Boris ('PrimFX') Le 28 février 2016

Dans ce tuto, on commence doucement à mettre en place les réponses aux topics. Nous verrons prochainement comment les lister et comment les éditer, tout en conservant la date et l'heure de dernière édition !

  • topic.php
<?php
require('php/config.php');
require('php/functions.php');
if(isset($_GET['titre'],$_GET['id']) AND !empty($_GET['titre']) AND !empty($_GET['id'])) {
   $get_titre = htmlspecialchars($_GET['titre']);
   $get_id = htmlspecialchars($_GET['id']);
   $titre_original = $bdd->prepare('SELECT sujet FROM f_topics WHERE id = ?');
   $titre_original->execute(array($get_id));
   $titre_original = $titre_original->fetch()['sujet'];
   if($get_titre == url_custom_encode($titre_original)) {
      $topic = $bdd->prepare('SELECT * FROM f_topics WHERE id = ?');
      $topic->execute(array($get_id));
      $topic = $topic->fetch();
      $auteur = $bdd->prepare('SELECT * FROM membres WHERE id = ?');
      $auteur->execute(array($topic['id_createur']));
      $auteur = $auteur->fetch();
      if(isset($_POST['topic_reponse_submit'],$_POST['topic_reponse'])) {
         $reponse = htmlspecialchars($_POST['topic_reponse']);
         if(isset($_SESSION['id'])) {
            if(!empty($reponse)) {
               $ins = $bdd->prepare('INSERT INTO f_messages(id_topic,id_posteur,contenu,date_heure_post) VALUES (?,?,?,NOW())');
               $ins->execute(array($get_id,$_SESSION['id'],$reponse));
               $reponse_msg = "Votre réponse a bien été postée";
               unset($reponse);
            } else {
               $reponse_msg = "Votre réponse ne peut pas être vide !";
            }
         } else {
            $reponse_msg = "Veuillez vous connecter ou créer un compte pour poster une réponse";
         }
      }
   } else {
      die('Erreur: Le titre ne correspond pas à l\'id');
   }
   require('views/topic.view.php');
} else {
   die('Erreur...');
}
?>
  • views/topic.view.php
  <table class="forum">
   <tr class="header">
      <th class="sub-info w10">Auteur</th>
      <th class="main center">Sujet: <?= $topic['sujet'] ?></th>
   </tr>
   <tr>
      <td><?= $auteur['pseudo'] ?></td>
      <td><?= $topic['contenu'] ?></td>
   </tr>
</table>
<br />
<?php if(isset($_SESSION['id'])) { ?>
   <form method="POST">
      <textarea placeholder="Votre réponse" name="topic_reponse" style="width:80%"><?php if(isset($reponse)) { echo $reponse; } ?></textarea><br />
      <input type="submit" name="topic_reponse_submit" value="Poster ma réponse"></form>
   </form>
   <?php if(isset($reponse_msg)) { echo $reponse_msg; } ?>
<?php } else { ?>
   <p>Veuillez vous connecter ou créer un compte pour poster une réponse</p>
<?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 6

  • theagar Le 6 mars, à 11:32 | Répondre

    Bonjour,

    Pourrais-tu nous montrer comment tu créés tes chemin css une fois que tu utilises le htaccess. Parce que quand tu crées une page comme:
    /forum/kdfs alors le chemin est diférent que /acceuil. Comment peux-tu changer le chemin d'acces automatiquement sans chaques fois devoir inclure la page css d'une manière différente?

  • bigus Le 3 mars, à 20:27 | Répondre

    Bonsoir PimFX,
    dans la partie 2 de ton tuto, tu nous montres comment afficher les catégories et sous-catégories (qui s'incrémentent automatiquement à chaque ajout dans la base) ....j'aurais voulu afficher dans mon design une barre de recherche avec 2 entrées de type select : 1 pour choisir la catégorie et la seconde pour choisir une des sous-catégories dépendantes afin d'afficher uniquement ce que l'on cherche.
    Mon problème est que je n'arrive pas à le faire en une seule requête (un seul formulaire), je dois faire une entrée avec le choix catégorie qui une fois validé me donne le choix des sous-catégories concernées...ce qui n'est pas très agréable à l'utilisation.

    D'où ma question : est-ce réalisable en php avec une seule requête pour rendre fonctionnel une telle barre de recherche ou trouver un dérivatif avec javascript (c'est ce qui semble ressortir de mes recherches sur le net) mais que je ne connais pas?

    Dans les 2 cas, te serait-il possible de faire un petit tuto en apparté dessus !!!
    Merci.

  • bigus Le 3 mars, à 20:24 | Répondre

    Bonsoir PimFX,
    dans la partie 2 de ton tuto, tu nous montres comment afficher les catégories et sous-catégories (qui s'incrémentent automatiquement à chaque ajout dans la base) ....j'aurais voulu afficher dans mon design une barre de recherche avec 2 entrées de type select : 1 pour choisir la catégorie et la seconde pour choisir une des sous-catégories dépendantes afin d'afficher uniquement ce que l'on cherche.
    Mon problème est que je n'arrive pas à le faire en une seule requête (un seul formulaire), je dois faire une entrée avec le choix catégorie qui une fois validé me donne le choix des sous-catégories concernées...ce qui n'est pas très agréable à l'utilisation.

    D'où ma question : est-ce réalisable en php avec une seule requête pour rendre fonctionnel une telle barre de recherche ou trouver un dérivatif avec javascript (c'est ce qui semble ressortir de mes recherches sur le net) mais que je ne connais pas?

    Dans les 2 cas, te serait-il possible de faire un petit tuto en apparté dessus !!!
    Merci.

  • ViXo Le 29 février, à 17:02 | Répondre

    @PrimFX Non je suis tombé dessus par hasard sur l'accueil du site, mais il n'est pas resté longtemps

  • PrimFX Le 28 février, à 15:29 | Répondre

    @Azmog GG wp xD T'as anticipé l'URL et ID de l'article grâce au titre que j'avais mis dans la section "Prochaine Vidéo" du site ? :p

  • ViXo Le 28 février, à 13:31 | Répondre

    Commentaire posté avant la sortie de la vidéo ;-)