HTACCESS

Afficher page "sujet" depuis page "forum"

Non Résolu

Bonjour à tous, nouvelle sur le site j'ai besoin d'aide svp.

Je ne sais pas si je suis au bon endroit et je m'en excuse.


J'ai suivi toutes les vidéos/tuto à la lettre de sitedudev avant de pouvoir faire mes propres modifications. Les pages .php sont donc à l'identique des vidéos.


Hors, lorsque je suis sur la page forum avec affichage de Catégorie 1 et catégorie 2, les liens sont bien actif, hors, lorsque je clique sur ceux-ci, je n'atteris pas sur la page sujet avec les nom prénom date/heure etc mais l'affichage dans la barre d'état est bien inscrit comme f_forum/forum/1 et/ou f_forum/forum/2 comme il le montre dans ses vidéos alors que je n'ai absolument rien changer dans ses fichiers qui sont laissés à l'origine pour le moment.


Dans le htaccess, j'ai tout les RewriteRules à partir de la suppression de .php. M'en manquerait-il ?


Quelqu'un pourrait-il m'aider svp ?


Vous remerciant beaucoup

563 vues
14 décembre 2021 à 3:23 (Édité)
Cette pub permet au site de vivre ...

6 commentaires

Bonjour bonjour @Flomir @Clouder . Je suis à nouveau là.


Comment ça va ?


Alors j'ai réglé le soucis sans htaccess pour le moment mais plus tard lorsque je maitriserai mieux la chose en question. ^^


Mais j'ai un soucis tout autre qui devrait se régler rapidement mais je t'avoue ne rien avoir trouvé jusqu'à maintenant c'est pour cela que je viens vers vous également car même dans les sujets de conversations présente sur le site, je ne trouve pas ce que je souhaite.


Tout le site me semble fonctionnel, sauf que sur la page topic j'ai un problème de variable, j'ai regardé sur le net, modifié avec intval() ou même boolval(), ou avec la règle des isset / empty, mais ça me dit qu'elle ne sont simplement pas défini.


J'ai supprimé tout le code, je les ai mise toute seule, inversée en $_GET['id_forum'] = $get_id_forum etc mais rien n'y fait.

J'ai aussi essayé les propositions faites sur différents topics, mais non, je ne comprend pas le problème, le code est inchangé par rapport à Clouder sauf que je ne passe pour le moment pas par htaccess mais tout mesliens sont fonctionnels, et lorsque je me clique sur "Sujet 1.1" par ex, je suis redirigé sur le forum, logique vu que les variables ne sont pas defini.


Du coup avez-vous déjà eu ce genre de soucis ??


Du coup vous êtes mon dernier recours avant que je déprime ahahah.


Merci beaucoup, bonnes fêtes et pleins de bisous


Message erreur (avec var_dump également)


  • Warning: Undefined array key "id_forum" in C:\xampp\htdocs\monsite\f_forum\topic.php on line 6


  • Warning: Undefined array key "id_topic" in C:\xampp\htdocs\monsite\f_forum\topic.php on line 7
  • int(0) (id_forum)
  • int(0)(id_topic)


et


ma page topic.php (requête et tout le tralala testée via PhpMyAdmin, toutes sont ok)


<?php
session_start();

include('../bd/connexionDB.php');

$get_id_forum = (int) trim(htmlentities($_GET['id_forum'])); // on rècupère l'ID de la catégorie
$get_id_topic = (int) trim(htmlentities($_GET['id_topic'])); // on rècupère l'ID de la catégorie
var_dump($get_id_forum, $get_id_topic);


/* if (empty($get_id_forum) || empty($get_id_topic)) { // si l'ID forum OU ID topic est vide
    header('Location: forum.php'); // on redirige
    exit;
} */

// On va récupérer toutes les informations des topics, mettre les dates au format 'Le 24/04/2018 à 21h32' 
// et ajouter les prénoms des personnes qui ont créé leur 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.php?id=' . $get_id_forum);
    exit;
} */

