Sous menu (ou sous catégories) illimités

cs_gilou33 Messages postés 15 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 29 février 2008 - 28 févr. 2008 à 19:13
joseph2033 Messages postés 20 Date d'inscription jeudi 12 mai 2005 Statut Membre Dernière intervention 27 décembre 2012 - 4 mai 2010 à 16:10
Bonjour,

je suis un peu coincé sur la réalisation d'une boutique en ligne, pour un élément probablement tout bête, l'affichage de catégories d'articles. En effet, je souhaiterai lister les catégories et sous catégories mais celles-ci peuvent être illimitées, je n'arrive pas à trouver la méthoe à utiliser pour gérer cette boucle illimitée.

Pour information, la table contenant les catégories est structurée comme suit :

id_categorie (id unique)
nom_categorie (ben le nom de la catégorie)
id_parent (l'id de la catégorie parent sinon 0 si c'est une principale)
ordre (l'ordre de la catégorie)

En vous remerciant par avance de votre aide.

18 réponses

nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
28 févr. 2008 à 19:25
Salut,

Tu souhaites les listers où ?
Peus tu nous donner un morceau de code si il y en a un ?

Si t'a besoin d'aide, MP !!!
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
28 févr. 2008 à 19:30
Hello,

une simple boucle while($row = mysql_fetch_row($result)){ } pourrait suffire, à toi de voir ce que tu veux faire.
à+
0
cs_gilou33 Messages postés 15 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 29 février 2008
28 févr. 2008 à 19:34
En fait actuellement j'ai ce code, mais qui ne liste que 1 sous catégorie car je réflechi comment lister des sous catégories illimitées justement, mais ce code est fonctionnel :
$req mysql_query("SELECT * FROM categories WHERE id_parent 0 ORDER BY ordre");

while($r = mysql_fetch_object($req)){
echo '<li>'.stripslashes($r->nom_categorie).'</li>';
$req2 mysql_query("SELECT * FROM categories WHERE id_parent ". (int) $r->id_categorie  ." ORDER BY ordre");

while($r2 = mysql_fetch_object($req2)){
echo '<li>'.stripslashes($r2->nom_categorie).'</li>';
}
}
0
cs_gilou33 Messages postés 15 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 29 février 2008
28 févr. 2008 à 19:35
Pour info ces catégories sont listées dans une div avec UL sur la gauche d'un site, mais le problème n'est pas là.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_gilou33 Messages postés 15 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 29 février 2008
28 févr. 2008 à 19:54
Merci Evangun pour ce conseil, mais comme tu peux le constater, ce n'est pas le problème du listage des catégories qui me pose problème, mais celui des sous catégories avec indetation si tu préfère, voici un exemple

Cat 1
    SCat1.1
    SCat1.2
       SSCat1.2.1
Cat2
Cat3
    SCat3.1
       SSCat3.1.1
          SSSCat3.1.1.1
       SSCat3.2.1
    SCat3.2

J'espère que c'est assez clair, sachant que les sous catégories peuvent être illimitées. J'ai constaté que les sites osCommerce permettent cette gestion de sous catégories illimitées comme cela.

Bien à vous
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
28 févr. 2008 à 20:57
salut

tu devrais lire ca : http://sqlpro.developpez.com/cours/arborescence/

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
0
cs_gilou33 Messages postés 15 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 29 février 2008
28 févr. 2008 à 21:38
Je te remercie mais cela ne répond pas à ma demande, de plus, tout est centré sur des requêtes SQL et il n'est pas présenté de méthodes liées au listage de Catégories incluant des sous catégories illimitées comme je le souhaite. Ma base de données est en MySQL 4.3 et PHP 5

C'est sympa quand même, merci d'être passé
0
cs_gilou33 Messages postés 15 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 29 février 2008
28 févr. 2008 à 21:52
Petite précision cependant, la structure de ma table est exactement celle présentée par le site que tu m'a fourni, à savoir :

- L'id de la catégorie auto incrémenté
- Son nom
- L'id parent si c'est une sous catégorie
- Saud que j'ai un ordre en plus mais c juste pour trier lors de la requête
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
28 févr. 2008 à 22:30
sur mon lien, l'auteur presente deux facons de faire une arboressence.... tu implementes la premiere, alors que c'est la seconde qui est interessante en fait...

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
0
cs_gilou33 Messages postés 15 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 29 février 2008
29 févr. 2008 à 01:21
Très bien je t'en remercie, mais comme je te disais, cela ne correspond pas à ma demande, je n'ai aucun exemple de script si ce n'est du SQL mais tout fonctionne avec des vues et des procédures, que je ne peux même pas exploiter avec MySQL 4. Ce que je souhaiterais c'est un exemple avec une boucle PHP, mais je ne désespère pas j'essaye actuellement avec la gestion des tableaux (array), je vais insérer toutes mes catégories dans un array et voir ce qui est gérable avec les tris etc...

Merci encore et si quelqu'un à une chtite idée elle sera la bienvenue
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
29 févr. 2008 à 01:35
si tu ne veux pas changer la disposition de tes tables, alors ce qu'il te faut, c'est une fonction recursive

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
0
cs_gilou33 Messages postés 15 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 29 février 2008
29 févr. 2008 à 02:00
En quoi consiste exactement une fonction récursive, aurais-tu un exemple concret ?
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
29 févr. 2008 à 02:05
un truc genre ca :

function afficher($idp){
$out='';$req mysql_query('SELECT * FROM categories WHERE id_parent '.$idp.' ORDER BY ordre') or die(mysql_error());
while($r = mysql_fetch_object($req)){
$out.='<li>'.stripslashes($r->nom_categorie).afficher($idp).'</li>';
}
if ($out!='')return $out.'';
return '';
}

afficher(0);

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
0
cs_gilou33 Messages postés 15 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 29 février 2008
29 févr. 2008 à 02:10
Ahhh j'avais pas pensé à ça, je vais tenter et je te tiens informé du résultat.

Merci !
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
29 févr. 2008 à 02:13
mais tu remarqueras qu'avec l'autre methode, tu fais ca avec une seule requete...
/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
0
cs_gilou33 Messages postés 15 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 29 février 2008
29 févr. 2008 à 02:21
Oui c'est effectivement le principe, mais il faut utiliser les procédures et les vues
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
29 févr. 2008 à 02:23
non t'es pas oblige

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
0
joseph2033 Messages postés 20 Date d'inscription jeudi 12 mai 2005 Statut Membre Dernière intervention 27 décembre 2012
4 mai 2010 à 16:10
0
Rejoignez-nous