Bonjour, je cherche votre aide pour faire apparaitre mes annonces dans le sous-menu. Quand je clique sur un sous menu rien n'apparait.
J'ai donc des tables qui sont liées de la façon suivante:
Et ma table categories a la forme suivante:
id id_parent nom_fr nom_en ok_form 1 0 Accueil ... 0 ... 2 0 Immobilier ... 1 201 2 Vente de Maisons ... 1 202 2 Location de Maisons ... 1 203 2 Vente d Appartements ... 1 204 2 Location d Appartements ... 1 205 2 Bureaux ... 1 206 2 Terrains ... 1 ... 3 0 Véhicules ... 1 301 3 Voitures ... 1 301 3 Motos ... 1 302 3 Accessoires ... 1 ... 4 0 Multimedia ... 1 401 4 Téléphones ... 1 402 4 Télévisions ... 1 ... 5 0 ... ... 1
Je voudrais également savoir s'il faudrait ajouter un nouveau champ "page" dans la table categories pour la partie accueil et contact où il faut mettre des liens? Si oui, faudrait-il mettre des liens pour les autres catégories dont on va récupérer l'id pour l'affichage de l'annonce?
Voici le code de mon menu (dynamique):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 function getMenu( $id_parent=0 ) { global $bdd; $sql_lang = (!empty(($_SESSION['lang']) && in_array($_SESSION['lang'], ['fr','en','es']) ))? $_SESSION['lang'] : 'fr'; // on s'assure que la langue est correcte $sql = "SELECT id, id_parent, nom_".$sql_lang." AS nom FROM categories WHERE id_parent = :id_parent ORDER BY id "; try{ $req = $bdd->prepare($sql); $req->execute( array(':id_parent'=>$id_parent) ); $res = $req->fetchAll(PDO::FETCH_ASSOC); }catch(Exception $e){ echo "Erreur dans la requête " . $sql; $res = false; } return $res; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 <div id="menu>"> <nav> <label for="menu-mobile" class="menu-mobile">Menu</label> <input type="checkbox" id="menu-mobile" role="button"> <?php $menus = getMenu(0); echo '<ul>'; foreach ($menus as $menu) { echo "<li class='menu'><a href= 'affichage.php?id={$menu['id']}'>{$menu['nom']}</a>"; $sous_menus = getMenu($menu['id']); if ($sous_menus !== false) { echo '<ul>'; foreach ($sous_menus as $sous_menu) { echo "<li class='submenu'><a href= 'affichage.php?id={$sous_menu['id']}'>{$sous_menu['nom']} </a></li>"; } echo '</ul>'; } echo '</li>'; } echo '</ul>'; ?> </nav> </div>
Le code d'affichage:
J'ai séparé les fonctions, sinon ça se répercute sur les images.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 function getAffichage($categorie){ global $bdd; $sql_lang = (!empty(($_SESSION['lang']) && in_array($_SESSION['lang'], ['fr','en','es']) ))? $_SESSION['lang'] : 'fr'; $sql = ' SELECT A.* ,C.nom_'.$sql_lang.' AS CATEGORIE ,V.ville_'.$sql_lang.' AS VILLE FROM annonces A LEFT JOIN categories C ON C.id = A.id_categorie LEFT JOIN villes V ON V.id = A.id_ville WHERE A.id_categorie = ".$categorie." ORDER BY A.created_date DESC'; try { $req = $bdd->prepare($sql); $req->execute(); $res = $req->fetchAll(PDO::FETCH_ASSOC); } catch (Exception $e) { echo "Erreur dans la requête " . $sql; } // le temps des tests pour voir le résultat return $res; } function affichageAnnonce($categorie){ global $bdd; $annonces = getAffichage($categorie); $images = getImagesAnnonces(); $res = []; foreach ($annonces as $R) { $res[$R['id']] = $R; $imgs = !empty($images[$R['id']]) ? $images[$R['id']] : NULL; if(!empty($imgs)){ foreach($imgs as $I){ $res[$R['id']]['images'][] = !empty($I['IMG']) ? $I['IMG'] : null; } }else{ $res[$R['id']]['images'] = null; } } return $res; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 <?php $categorie = !empty($_GET['categorie']) ? trim($_GET['categorie']) : null; $affichage= affichageAnnonce($categorie); foreach ($affichage as $a) { echo '<div class="annoncepubs">'; $images = !empty($a['images']) ? $a['images'] : ['/no_image.png']; // array if (!empty($images)) { //boucle sur les images echo'<div class="container">'; echo ' <div class="slider" >'; foreach ($images as $img) { echo '<img class ="active" style="width:90px; height:90px;" src="' . $img . '">'; } echo "</div>"; // fin div slider . echo '<div class="cont-btn" >'; echo ' <div class="btn-nav left" > <'; echo " </div>"; echo ' <div class="btn-nav right" > >'; echo " </div>"; echo "</div>"; echo "</div>"; // fin div container } echo "<span class='category'>" . $a['CATEGORIE'] . "</span>"; echo "<span class='title'>" . $a['titre'] . "</span>"; echo "<span class='comment'>" . $a['description'] . "</span>"; echo "<span class='price'>" . $a['prix'] . "</span>"; echo "<span class='date'>" . $a['created_date'] . "</span>"; echo "</div>"; // fin div annoncepubs } ?>
Partager