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 :

Catégorie et sous-catégorie [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Par défaut Catégorie et sous-catégorie
    bonjour tous le monde

    j'essaye de faire des categories/sous categorie/soussous categ...

    pour ce faire j'ai une base de donnee, et qui donne a peu pres ceci :

    id id_pere type


    10 0 poisson
    11 10 ecailles
    12 0 nourriture
    13 10 amphibien
    14 10 raie
    15 14 grenouille
    16 15 a crete rouge
    17 15 a crete verte


    ce qui donne par categorie
    poisson
    ||
    \/
    amphibien|raie|ecaille
    ||
    \/
    grenouille
    ||
    \/
    crete rouge|crete verte


    je voudrais avoir la requete sql pour selectionner toute une categorie et ses sous categories (car je voudrais pouvoir rajouter une sous categorie a n'importe quel niveau de l'arborescence mais je sais pas trop comment m'y prendre-faut deja trouver une requete pour tout selectionner ce qui permettra de tout afficher-)

    merci de votre aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pour deplier, tu peux utiliser une fonction recursive :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    function r_arbo ($parent) {
              $sql = "SELECT * FROM table WHERE id_pere=" . $parent
              while ($data = query($sql)) {
                         echo $data['type'];
                         r_arbo($data['id_pere']);
               }
    }
     
    // demarrage du depliage a partir du début
    r_arbo(0);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Par défaut
    heu la j ai un probleme

    maintenant ca affiche "ecaillesamphibienraieecaillesamphibienraie" a l'infini si la categorie choisie est "poisson"
    et pourtant voila la fonction :
    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
    if(isset($_POST['choix']))
    {
    $choix=$_POST['choix'];
    $query=mysql_query("select * from categorie where type='$choix'");
    $array=mysql_fetch_array($query);
    function r_arbo ($parent) {
              $sql =mysql_query("SELECT * FROM categorie WHERE
     id_pere='$parent'");
              while ($data = mysql_fetch_array($sql))
    		   {
                         echo $data['type'];
                         r_arbo($data['id_pere']);
               }
    }
     
    // demarrage du depliage a partir du début
    r_arbo($array['id']);
    }

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Oups oui j'ai fais une erreur : on boucle evidemment avec l'id de la nouvelle entrée pas avec son id_pere sinon on repart sans cesse en arriere

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
              while ($data = mysql_fetch_array($sql))
    		   {
                         echo $data['type'];
                         r_arbo($data['id']);
               }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Par défaut
    bingo!!!

    ca marche!!!!

    merci beaucoup de ton aide!


    maintenant tu saurais comment afficher ces resultats en forme d'arbre?

    genre un tableau et sous l'id_pere, hop l'id_fils

    parceque la le seul truc que je reussis a faire c est ca :

    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
     
    function r_arbo ($parent) {
              $sql =mysql_query("SELECT * FROM categorie WHERE id_pere='$parent'");
    		  ?><table border="1"><tr><?php
              while ($data = mysql_fetch_array($sql))
    		   {
                       ?><td><?php  echo $data['type'].'<br>';?></td><?php
    					$id=$data['id'];
    					 $sql2 =mysql_query("SELECT * FROM categorie WHERE id_pere='$id'");
    					 $num=mysql_num_rows($sql2);
    					 if($num !=0)
    					 {
                         r_arbo($data['id']);
    					 }
    					 else
    					 {}
               }
    		   ?></tr></table><?php
    }
     
    // demarrage du depliage a partir du début
    r_arbo($array['id']);
    mais ca donne ca :

    ecailles amphibien raie

    grenouille

    a crete rouge a crete verte



    je reussi pas a centrer grenouille en dessous d'amphibien, ca ce mets sous "ecailles"

    de plus les cases ne sont pas de la meme taille entre les differentes lignes...
    la case "ecailles" est plus petite que la case "grenouille" qui se situe pourtant en dessous d'"ecaille"...sais pas comment faire...

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je te propose un truc comme ca pour commencer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while ($data = mysql_fetch_array($sql))   {
    		echo '<div style="margin-left: 80px; padding-left: 4px; border-left: 1px dashed red;">' . $data['type'];
                    r_arbo($data['id']);
    		echo '</div>';
               }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre éclairé Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Par défaut
    oula, c est pas encore ca mais y a d'l idee...

    merci beaucoup je vais chercher un peu

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

Discussions similaires

  1. SELECT: gestion de catégories et sous-catégories
    Par cissou06 dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 05/02/2008, 18h29
  2. [UML][UC] Comment représenter catégories et sous catégories
    Par Kakashi_sensei dans le forum Cas d'utilisation
    Réponses: 15
    Dernier message: 31/01/2008, 18h56
  3. [MySQL] Affichage des catégories et sous catégories
    Par onirisme dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/10/2007, 11h24
  4. Réponses: 17
    Dernier message: 07/09/2007, 09h06
  5. Affichage incrémenté de catégories et sous-catégories
    Par Djakisback dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 21/09/2006, 22h55

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