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 :

Menu dynamique catégories et sous catégories php


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 Menu dynamique catégories et sous catégories php
    Bonjour,

    Je me pose des questions avant de me lancer, et éviter d'avoir des surprises plus tard. Si vous pouvez m'apporter des réponses, ça serait gentil

    En fait, AYANT UNE BARRE DE RECHERCHE dont la recherche se fait en fonction de mes catégories et sous catégories soit en choisissant ou en tapant du texte, je souhaite ajouter celles-ci dans le menu déroulant.

    Dans ma table catégorie j'ai les champs suivant: id, libelle_fr, libelle_en, libelle_es. ==> Cette table est liée la table souscategories(qui contient un champs id_categorie)

    Dans ma table sous-catégorie: id, id_categorie, nom_fr, nom_en, nom_es. ==>Notre table souscoutaegories est liée à la table annonces (qui contient un champs id_souscategories).

    Le problème c'est que je ne sais pas où mettre ACCEUIL, CONTACT.

    QUESTIONS:

    ==>Faut-il modifier ma table categories en y ajoutant ACCUEIL et CONTACT et en leur donnant un id NULL? Si oui, dois-je modifier ma table souscategories?

    ==> Qu'est ce qu'on va ajouter dans le href= ?

    ==>Comment faire pour CREER UNE SEULE PAGE qui redirige vers la souscategories oucategories choisie à partir du href?

    ==> Auriez-vous d'autres choses à ajouter...? ça serait également un plus

    Merci d'avance

  2. #2
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    Bonjour,

    Il n'y a besoin que d'une seule table :

    t_categories :
    • id_categorie,
    • id_parent,
    • libelle_fr,
    • libelle_en,
    • libelle_es
    • ...

    Pour les catégories de niveau principal :
    • id_parent = 0 (ce qui vaut aussi pour ACCUEIL, CONTACT)

    Pour les sous-(sous-)catégories :
    • id_parent = l'id_categorie de la catégorie parente

  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 Menu dynamique catégories et sous catégories php
    Bonjour jreaux62, merci pour ta réponse.
    En te suivant pour la première partie concernant la création d'une table pour toutes, je vois une meilleure structure, plus claire.

    << Pour les catégories de niveau principal :
    id_parent = 0 (ce qui vaut aussi pour ACCUEIL, CONTACT)>>

    Donc, après la dernière catégorie ayant un id de 18, Accueil et Contact auront respectivement les id 19, et 20 ?
    ==>Mais ça va se répercuter sur mon formulaire. J'ai une liste déroulante. C'est à dire que dans la page du formulaire, dans notre select on aura Accueil et Contact.


    Et pour id_parent, il n'y a pas d'index? Ce n'est pas lié à l'id id d'une table? Parce que j'ai l'habitude de lier les id_... aux id d'autre tables
    Sinon j'ai bien fait id_parent= id dans la table categories après avoir tout mis dans une seule et unique table.

  4. #4
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    1- Pour les catégories de niveau principal, la requête est :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT 
    ...
    FROM t_categories C
    WHERE id_parent = 0

    2- Pour chaque sous-(sous-)catégorie : id_parent est bien "lié" à un id... mais dans la même table !
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT 
    ...
    FROM t_categories C
    WHERE id_parent = :id_categorie_du_parent

    3- Pour ton formulaire, si tu veux exclure des catégories, il suffit d'ajouter une colonne "in_form" dans la TABLE t_categories :
    • in_form (TINYINT(2) -> 0/1 (non/oui)

    La requête :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT 
    ...
    FROM t_categories C
    WHERE id_parent = 0
    AND in_form = 1

    4- Si tu veux ordonner les catégories (autrement que par id_categorie ou libelle_xx), une autre colonne "rang" peut-être créée dans la TABLE t_categories.

    C'EST DONC A TOI de définir correctement les colonnes de la TABLE t_categories, SELON TES BESOINS.

  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
    Pour 1, 3 et 4 facile j'ai compris. Mais pour 2 je n'ai pas bien saisi et je pense que c'est ça qui me pose un problème au niveau de mon formulaire car je n'arrive pas à faire apparaitre les categories, ie les "libelle". Les "nom" s'affichent bien.
    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
    function getCategories(){
      global $bdd;
     
    $sql_lang = (!empty(($_SESSION['lang']) && in_array($_SESSION['lang'], ['fr','en','es']) ))? $_SESSION['lang'] : 'fr'; 
     
     
    $sql= "SELECT id , nom_".$sql_lang." AS nom,
    libelle_".$sql_lang." AS libelle
    FROM categories
    WHERE id_parent > 0
    AND in_form=1
    ORDER BY id
    ";
     
       try{
          $req = $bdd->prepare($sql);
          $req->execute();
          $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
    $categories= getCategories();
         <select name="categorie">
     
                    <option value="" disabled selected><?php echo $lang['categorie'];?></option>
     
                    <?php
     
     
    foreach($categories as $C){
     echo "<optgroup label ='".$C['id_parent']."'> ".$C['libelle']." 
    
     '<option value='".$C['id']."'>".$C['nom']."</option>'
    
    </optgroup>";
    }
      ?>
    </select>
    Je n'ai pas bien compris le : à coté de id
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE id_parent = :id_categorie_du_parent
    . C'est dans PDO? ça n'a pas marché pour moi

  6. #6
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    1- montre ta table categories

    2- il faut mettre id_parent en paramètre de la fonction :
    function getCategories( $id_parent=0 )

  7. #7
    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
    Voici voici ma table
    Nom : om1.png
Affichages : 174
Taille : 88,0 KoNom : om2.png
Affichages : 166
Taille : 21,6 Ko

    Mais si je fais $id_parent=0 je vais inclure Accueil et contact dans mon formulaire.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/05/2018, 17h26
  2. [XL-MAC 2011] Excel liste menu déroulant, catégorie, sous catégorie
    Par IVIedia dans le forum Excel
    Réponses: 2
    Dernier message: 26/11/2015, 09h39
  3. [W3C] [PHP, CSS et W3C] Menu dynamique qui ne s'affiche pas sous Firefox
    Par kervano dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 03/06/2007, 14h25
  4. Menu dynamique qui passe sous un select
    Par krolineeee dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/05/2006, 17h00

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