Besoin d'aide pour une requête MySQL jointe + affichage (hiérachie)

Besoin d'aide pour une requête MySQL jointe + affichage (hiérachie) - PHP - Programmation

Marsh Posté le 20-07-2009 à 16:44:12    

Bonjour,
 
Je suis en train de développer un site web mais mes connaissances en MySQL me font bloquer sur ce que pas mal d'entre vous doivent considérer comme une broutille.
M'apporteriez-vous un peu d'aide ?
 
J'ai deux tables dans ma base MySQL.
 
Je souhaiterais afficher, à partir des données suivantes :
taxonomie_data
http://upload.pbase.com/image/115177805/original.jpg
taxonomie_hierarchie
http://upload.pbase.com/image/115177809/original.jpg
 
La liste qui suit :
Entrées

  • Salades
  • Feuilletés
  • Légumes
  • Fromage

Plats

  • Viande
  • Volaille


En sachant que dans la table taxonomie_hierarchie, 'parent' est l'équivalence du tid de la table taxonomie_data (afin de pouvoir recouper les données).
 
Quelle requête effectuer ?
Comment l'afficher en regroupant les termes relatifs aux "Entrées" et ceux relatifs aux "Plats" ?
 
Je suis paumé, j'ai repris cette structure de la taxonomie de Drupal qui est très très bien faite.
 
Merci à vous !
 
Mais je suis totalement infoutu d'y arriver.

Reply

Marsh Posté le 20-07-2009 à 16:44:12   

Reply

Marsh Posté le 20-07-2009 à 16:56:14    

Je vais pas vraiment répondre à ta question...
Mais... Pourquoi ne pas utiliser une clé étrangère dans taxonomie_data plutôt qu'une table taxonomie_hierarchie  pour faire tes associations ?
Et ensuite auto jointure et c'est réglé.


Message édité par dwogsi le 20-07-2009 à 17:02:43

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 20-07-2009 à 17:14:09    

Je ne sais pas, comme je l'ai dit ça vient de la structure de Drupal que j'ai repompé car je trouve le système génial.
Mais spa bête ce que tu dis ;)  
 
Mais que ce soit intégré ou pas, je ne sais pas comment trier les résultats pour en faire une belle liste HTML tenant compte de la hiérarchie.
 
De plus, le nombre de sous hiérarchie est illimité.
On peut avoir
Entrée > Salade > Riz > Basmati................
 
Merci pour cette première réponse en tout cas :bounce:

Reply

Marsh Posté le 20-07-2009 à 17:22:55    

A mon avis si tu as un hiérarchie infinie une auto jointure ne fera pas l'affaire.
 
Faut que tu rentre dans une boucle ! Par exemple tu va chercher tout les élément dont le parent et 0, donc les éléments racines. Ensuite pour chacun tu va chercher ses enfants, et pour chaque enfants tu va chercher ses enfants et ainsi de suite.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 20-07-2009 à 17:30:08    

Je suis étonné par ce que Drupal ne gère pas comme ça, je viens de trouver la requête, la voici :

Code :
  1. $result = mysql_query("
  2. SELECT
  3. t.tid,
  4. t.*,
  5. parent
  6. FROM
  7. taxonomie_data t
  8. INNER JOIN
  9. taxonomie_hierarchie h
  10. ON
  11. t.tid = h.tid
  12. WHERE
  13. t.vid = 1
  14. ORDER BY
  15. poids, nom
  16. " );


 
Donc il doit y avoir un tri effectué sur l'array, mais je ne sais pas comment faire et je ne trouve pas l'endroit où la donnée est triée dans Drupal (c'est un bordel monstre).

Reply

Marsh Posté le 20-07-2009 à 18:01:07    

c'est trié via le poids. Sans le poids, tu serais obligé de faire des requêtes récursives, mais avec le poids, tu t'en sors.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 20-07-2009 à 18:11:00    

Oui mais je peux changer par autre chose.
 
En gros, je suis obligé de  faire plusieurs requêtes ?
 
C'est d'un compliqué ce bidule... :pt1cable:

Reply

Marsh Posté le 20-07-2009 à 19:01:11    

Suivant ce que tu veux mettre comme hiérarchie tu peux t'en sortir avec une STI je pense..


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 20-07-2009 à 19:04:19    

STI?
"suivant ce que tu veux mettre comme hiérarchie" ? C'est à dire ?
 
Pas compris là

Reply

Marsh Posté le 20-07-2009 à 19:07:47    

Suivant le degré de ressemblance des différents objets qui ont un lien de parenté, tu peux peut-être utiliser un modèle de single table inheritance..
ça donne des tables assez volumineuses si t'as beaucoup d'objets différents mais après c'est assez simple à gérer ..


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed