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

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 topic 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 17 Oct 2018
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 repondu j'etait deborder c'est dernier temps je viens de voir bref..

sa marche toujour 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
if(session_status() == PHP_SESSION_NONE){
session_start();
}

require 'partials/_header.php';
require 'filters/aut_filter.php';
require_once('config/database.php'); /* Connexion à la db */
require_once('includes/functions.php');
// Fichier PHP contenant la connexion à votre BDD
if(!empty($_GET['id_forum'])){
if(!empty($_GET['id_topic'])){
$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");
$req->execute([$get_id_topic, $get_id_forum]);

$req->fetch();


}
}
?>
<!DOCTYPE html>
<html>
<head>
<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>
<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 class="lead">Topic : <?= $req['titre'] ?></h1>

<div style="background: white; box-shadow: 0 5px 15px rgba(0, 0, 0, .15); padding: 5px 10px; border-radius: 10px">
<h1 class="lead">Contenu</h1>
<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['pseudo'] ?>
</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>
```