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
je veux que quand je mets categorie=peripérique dans l'url, j'obtiens des résultats
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.
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'];
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.