// *********************************************************************
// On vient sélectionner les informations nécessaire pour afficher les commentaires// postés sur ce topic// *********************************************************************
$req_commentaire = $DB->query(
    "SELECT TC.*, DATE_FORMAT(TC.date_creation, 'Le %d/%m/%Y à %H\h%i') as date_c, U.prenom, U.nom
        FROM topic_commentaire TC
        LEFT JOIN utilisateur U ON U.id = TC.id_user
        WHERE id_topic = ?
        ORDER BY date_creation DESC",

    array($get_id_topic)
);

$req_commentaire = $req_commentaire->fetchAll();

?>


<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
    <link rel="stylesheet" href="../css/bootstrap.css">
    <title> Topic </title>
</head>

<body>
    <?php
    require_once('menu_forum.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> <!-- fin div style -->

                <!-- On vient afficher les commentaire avec un foreach -->
                <div style="background: white; box-shadow: 0 5px 15px rgba(0, 0, 0, .15); padding: 5px 10px; border-radius: 10px; margin-top: 20px">
                    <h3>Commentaires</h3>

                    <div class="table-responsive">
                        <table class="table table-striped">
                            <?php foreach ($req_commentaire as $rc) {
                            ?>
                                <tr>
                                    <td><?= "De " . $rc['nom'] . " " . $rc['prenom'] ?></td>
                                    <td><?= $rc['text'] ?></td>
                                    <td><?= $rc['date_c'] ?></td>
                                </tr>
                            <?php
                            }
                            ?>
                        </table>
                    </div> <!-- fin div responsiv -->
                </div><!-- fin div style -->
            </div><!-- fin div class "col" -->
        </div><!-- fin div row -->
    </div><!-- fin div container -->


    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    <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="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
</body>

</html>

Coucou bonjour @Flomir


Comment vas-tu ?


Comme promis, je suis revenue donner des news et j'ai donc tout refais ^^, mais ca ne me redirige toujours pas ... je reste sur ma page forum. C'est assez vexant ahah, alors si tu peux me prêter un peu de ton temps ce serait vraiment sympas :-/


Tout va bien jusque là... et la redirection page "forum" sur page "sujet" en cliquant sur le lien de "catégorie 1" / "catégorie 2" me ramène ici http://localhost/monsite/f_forum/forum.php/1 ou http://localhost/monsite/f_forum/forum.php/2


Je rappelle que TOUT est à l'identique des vidéos hormis le chemin (logique hein ahah) pour y apposer mon projet dessus plus tard (jusqu'au 22 décembre avant les vacances, je suis tombée trop tard sur ses vidéos...... je suis dégu ahahah)


DES GROS BISOUS ET BEAUCOUP DE REMERCIEMENT POUR L'AIDE APPORTEE


Voici ma page forum.php :


<?php
session_start();

include('../bd/connexionDB.php'); // Fichier PHP contenant la connexion à votre BDD


$req = $DB->query(
    "SELECT * 
    FROM forum
    ORDER BY ordre"
);

$req = $req->fetchAll();

?>


<!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> Forum </title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
    <link rel="stylesheet" href="../css/bootstrap.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">Forum</h1>

                <div class="table-responsive" style="margin-top: 10px">
                    <table class="table table-striped">
                        <tr>
                            <th>ID</th>
                            <th>Titre</th>
                        </tr>
                        <?php
                        foreach ($req as $r) {
                        ?>
                            <tr>
                                <td>
                                    <?= $r['id']; ?>
                                </td>
                                <td>
                                    <a href="monsite/f_forum/forum.php/<?= $r['id'] ?>"><?= $r['titre'] ?></a>
                                </td>
                            </tr>
                        <?php
                        }

                        ?>
                    </table>
                </div>
            </div>
        </div>
    </div>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    <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="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
</body>

</html>


