|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Développeur Web Inscription : avril 2009 Messages : 16 ![]() |
Bonjour a tous,
J'ai encore un petit souci qui de tri avec lequel je n'arrive pas à m'en sortir. Voila pourquoi je m'en m'enrichir des lumières de Développez.com : J'ai une table (très grosse) contenant des chaines constituées comme suit : A A - a A - a - b A - a - c B - a B - a - b B - a - b - c etc.. mon objectif est d'exploser tout ca dans les tables distincts sous la forme Table catégories : id valeur Table sous catégorie : id valeur id_catégorie Table sous sous catégorie : Id Valeur id_catégorie id_sous_catégorie etc... Avec ce qui suit j'arrive à créer un tableau pour y voir plus clair avant de faire mes insertions, mais je bloque au niveau de la comparaison de la valeur précédente... Code :
Code :
<?php if (in_array($row_selectCat['id'],$array_cat)) { echo $array_cat[$i];}?> Merci par avance de votre aide. |
||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Inscription : janvier 2006 Messages : 951 ![]() |
oui tu peux faire ça comme ça.
Sinon tu peux faire la même chose avec une seule table, des autojointures, et une simulation de requete hierarchique (si tu veux une profondeur arbitraire) ou un nombre d'autojointure fixe si tu veux une profondeur maximale. Code :
(root) A a (vide) (root) A a b (vide) (root) B mais c'est un peu compliqué
__________________
PHP fait nativement la validation d'adresse électronique Utilisez le bouton résolu! |
||
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Développeur Web Inscription : avril 2009 Messages : 16 ![]() |
Merci Gene69 de ta réponse.
Mais Citation:
Citation:
en fait j'y avait pas pensé ça semble même plutôt mieux... Mais ça me dit tjs pas comment faire.
|
||
|
|
00
|
|
|
#4 |
|
Membre émérite
![]() Développeur Inscription : août 2010 Messages : 586 ![]() |
c'est pas très clair tout ca...
1er point : tu fais un do...while sur le résultat d'une requête, ton premier traitement se fait sur une première ligne non définie... 2eme point : tu fais teste tes deux cellule et tu mes des td ou pas, ca te fait donc un tr sans td ? 3eme point si a chaque cellule de ton tableau résultant de l'explode, tu test deux cellule successive alors que chaque cellule correspond à un niveau de sous catégories ? Logiquement c'est pas possible...tu compare pas deux catégories de niveaux diffèrent... moi je dis ca sent la récursivité...je plaisante ou peut être pas. Précise le nombre de niveau de catégories ? As tu des saut du genre catégories/pas de sous catégories/sous sous catégories... |
|
|
00
|
|
|
#5 | ||||||
|
Invité de passage
![]() Alain BrunetInscription : février 2011 Messages : 1 ![]() |
Bonjour,
Sauf erreur de ma part c'est une arborescence que tu veux ? Comme te l'indique gene69 une structure arborescente est composée d'éléments racine ( root ) et des éléments constituants des sous-ensembles rattachés aux éléments racines, eux-mêmes pouvant contenir d'autres sous-ensembles. A - a - b ... B - a - b - c - d ... C - a - b ... Peuvent être insérés dans une table comme suis : Code :
id_parent représentant le niveau dans la hiérarchie, order l'ordre d'affichage. Lorsque tu extrais ces données d'une table, tu les insères généralement dans un tableau ( Array ). Grâce à une fonction récursive tu peux récupérer la hiérarchie d'un seul coup en faisant abstraction du nombre de sous-éléments. Exemple : Code :
print_r( $result ); Code :
tu veux en fonction des niveaux ($level). J'espère t'avoir apporté une réponse possible et de ne pas être trop trop hors sujet. Bon courage. |
||||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com