Bonjour,
L'objet :
Je développe actuellement un petit blog personnel, le but n'étant pas de de rivaliser avec dotClear mais c'est pour moi une façon d'apprendre à programmez en php.
Dans ce blog, j'ai un menu qui affiche les catégories de post. Pour afficher ces catégories, j'ai créé une fonction qui fonctionne assez bien :
Cette fonction me permet d'afficher, les liens, les catégories, les archives.
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 <?php /** * Fonction getListe -> Création d'une liste reliée à MySql * $tableName = Nom de la table * $type = type de lien (cat, post, link) * $colID = N° de colonne de de l'id * $colShow = colonne MySql à afficher **/ function getListe($tableName, $type, $colID, $colShow){ $getListe = 'SELECT * FROM '.$tableName.' '; $reqListe = mysql_query($getListe) or die ("Impossible d'éxecuter la requête"); echo '<ul>' ; while($liste = mysql_fetch_row($reqListe)){ echo '<li><a href="index.php?'.$type.'='.$liste[$colID].'">'.$liste[$colShow].'</a></li>' ; } echo '</ul>' ; } ?>
Le problème :
Je souhaiterai afficher mes catégories en prennant en compte les sous catégories pour obtenir l'affichage suivant :
Pour obtenir cela, j'ai construit une table mw_categories :
Code X : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Catégorie1 SousCat1.1 SousCat1.2 Catégorie2 SousCat2.1 SousCat2.2 Catégorie3 Etc...
Le champ cat_link correspondant à l'id de la catégorie mère
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 `cat_id` int(10) NOT NULL auto_increment COMMENT 'Identifiant', `cat_name` varchar(50) NOT NULL COMMENT 'Nom de la ctégorie', `cat_desc` varchar(250) NOT NULL COMMENT 'Description des catégories', `cat_rang` int(10) NOT NULL COMMENT 'Classement des catégories', `cat_link` int(10) NOT NULL default '0' COMMENT 'Liens pour les sous-catégories', PRIMARY KEY (`cat_id`), KEY `cat_name` (`cat_name`,`cat_rang`,`cat_link`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
La question :
C'est comment que je dois faire??? J'ai regardé un peu partout (sauf sous mon lit) et j'ai pas trouvé de solution.
Si vous pouviez me mettre sur la piste, je vous en serait très reconnaissant.
PS. Pour la mise en forme (décalage) ça va, c'est simplement pour ordonner mes données sous cette forme
Merci pour votre aide
Code X : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Catégorie -> id=1 -> catLink=0 Catégorie -> id=3 ->catLink = 1 Catégorie -> id=2 -> catLink=0 Catégorie -> id=4 -> catLink=2
Partager