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

Requêtes MySQL Discussion :

Création arborescance PHP+Mysql


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 44
    Par défaut Création arborescance PHP+Mysql
    Bonjour,

    Je suis à la recherche d'une aide sur la création d'une requête SQL pour récupérer un arbre (ou équivalent).

    J'ai deux tables:

    folders:
    - id
    - parent_id (fait référence à l'id de folders qui est son parent)
    - name
    - user_id

    images
    - id
    - folders_id (fait référence à l'id du folders où est l'image)
    - name

    Je voudrais donc retourner tous les dossiers et image à l'intérieur pour un USER_id donné et connu.

    par exemple je voudrais un resultat comme il suit:

    album1
    - Vacances
    - photo1
    - photo2
    - Travail
    album2

    En ce moment j'ai un script PHP avec une fonction récursive mais c'est que le temps de traitement est assez long... je voudrais optimiser cela.

    Si vous aviez des pistes je suis preneur

    Je tourne sous MySQL 5

    Cordialement

    R1D3M4N

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 144
    Par défaut
    Bonjour,

    Ah, la représentation intervalaire... Pas assez connue à mon goût, mais super efficace (suivant les utilisations bien entendues) :
    http://sqlpro.developpez.com/cours/arborescence/

    Ce n'est pas dit dans le cours, mais avec des LEFT JOIN ... >= ... AND ... < ... (au lieu de la jointure =) tu peux retrouver directement les parents

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 44
    Par défaut
    Oui j'ai deja lu ce genre d'outils mais ce système tourne sous SQL et non MySQL? De plus est ce pas une infrastructure compliquée pour juste la génération d'un arbre symple:

    Dossier
    Sous dossier
    Fichier
    Sous dossier2
    Fichier
    Dossier2...

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 144
    Par défaut
    Ça s'applique bien en MySQL. Et en une seule requête, tu obtiens la totalité des réponses de ton arborescence.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 144
    Par défaut
    Pour plus de clarté, j'appelle les "bord droit" et "bord gauche" : "id_ouverture" et "id_fermeture"

    Dossiers :
    - id_ouv
    - id_ferm
    - // parent_id (fait référence à l'id de folders qui est son parent) // ça saute
    - nom
    - user_id

    images
    - id
    - dossier_id (fait référence à l'id du dossier où est l'image)
    - nom

    Pour un USER_id donné et connu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT dossier.nom, image.nom
    FROM image
    LEFT JOIN dossier ON image.dossier_id >= dossier.id_ouv AND image.dossier_id < dossier.id_ferm
    WHERE dossier.user_id = USER_id
    Ça te donne, pour USER_id = "album1" :

    - Vacances, photo1
    - Vacances, photo2
    - Travail, photo3
    etc.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 44
    Par défaut
    ouep j'étais arrivé jusque là papa6.

    Mon problème ensuite est de faire l'arbre propre. Car jai séparé en deux tableaux l'un folder ayant les infos du dossier et l'autre image ayant les infos images.

    Mais le problème vient ensuite a la création de l'arbre si le tableau sur les folders est mal construit alors le code php devient compliqué surtout pour associé les dossiers a leur sous dossier.

    Mais j'ai réussi à faire l'arbre avec une fonction de récurrences. le problème est que pour récupérer les images, je le fais dans la fonction de récurrence ce qui implique un passage = une requête. N'est pas trop lourd niveau performance par la suite surtout si je possède beaucoup de dossiers et sous dossier?

  7. #7
    Membre émérite
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Par défaut
    Citation Envoyé par R1D3M4N Voir le message
    Oui j'ai deja lu ce genre d'outils mais ce système tourne sous SQL et non MySQL?
    SQL est un langage commun aux SGBD. MySQL est un SGBD... Donc ce qui est dans les standards de SQL est dans MySQL

    Attention à ne pas mélanger langages et systèmes

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

Discussions similaires

  1. Création formulaire PHP / MySQL
    Par samspitz dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 21
    Dernier message: 08/01/2009, 17h23
  2. Arborescence de catégories php/mysql
    Par sawati dans le forum Requêtes
    Réponses: 4
    Dernier message: 05/10/2006, 23h37
  3. PHP / MySQL : Création d'utilisateurs dans la DB par code PHP
    Par Sangdrax1604 dans le forum Administration
    Réponses: 6
    Dernier message: 07/09/2006, 17h46
  4. xml - création xml via php(mysql) - manque données
    Par Raiders dans le forum XQUERY/SGBD
    Réponses: 5
    Dernier message: 23/03/2006, 18h54
  5. [PHP-MySQL]Création de base de donnéeavec php
    Par steeves5 dans le forum SQL Procédural
    Réponses: 13
    Dernier message: 20/02/2006, 20h46

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