Page 1 sur 2

Comment créer une barre de navigation ?

Posté : 18 sept. 2006, 17:01
par Cobra52
Bonjour à tous,

Je souhaite afficher une barre de navigation du type (comme phpbb) :

PHPFrance Index du Forum -> Débuter en PHP

J'ai un menu de navigation et dans mon lien j'ai une $catid, comment puis-je m'en servir ?
Tout ce que j'ai réussi à faire c'est, je clique sur une catégorie principale, j'affiche la barre :

Index -> Categorie1

Je clique sur sa sous-catégorie dans le menu, j'affiche :

Index -> SousCategorie1 :?

Au lieu de :

Index -> Categorie1 -> SousCategorie1

Merci pour votre aide :D

Posté : 18 sept. 2006, 17:10
par Ryle
En supposant que chacune de tes catégories soit liée à son parent par un identifiant, ou via l'arborescence d'un tableau il devrait t'être possible de faire une boucle pour partir de la catégorie active et de remonter jusqu'au niveau zéro :)

Tu as un bout de code à nous montrer ?

Posté : 18 sept. 2006, 17:56
par Cobra52
Voila ce que j'ai fait :
if ($catID == "0") { $where_clause2 = "WHERE catID = 0"; }
else { $where_clause2 = "WHERE catID = $catID"; }
echo "<a href='site.html'><u>Index des cat&eacute;gories</u></a>";
$sql = "SELECT catID, nom FROM categories $where_clause2";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result))
{
	print " / <a href='index.php?' title=''><u>" . $nom . "</u></a>";		
}
J'ai bien un champs "parent" dans ma table categories.
Mais je ne sais pas du tout comment l'utiliser.

Merci.

Posté : 18 sept. 2006, 22:59
par graphistnet
Je ne vois pas l'utilité de ta condition, pourrais tu expliquer à quoi elle sert?

Posté : 19 sept. 2006, 10:22
par Cobra52
Et bien en fait, à rien :?

Je l'ai enlevée et ça fonctionne sans.

Par contre, je n'arrive toujours pas à obtenir ça :

Index -> Categorie1 -> SousCategorie1

:roll:

Posté : 19 sept. 2006, 12:21
par graphistnet
Pourrais tu nous donner la structure de ta table categories?

Posté : 19 sept. 2006, 12:32
par Cobra52
Voila :D

CREATE TABLE `categories` (
`catID` int(11) NOT NULL auto_increment,
`name` varchar(255) default NULL,
`parent` int(11) default NULL,
`fullname` varchar(150) NOT NULL default '',
`description` text,
`image` varchar(30) default NULL,
PRIMARY KEY (`catID`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

Posté : 19 sept. 2006, 13:11
par graphistnet
Avec des expliquations !! :lol: on ne sait pas comment fonctionne ta base de données (comme est-elle renseignée?)
Toutes tes catégories se trouvent ici? mélangées avec les sous-catégories? si une catégories est renseignée dans la base possède-t'elle quelque chose dans le champs parent? .....

Bref des détails!

Posté : 19 sept. 2006, 13:46
par Cobra52
Désolé pour mon incompétence :? :D

Donc, oui, mes catégories sont mélangées avec mes sous-catégories (2 niveaux)

Exemple :

catID | 1
parent | 0
nom | exp1

catiD | 2
parent | 1
nom | sous_exp1

catID | 3
parent | 0
nom | exp2

catiD | 4
parent | 3
nom | sous_exp2

Posté : 19 sept. 2006, 14:07
par graphistnet
Si je comprends bien tes catégories possèdent en parent la valeur commune 0, on peut donc commencer par lister tous tes catégories dont parent = 0 pour avoir la trame principale de ton menu.
Ensuite il suffit de boucler chaque élément en cherchant les sous-catégories qui en dépendent. Pour shématiser :

Code : Tout sélectionner

. la requete categories : trouver les categories dont parent = 0 . la boucle : lister les catégories dont parent = 0 --> catID - afficher les catégories - la requete sous-catégories : chercher les categories qui possèdent parent = catID - affichage des sous-catégories . fin de boucle

Posté : 19 sept. 2006, 14:19
par Cobra52
Ce n'est pas un menu que je veux :D
Le menu je l'ai déja.

Mais une barre de navigation avec liens (comme phpbb) :

PHPFrance Index du Forum -> Débuter en PHP

je clique sur une catégorie principale, j'affiche la barre :

Index -> Categorie1

Je clique sur sa sous-catégorie dans le menu, j'affiche :

Index -> SousCategoriede1

Au lieu de ce que je voudrais :

Index -> Categorie1 -> SousCategoriede1

Posté : 19 sept. 2006, 14:24
par Ryle
Ce qu'il te faudrait c'est une fonction récursive. Tu vas chercher dans ta base l'id parent de la page active, tant que celui-ci est différent de 0.

Tu vas ainsi récupérer toutes les infos dont tu as besoin (en partant de la fin). L'idéal étant de les mettre dans un tableau que tu n'as plus qu'à lire pour reconstruire ton chemin :)

Posté : 19 sept. 2006, 14:24
par graphistnet
Que ce soit un menu ou autre chose le principe reste le même et seul l'affichage change.

Posté : 20 sept. 2006, 11:29
par Cobra52
Bon, je n'y arrive pas, trop compliqué pour mes petites méninges :? :lol:

Posté : 20 sept. 2006, 12:50
par Ryle
C'est parce que t'y mets de la mauvaise volonté :P
Qu'est ce que tu n'arrives pas à faire (et me dit pas "le tout" ;))
Qu'est ce que tu as déjà fait ?
Qu'est ce que tu ne comprends pas ?
Quand est-ce qu'on mange ? (euh non attends, celle là elle était pas pour toi ;))