ma page .htaccess (mais je ne souhaite pas m'en servir vu que j'y connais pas grand chose, je vais faire à la basique je crois (je risque de mieux m'en sortir :-) )


## REECRIRE LE NOM DES PAGES
Options +FollowSymlinks -MultiViews

## On autorise le renommage de page
RewriteEngine on
RewriteBase /

## On autorise de renommer les pages
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^rechercher$ utilisateurs
RewriteRule ^profil/([a-zA-Z0-9]+)$ profile?id=$1

## On peut enlever le .php et renommer les pages comme on le souhaite
RewriteRule ^([^\.]+)$ $1.php 

## On réécrit notre URL et on met [0-9]+ car on sait que dans $1 on aura que des chiffres
RewriteRule ^voir-profil/([0-9]+)$ $voir_profil?id=$1

## FORUM
RewriteRule ^forum$ monsite/f_forum/forum
RewriteRule ^forum/([0-9]+)$ monsite/f_forum/sujet?id=$1 [L]


ma page sujet.php au pire des cas


<?php
session_start();

include('../bd/connexionDB.php'); // Fichier PHP contenant la connexion à votre BDD

$get_id = (int) trim(htmlentities($_GET['id'])); // On récupère l'id de la catégorie

if (empty($get_id)) { // On vérifie qu'on a bien un id sinon on redirige vers la page forum
    header('Location: forum.php');
    exit;
}
// On va récupérer toutes les informations des sujets, mettre les dates au format 'Le 24/04/2018 à 21h32' 
// et ajouter les prénoms des personnes qui ont créé leur sujet
$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_forum = ?
    ORDER BY t.date_creation DESC",

    array($get_id)
);

$req = $req->fetchAll();

?>

<!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>BLABLA</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">Forum</h1>


                <div class="table-responsive">
                    <table class="table table-striped">
                        <tr>
                            <th>ID</th>
                            <th>Titre</th>
                            <th>Date</th>
                            <th>Par </th>
                        </tr>
                        <?php
                        foreach ($req as $r) {  // Ici on va afficher tous nos enregistrements trouvés
                        ?>
                            <tr>
                                <td>
                                    <?= $r['id'] ?>
                                </td>
                                <td>
                                    <!-- On met un lien pour afficher le topic en entier -->
                                    <a href="monsite/f_forum/forum.php/<?= $get_id ?>/<?= $r['id'] ?>"><?= $r['titre'] ?></a>
                                </td>
                                <td>
                                    <?= $r['date_c'] ?>
                                </td>
                                <td>
                                    <?= $r['prenom'] ?>
                                </td>
                            </tr>
                        <?php
                        }
                        ?>
                    </table>
                </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>

Re @Jenny 😀


Merci pour ta réponse rapide !

Je garde ce topic ouvert en attendant 🙂


Je te souhaite bon courage alors !


et surtout,

Passe de Bonnes Fêtes de Fin d'Année !

Aaaaaah nan mais je me prend la tête avec depuis toutce temps pour ça...


Là j'ai eu un monstre bug avec PhpMyAdmin je dois tout refaire ainsi que toutes les pages alors j'essayerai dans quelques jours lorsque j'aurai fini et je viendrai te dire ce qu'il en est... Dans ce cas là un fichier zip serait bien venu ahaha


Merci beaucoup de m'avoir prêté du temps.

Je reviens dans 7-10 jours pour te confirmer ou pas, car avant le bug ça ne mettait un gros message d'erreur et j'avais dû mettre en commentaire quelques lignes du htaccess.


Mais là c'est galère, je reviens vers toi au plus vite promis.


Merci beaucoup 😋

Salut @Jenny 😁


Je pense avoir trouvé.


Ton site n'est pas directement dans le répertoire localhost c'est-à-dire que c'est pour toi :

localhost/monsite/index.php


Alors que dans la vidéo c'est directement :

localhost/index.php



Sauf que le .htaccess il me semble, va voir les fichiers après le localhost.


Donc pour moi il attend ton répertoire monsite.

Donc je pense qu'il doit te manquer dans ton .htaccess le monsite/ devant tes Règles de réécriture de page :


RewriteRule ^forum$ monsite/f_forum/forum 
RewriteRule ^forum/([0-9]+)$ monsite/f_forum/sujet?id=$1 
RewriteRule ^forum/([0-9]+)/([0-9]+)$ monsite/f_forum/topic?id_forum=$1&id_topic=$2 
RewriteRule ^forum/creer-mon-topic$ monsite/f_forum/creer_topic [L]


Et pourtant, tu l'as très bien fait dans ton href.


Je pense que l'erreur est là 😜

Je ne suis pas sûr de moi sur ce coup là, mais je parierai fort dessus !


Bon courage 🙂

Bonjour @Flomir,

Je te remercie beaucoup pour ta réponse rapide.


Je précise que je suis pour le moment en localhost : http://localhost/monsite/


Voici mon fichier .htaccess (qui n'est qu'écrit qu'en blanc chez moi) qui est situé au même niveau que les pages inscription, index etc.


# On autorise de renommer les pages
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f

# On peut enlever le .php et renommer les pages comme on le souhaite
RewriteRule ^([^\.]+)$ $1.php 

# On réécrit notre URL et on met [0-9]+ car on sait que dans $1 on aura que des chiffres
RewriteRule ^voir-profil/([0-9]+)$ $voir_profil?id=$1

# FORUM
RewriteRule ^forum$ f_forum/forum 
RewriteRule ^forum/([0-9]+)$ f_forum/sujet?id=$1 
RewriteRule ^forum/([0-9]+)/([0-9]+)$ f_forum/topic?id_forum=$1&id_topic=$2 
RewriteRule ^forum/creer-mon-topic$ f_forum/creer_topic [L]


Pour le forum, je clique sur "Forum" sur la page d'accueil (http://localhost/monsite/).


Le lien s'affiche comme tel : http://localhost/monsite/f_forum/forum.php. (M'affiche les catégorie 1 ID 3 et catégorie 2 ID 4


Lorsque je passe la souris sur Catégorie 1 ID 3, l'adresse donnée est http://localhost/forum/3.

En changeant les liens sur les pages sujet.php et forum.php comme suit cela ne fonctionne pas non plus.


Page forum.php (les * ne sont bien-sûr pas présent dans le code, c'est pour aider a repéré le lien ^^).


        					<div class="table-responsive" style="margin-top: 10px">
                                <table class="table table-striped">
                                    <tr>
                                        <th>ID</th>
                                        <th>Titre</th>
                                    </tr>
                                <?php
                                    foreach($req as $r){ 
                                    ?>  
                                        <tr>
                                        	<td><?= $r['id'] ?></td>
                           *****************<td><a href="monsite/f_forum/forum/<?= $r['id'] ?>"><?= $r['titre'] ?></a></td>********* lien d'origine selon vidéo "forum/[...]"
                                        </tr>   
                                     <?php
                                      }
                                     ?>
                                  </table>
                                </div>


Page sujet.php

					<div class="table-responsive">
                        <table class="table table-striped">
                            <tr>
                                <th>ID</th>
                                <th>Titre</th>
                                <th>Date</th>
                                <th>Par </th>
                            </tr>
                        <?php
                            foreach($req as $r){  // Ici on va afficher tous nos enregistrements trouvés
                            ?>  
                                <tr>
                                    <td><?= $r['id'] ?> </td>

                                    <!-- On met un lien pour afficher le topic en entier -->
            *************************<td><a href="monsite/f_forum/<?= $get_id?>/<?= $r['id']?>"><?= $r['titre'] ?></a></td>***** lien d'origine selon vidéo "forum/[...]"
  
                                      <td><?= $r['date_c'] ?></td>
                                      
                                      <td><?= $r['prenom'] ?></td>
                                  </tr>   
                              <?php
                              }
                          ?>
                          </table>                    
                      </div>


Tout est à l'identique de ses vidéos (code sous vidéo), à moins que j'ai raté quelques chose.


PS: chemin de mes fichiers :

C:\xampp\htdocs\monsite


Je précise également que c'est la première fois que j'utilise htaccess et que même s'il n'y en a pas, ce n'est pas bien grave (je crois).


Merci beaucoup

Cette pub permet au site de vivre ...