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 :

gestion arborcence sur un retour mysql


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Par défaut gestion arborcence sur un retour mysql
    Bonjour tout le monde,

    Voila, j'ai une requete mysql qui me retourne une selection de catégorie/sous-catégorie/sous-sous catégorie, trié a l'arrache:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while($donnees=mysql_fetch_assoc($reponse)){
       echo "title:".$donnees['title']." - id:".$donnees['id']." - parentid:".$donnees['parentid'];
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    title:cat1 - id:1 - parentid:0
    title:cat2 - id:2 - parentid:0
    title:cat1-1 - id:3 - parentid:1
    title:cat1-1-1 - id:4 - parentid:3
    title:cat2-1 - id:5 - parentid:2
    etc...
    j'aimerai réussir a les trier du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    cat 1
      cat 1-1
        cat 1-1-1
      cat 1-2
        cat 1-2-1
    cat 2
      cat 2-1
        cat 2-1-1
      cat 2-2
    etc...
    et je n'arrive pas a le géré en php,
    quelqu'un pourrait m'aiguillé ?

    j'ai essayé ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $id=0;
              while($donnees = mysql_fetch_assoc($reponse)){
                if($donnees['parentID'] == $id){
                    echo $donnees['id'];
                    echo "<br>";
                    while($donnees2 = mysql_fetch_assoc($reponse){
                       echo $donnees2['id'];
                       echo "<br>";
                    }
                 }
              }
    mais déjà la ça foire: on ne dois pas pouvoir bouclé sur la meme "$reponse"
    ça ne me renvoie que la première catégorie et ces enfant, mais pas la suite,
    je suppose qu'on ne peux pas bouclé plusieurs fois sur la meme "$reponse"...



    merci bien

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    A mon avis, le travail est plus à faire en amont avec ta requete SQL (group by, order by...)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 89
    Par défaut
    bonjour,

    oh si, si tu veux boucler une deuxième foi tu peux... mais regarde ton test, tu ne sortira de ta boucle uniquement quand tu aura épuisé le contenu de ta variable... ta premiere boucle ne sera utilisé qu'une foi!

    comme là dis Madfrix un order by en amont peut aider! après... la structure de ta base (au moins de cette partie peut aider)... créer des variables temporaire de stockage cat précedent cat courante peut aussi aider, pas réellement nécessaire de multiplier les boucles tu peux t'en tirer avec des tests, ...., du récurcif peut aider aussi!

  4. #4
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Le faire en une seule requête me semble impossible.
    Il y aurait eu 3 tables pour chacun des 3 niveaux (cat1/cat1-1/cat1-1-1) là d'accord.

    A mon avis t'es bon pour faire 3 requêtes, 3 boucles imbriquées.
    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
     
    SELECT * FROM categorie WHERE parent = valeur des 1er parent
    	while () {
    		// Liste des cat1
    		SELECT * FROM categorie WHERE parent = cat1
    		while () {
    			// liste des cat1-1
    			SELECT * FROM categorie WHERE parent = cat1-1
    				while () {
    					// liste des cat1-1-1
    				}
     
    		}
    	}
    }

Discussions similaires

  1. Sql sur une base MySql
    Par Rickless dans le forum Bases de données
    Réponses: 17
    Dernier message: 06/04/2005, 13h06
  2. informartion sur la naissance MySQL
    Par boubou2 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 09/01/2005, 14h34
  3. Gestion OnChange sur une sorte d'éditeur de propriétés
    Par Clorish dans le forum Composants VCL
    Réponses: 8
    Dernier message: 29/09/2004, 09h59
  4. Paramétrer le nombre de connexion sur mon serveur Mysql
    Par Zerga dans le forum Installation
    Réponses: 2
    Dernier message: 12/12/2003, 19h21

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