[RESOLU] Structure d'un programme

Babou
Invité n'ayant pas de compte PHPfrance

12 août 2009, 15:04

Bonjour

Voila j'ai un soucis j'ai une base de donnée qui contient des categories avec un champs categorie parent qui correspond a la categorie principal (la categorie au dessus dans la hierarchie).
exemple:

1
1-1
1-1-1
1-1-2
1-2
1-3
2
3

Donc pour 1 la categorie parent est 0 (principal) pour 1-1 c'est 1 pour 1-1-2 c'est 1-1 etc...

Je souhaite que le systeme puisse gerer une hierarchie infinie

mon probleme est que je ne voit pas comment faire la structure du programme qui va me permettre d'afficher les categories dans l'ordre comme ci-dessus en listant ma base de donnée.

Si je listait avec un niveau de categorie de 3 cela serait simple mais en illimite je vois pas du tout.

merci de votre aide.

@++

ViPHP
ViPHP | 1024 Messages

12 août 2009, 15:12

Hello,

Tu peux t'en sortir avec une représentation d'arbre intervallaire :
http://sqlpro.developpez.com/cours/arborescence/

A+

Pascal

Babou
Invité n'ayant pas de compte PHPfrance

12 août 2009, 15:43

Merci de ta réponse rapide

C'est une bonne solution mais le probleme est que je n'est pas la main sur la base de donnée et donc je peu rien modifier de celle-ci donc il faut que j'arrive a faire un syteme en php qui me permette de le faire.

@++

Eléphant du PHP | 245 Messages

12 août 2009, 16:04

que cherches tu?
A pouvoir triée ta table à l'affichage via une requete SQL?

Par cce que si les id sont de la forme
1
1-1
1-2
1-2-1
2
2-1
ce sont des chaines de caracteres, donc par défault, cela te les affichera dans cet ordre.
non?

...

Norm

Babou
Invité n'ayant pas de compte PHPfrance

12 août 2009, 16:10

Dans un sens oui je veus les afficher comme cela mais je veus avoir la distinction des categories

exemple
1
1-1
1-2
1-2-1
2
2-1

et sachant que dans la table elle ne sont pas inserer forcement dans cette ordre etant donne qui si on le souhaite on peu modifier le classement par exemple mettre

la categorie 2 sous 1-1.

@++

ViPHP
ViPHP | 1024 Messages

12 août 2009, 16:34

peux-tu indiquer la structure (champs) de la table, pour que l'on voit ce que l'on peut faire ?

Si tu peux modifier la structure de la table, ajoute la représentation intervallaire, ça facilitera la lecture des données.

Si non, tu peux faire des requêtes en utilisant des alias pour les noms des tables, mais tu ne pourra jamais prévoir la profondeur infinie simplement.

A+

Pascal

Babou
Invité n'ayant pas de compte PHPfrance

13 août 2009, 15:37

Bonjour

Voici la structure de la table etant donnée qu'elle est gerer par une autre personne je preferait eviter d'y toucher mais si il y a pas le choix je le ferais.

--
-- Structure de la table `categorie`
--

CREATE TABLE `categorie` (
`id` int(250) NOT NULL auto_increment,
`categorie_parent` int(250) NOT NULL,
`nom` char(250) NOT NULL,
`texte` text,
`image` char(250) NOT NULL,
`suspendre` int(250) default NULL,
`ordre` int(250) NOT NULL,
PRIMARY KEY (`id`)
)

voila

merci de votre aide