Afficher un topic

Afficher un topic de notre forum


Dans notre dossier f_forum, nous allons créer une nouvelle page topic.php. Cette page affichera le topique créé par un de vos utilisateur.


Nous allons également modifier notre fichier .htaccess afin d'appliquer l'URL souhaitée pour récupérer l'identifiant de la catégorie et l'identifiant du topique.


Fichier .htaccess


RewriteRule ^forum/([0-9]+)/([0-9]+)$ f_forum/topic?id_forum=$1&id_topic=$2


Ensuite dans notre page topic.php nous allons afficher le topique de qui est stocké dans la table topic.


Page topic.php


<?php
  session_start();
  include('../bd/connexionDB.php'); // Fichier PHP contenant la connexion à votre BDD  
  // Récupération de l'id de la catégorie
  $get_id_forum = (int) trim(htmlentities($_GET['id_forum'])); 
  // Récupération de l'id du topic
  $get_id_topic = (int) trim(htmlentities($_GET['id_topic']));
  // Si l'une des variables est vide alors on redirige vers la page forum
  if(empty($get_id_forum) || empty($get_id_topic)){
    header('Location: /forum');
    exit;
  }
  // On va sélectionner les informations nécessaire pour afficher notre topic
  $req = $DB->query("SELECT t.*, DATE_FORMAT(t.date_creation, 'Le %d/%m/%Y à %H\h%i') as date_c, U.prenom
    FROM topic T
    LEFT JOIN utilisateur U ON U.id = T.id_user
    WHERE t.id = ? AND t.id_forum = ?
    ORDER BY t.date_creation DESC", 
    array($get_id_topic, $get_id_forum));
  $req = $req->fetch();
  
  if(!isset($req['id'])){
    header('Location: /forum/' . $get_id_forum);
    exit;
  }  
?>
<!DOCTYPE html>
<html>
  <head>
    <base href="/"/>
    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
    <title>Topic</title>
    <link rel="stylesheet" href="../css/bootstrap.min.css"/>
    <link rel="stylesheet" href="../css/style.css"/>
  </head>
  <body>
    <?php
      require_once('../menu.php');    
      ?>
      <div class="container">
        <div class="row">   
          <div class="col-sm-0 col-md-0 col-lg-0"></div>
          <div class="col-sm-12 col-md-12 col-lg-12">
            <h1 style="text-align: center">Topic : <?= $req['titre'] ?></h1>
            <div style="background: white; box-shadow: 0 5px 15px rgba(0, 0, 0, .15); padding: 5px 10px; border-radius: 10px">
              <h3>Contenu</h3>
              <div style="border-top: 2px solid #eee; padding: 10px 0"><?= $req['contenu'] ?></div>
              <div style="color: #CCC; font-size: 10px; text-align: right">
                <?= $req['date_c'] ?>
                par 
                <?= $req['prenom'] ?>
              </div>              
            </div>
          </div>
        </div>
      </div>
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
    <script src="../js/bootstrap.min.js"></script>
  </body>
</html>
Par Clouder le 26 Feb 2019
Vous pouvez télécharger les fichiers de l'article
Cette pub permet au site de vivre ...

3 commentaires

Tu veux participer ?
Alors connecte toi ou inscris toi et viens participer !
ops
le 13 May 2018 à 19:25

Salut merci d'avoir répondu j'étais déborder c'est dernier temps je viens de voir bref.. 


sa marche toujours pas toujours la même erreur avec la variable $req . au passage mon fichier de connexion a BDD : 

<?php

  define('DB_HOST', 'localhost');

  define('DB_NAME', 'friendme');

  define('DB_USERNAME', 'root');

  define('DB_PASSWORD', '');

  try{

      $db = new PDO("mysql:host=" .DB_HOST.";dbname=".DB_NAME, DB_USERNAME, DB_PASSWORD);



      $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

      $db->query('SELECT * FROM users');

  } catch(PDOException $e){

    die('erreur: '. $e->getMessage());



    }

}

?>


j'ai essayer c'est que ta donner en haut mais sa ma afficher plusieurs erreurs du coup sa ma souler . je suis vraiment bloqué merci encore une fois big up

Clouder
le 09 May 2018 à 21:18

Met plutôt ceci : 


// Fichier PHP contenant la connexion à votre BDD

if(!empty($_GET['id_forum']) || !empty($_GET['id_topic'])){

   header('Location: /');

   exit;

}



$get_id_forum = (int) $_GET['id_forum']; 

$get_id_topic = (int) $_GET['id_topic']; 



global $db;

$req = $db->query("SELECT * FROM topic

   LEFT JOIN users

   ON users.id = topic.id_user

   WHERE topic.id = ? AND topic.id_forum = ?

   ORDER BY date_creation DESC", 

   array($get_id_topic, $get_id_forum));



$req = $req->fetch(); 


dans ton fichier DB met ceci : 


// Déclaration d'une nouvelle classe

class connexionDB {

   private $host    = 'localhost';    // nom de l'host

   private $name    = 'name_bdd';     // nom de la base de donnée

   private $user    = 'root';         // utilisateur

   private $pass    = 'root';         // mot de passe

   private $connexion;



   function __construct($host = null, $name = null, $user = null, $pass = null){

      if($host != null){

         $this->host = $host;           

         $this->name = $name;           

         $this->user = $user;          

         $this->pass = $pass;

      }

      try{

         $this->connexion = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->name,

         $this->user, $this->pass, array(PDO::MYSQL_ATTR_INIT_COMMAND =>'SET NAMES UTF8', 

         PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));

      }catch (PDOException $e){

         echo 'Erreur : Impossible de se connecter  à la BDD !';

         die();

      }

   }

   

   public function query($sql, $data = array()){

      $req = $this->connexion->prepare($sql);

      $req->execute($data);



      return $req;

   }

   public function insert($sql, $data = array()){

      $req = $this->connexion->prepare($sql);

      $req->execute($data);

   }

}



$DB = new connexionDB();


ops
le 09 May 2018 à 17:01

voila mon code 🙁 c'est mon sur Youtube

<?php
  $req->prepare("SELECT * FROM topic LEFT JOIN users ON users.id = topic.id_user WHERE topic.id = ? AND topic.id_forum = ? ORDER BY date_creation DESC"); $req->execute([$get_id_topic, $get_id_forum]); 
  $req->fetch();
?>