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

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é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

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
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 !!

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
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
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

Posté : 20 sept. 2006, 12:50
par Ryle
C'est parce que t'y mets de la mauvaise volonté

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

)