Bonjour,

Voila je rencontre un petit problème avec mon code

Décrivez ici votre code ou ce que vous cherchez à faire

Entourez votre code pour bi<?php
    session_start();

        //connexion à la base de données
        $bdd = new PDO("mysql:host=localhost;dbname=espace_membres", "root", "");

            $topics = $bdd -> query("SELECT * FROM f_topic ORDER BY id DESC");

                if(isset($_GET['categorie']) AND !empty($_GET['categorie'])){

                    $get_categorie = htmlspecialchars($_GET['categorie']);

                    $categories = array();
                    $req_categorie = $bdd -> query("SELECT * FROM f_categories");
                    while($c = $req_categorie -> fetch()){
                        array_push($categories, array($c['id'],urlencode($c['nom'])));
                    }
                    //var_dump($categories);

                    foreach($categories as $cat){
                        //var_dump($cat);
                        if(in_array($get_categorie, $cat)){
                            //var_dump($cat);
                            $id_categorie = intval($cat[0]);
                            //var_dump($id_categorie);
                        }
                    }
                    //var_dump("OK");

                    if(@$id_categorie){

                                if(isset($_GET['souscategorie']) AND !empty($_GET['souscategorie'])){
                                    $get_souscategorie = htmlspecialchars($_GET['souscategorie']);

                                    $souscategories = array();
                                    $req_souscategories = $bdd -> prepare("SELECT * FROM f_souscategorie WHERE id_categories = ?");
                                    $req_souscategories -> execute(array($id_categorie));
                                    while($c = $req_souscategories -> fetch()){
                                        array_push($souscategories, array($c['id'],urlencode($c['nom'])));
                                    }
                                    //var_dump($categories);

                                    foreach($souscategories as $cat){
                                        //var_dump($cat);
                                        if(in_array($get_souscategorie, $cat)){
                                            //var_dump($cat);
                                            $id_souscategorie = intval($cat[0]);
                                            //var_dump($id_categorie);
                                        }
                                    }
                                }

                                $req ='SELECT * FROM f_topic 
                            LEFT JOIN f_topic_categories ON f_topic.id = f_topic_categories.id_topic
                            LEFT JOIN f_categories ON f_categories.id = f_topic_categories.id_categories
                            LEFT JOIN f_souscategories ON f_souscategories.id = f_topic_categories.id_souscategories
                            WHERE f_categories.id = ?';

                                if(@$id_souscategorie){
                                    $req .= "AND f_souscategories.id = ?";
                                    $exec_array = array($id_categorie, $id_souscategorie);
                                    var_dump($id_souscategorie);
                                }
                                else{
                                    $exec_array = array($id_categorie);
                                }
                                //var_dump($req);
                                $top = $bdd -> prepare($req);
                                $top -> execute($exec_array);
                    }
                    else{
                        die("Erreur: catégorie introuvable ...");
                    }
                }
                else{
                    die("Erreur: aucune categorie sélectionnée... ");
                }

?>
<!DOCTYPE html>
<html>
<head>
    <title>Forum topic</title>
    <meta charset = "utf-8" />
</head>
<body>
    <div align = "center">
        <form>
            <table>
                <tr>
                    <th>SUJET</th>
                    <th>Message</th>
                    <th>Dernier message</th>
                    <th>Création</th>
                </tr>
                <?php while($t = $topics -> fetch()){ ?>
                <tr>
                    <td>
                        <h4><a href=""><?php echo $t['sujet']; ?></a></h4>
                    </td>
                    <td>48039483738</td>
                    <td>18/12/2016 à 22h 58 minutes<br/>de Momo</td>
                    <td><?php echo $t['date_heure_creation']; ?><br/>par Anonyme</td>
                </tr>
                <?php } ?>
            </table>
        </form>
    </div>
</body>
</html>en le mettre en forme

Ce que je veux

je veux que quand je mets categorie=peripérique dans l'url, j'obtiens des résultats

Ce que j'obtiens

5 réponses


Bonjour,

ta question n'est pas explicite mais si j'ai bien compris, tu veux une url du type : http://localhost/tatatata.php?categorie=CEQUETUVEUX
Si c'est ça, tu fais <a href="http;//localhost/tatata.php?categorie=<php echo $categorie; ?>">Lien</a>
au niveau de tatatatap.php, tu peux récuperer la categorie grâce à la variable REQUEST tu peux la récupérer comme ça :
$categorie = $_REQUEST[''categorie]; qui correspond à l'url categorie=...., par exemple ça aurait été php?teste=, tu fais $_REQUEST['teste']

Cordialement

Bonsoir.
Il te suffit de faire la requête SQL :

$req_categorie = $bdd->prepare("SELECT * FROM f_categories WHERE nom = :nom");
$req_categorie->execute(['nom' => $get_categorie]);
$categorie = $req_categorie->fetch();

Je ne vois pas où est la difficulté.
Par contre, évites les accents et caractères spéciaux dans l'url, prévois plutôt un système de slug pour ne pas avoir de problème par la suite.

momo1
Auteur

Merci à vous deux: Mehdikacim et Lartak d'avoir répondu.
Quand je réactualise la page y a rien qui s'affiche même pas le var_dump().
En plus si j'enlève les "//" du else{
die("Erreur: aucune categorie sélectionnée... ");
}
la page m'affiche : Erreur aucune categorie sélectionnnée.
Mehdikacim c'est exactement ça que je veux :http://localhost/tatatata.php?categorie=CEQUETUVEUX
Lartak comment faire un système de slug pour éviter les accents et les caractères séciaux dans l'url

Tu peut utiliser ça :

        $get_categorie = strtr($fichier, 
                    'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
                    'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
        $get_categorie = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);

Ensuite Lartak t'a donner ça :

$req_categorie = $bdd->prepare("SELECT * FROM f_categories WHERE nom = :nom");
$req_categorie->execute(['nom' => $get_categorie]);
$categorie = $req_categorie->fetch();

As-tu penser à récuperer ton $_GET ?

$get_categorie = $_GET['categorie'];
momo1
Auteur

Merci à vous tous d'avoir répondu.
j'ai toujours le mm problème. je sais pas pourquoi mais j'ai touours le même problême. Si vous voulez vous je peux faire un partage d'écran avec teamviewer comme ça vous verrez de quoi je parle.