IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Afficher les catégories et sous-catégories dans le Menu


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2021
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2021
    Messages : 81
    Par défaut Afficher les catégories et sous-catégories dans le Menu
    Bonjour, je n'arrive pas à afficher dans la barre de menu mes catégories et sous-catégories.

    Ma table catégories est de la forme suivante:

    id id_parent nom_fr nom_en ina=_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
    ...
    9 0 Contact 0

    La fonction getMenu:
    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;
    }
    Et le code pour le menu:
    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
    <nav>
      <label for="menu-mobile" class="menu-mobile">Menu</label>
      <input type="checkbox" id="menu-mobile" role="button">
     
      <?php
    // 1- on récupère les menus principaaux
    $menus = getMenu( 0 );	
     
    foreach($menus as $M)
    {
    // 2- on récupère les sous-menu de CE menu
    $sous_menu = getMenu( $M['id'] ); 
     
    // Si il n'y a pas de sous-menus
    if( empty($sous_menu) )
    {
    echo "		<li> <a href= "affichage.php?id_catégorie="> ".$M['nom']."</a></li>";
    }
    // Sinon (il y a des sous-menus)
    else
    {
    echo "	<ul ><a href= "affichage.php?id_catégorie=">'".$M['nom']."' </a></ul>";
     
    // 3 - affichage des sous-menus
    foreach($sous_menu as $SM)
    {
    echo "		<li> <a href= "affichage.php?id_catégorie="> ".$SM['nom']."</a></li>";
    }
     
    echo "	</ul>";
    }
    }
    ?>
    Si vous pouvez m'apporter une aide, merci

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 696
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 696
    Par défaut
    affichez le contenu des variables pour voir à quel endroit vous n'avez pas les données nécessaires.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2021
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2021
    Messages : 81
    Par défaut
    Bonjour Mathieu, merci pour votre réponse. Vous voulez dire avec un var_dump? Si oui, je ne peux pas car j'ai l'erreur suivante:
    Fatal error: Cannot redeclare getMenu() (previously declared in

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 696
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 696
    Par défaut
    cela veut dire que vous avez déclaré 2 fonctions avec le même nom. dans le message d'erreur devrait être indiqués les 2 fichiers et les lignes de ces déclaration.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2021
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2021
    Messages : 81
    Par défaut
    C'était parce que j'avais inclus dans la page du header la page des fonctions (déjà incluse dans la page accueil.php).
    Le PROBLEME c'est que les menus et sous-menus s'affichent en même temps. Voici ce que ça donne en photo:
    Nom : C2.png
Affichages : 868
Taille : 37,9 Ko

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 343
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 343
    Billets dans le blog
    17
    Par défaut
    Regarde le HTML produit, il y a un problème.

    Tu fais :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <ul>Menu</ul>
    <li>Sous-menu 1</li>
    <li>Sous-menu 2</li>
    </ul>

    Alors qu'il faudrait :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <ul>
        <li>Menu
            <ul>
                <li>Sous-menu 1</li>
                <li>Sous-menu 2</li>
            </ul>
        </li>
    </ul>

    Indente correctement ton script, tu y verras plus clair

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Afficher toutes les catégories dans un TCD
    Par Vidjaya dans le forum Excel
    Réponses: 3
    Dernier message: 04/04/2019, 17h49
  2. [MySQL] Afficher les données d'une table dans un menu déroulant
    Par MartialBalet dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 10/06/2016, 16h32
  3. [2.x] Afficher les catégories dans la liste des films
    Par Elwood J. Blues dans le forum Symfony
    Réponses: 2
    Dernier message: 06/09/2011, 08h18
  4. Ordonner les catégories dans une PropertyGrid
    Par Papy214 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/02/2009, 10h27
  5. Réponses: 2
    Dernier message: 02/03/2007, 21h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo