afficher des catégories et sous catégories d'une table mysql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : afficher des catégories et sous catégories d'une table mysql

par x@v » 08 nov. 2008, 17:36

je n'arrive pas à faire l'arborescence !
$sqlCat= "SELECT sousCategorie, id, nom FROM categorie ORDER BY sousCategorie DESC";
$result = $connection->select($sqlCat);
foreach ($result as $val)
{
   $sousCategorie=$val['sousCategorie'];
   $id=$val['id'];
   if($sousCategorie == 0)
   {
         echo '<li>'.$val['nom'].'</li>';
   }
   else if($sousCategorie == 1)
      echo '<ul><li>'.$val['nom'].'</li></ul>';
   else if($sousCategorie == 2)
      echo '<ul><li>'.$val['nom'].'</li></ul>';
   else if($sousCategorie == 3)
      echo '<ul><li>'.$val['nom'].'</li></ul>';            	                  	      
   else if($sousCategorie == 4)
      echo '<ul><li>'.$val['nom'].'</li></ul>';
   else if($sousCategorie == 5)
      echo '<ul><li>'.$val['nom'].'</li></ul>';            	      
}
Il faut peur-être une deuxième table pour la sous catégorie ?
Y aurrai t-il un tuto ?

par Sékiltoyai » 08 nov. 2008, 16:41

Je n'ai pas abordé le sujet des arbres intervallaires parce que je me doutais que ce ne serait pas adapté. Donc, pour la solution à ton problème, confère mon premier message :) :
Il va falloir que tu sélectionnes toute ta table (j'espère pour toi que tu n'as pas trop d'enregistrements…), et que tu reconstruises l'arbre en PHP…
Donc tu fais une seule requête SELECT pour récupérer tout le contenu de ta table, et tu gères les relations parent-enfant en PHP.

par x@v » 08 nov. 2008, 15:19

la représentation intervallaire ne me semble pas adapter à mon cas.
J'ai deux niveaux et maximum de 5 à 10 lignes dans une table de 10 champs.
Donc pour construire un menu html, la récursivité devrai suffire ?
sur ce site il dit:
http://sqlpro.developpez.com/cours/arborescence/

Code : Tout sélectionner

Or, non seulement la récursivité est très coûteuse, mais certains langages de procédures stockées, comme le Transact SQL de SQL Server de Microsoft ne savent pas la gérer ! C'est pourquoi ce modèle est a proscire lorsque : * l'arbre est profond (plus de 5 niveaux) * l'arbre est large (plus de 100 éléments sur un même niveau) * l'arbre contient beaucoup de valeurs (à partir de 200 à 300 éléments) * la majorité des requêtes sont des requêtes d'interrogation - SELECT (au moins 50% des requêtes) Et personnellement je vous conseille de passer au modèle par intervalle dès que l'un de ces 4 critères est vrai !
Même si sa semble interressant, sa reste vraiment pas évident à mettre en place.

par Sékiltoyai » 08 nov. 2008, 12:35

Si tu n'a pas plus de 3 niveau ok, tu fais 1-2 requête imbriqué, mais ça consomme :/
NON, pas ok. Il faut arrêter de proposer des solutions de merde. Faire des SELECT imbriqués, c'est tout simplement à bannir.
Moi je te suggère la Représentation Intervallaire, j'ai pas mal bossé dessu y a 1 semaine ou deux, il suffit de lister ça en fonction de la borne droite :
http://www.siteduzero.com/tutoriel-3-38 ... laire.html
http://sqlpro.developpez.com/cours/arborescence/
Ou http://www.phpfrance.com/forums/voir_sujet-242214.php

par katagoto » 08 nov. 2008, 12:02

Simple question : combient de niveau as-tu ? Si tu n'a pas plus de 3 niveau ok, tu fais 1-2 requête imbriqué, mais ça consomme :/ Moi je te suggère la Représentation Intervallaire, j'ai pas mal bossé dessu y a 1 semaine ou deux, il suffit de lister ça en fonction de la borne droite :
http://www.siteduzero.com/tutoriel-3-38 ... laire.html
http://sqlpro.developpez.com/cours/arborescence/

par Sékiltoyai » 08 nov. 2008, 04:15

Super, un SELECT dans une boucle. J'aimerais pas être ton hébergeur…

Bon, bref. Apparement, tu as opté pour une représentation d'arbre classique (il doit y avoir un mot mais je ne m'en souviens plus), donc avec des relations parent-enfant. C'est bien, c'est super simple à représenter, par contre il faut savoir que c'est inutilisable et inefficace dans la plupart des cas.
Soit. Il va falloir que tu sélectionnes toute ta table (j'espère pour toi que tu n'as pas trop d'enregistrements…), et que tu reconstruises l'arbre en PHP…

afficher des catégories et sous catégories d'une table mysql

par x@v » 08 nov. 2008, 02:20

Bonjour,
je cherche à afficher un menu en fonction de catégorie et sous catégorie
voici ma table
Image
donc pour traiter et affiche mon menu, j'utilise les champs "id" et "sousCategorie"
J'ai penser à faire:
si sous-catégorie == 0
donc la catégorie n'appartient à aucune sous catégorie

si le champ sousCategorie contient un nombre
ce nombre correspond l'id de la catégorie

ex: l'id deux appartient àla sous categorie 3

Mais pour afficher cela, je m'en sors pas
J'ai donc fait
<ul>
            <?php $sqlCategorie= "SELECT * FROM categorie";
            $result = $connection->select($sqlCategorie);
         	foreach ($result as $val)
         	{
         	   $sousCategorie=$val['sousCategorie'];
         	   if($sousCategorie == 0)
         	   {
         	   echo 
				'
				
					<li>
						<a href="?page=produits&cat='.$val['id'].'" title="'.$val['description'].'">
							'.$val['nom'].'
						</a>
					</li>
				';
         	   }
                  $sqlCategorie= "SELECT * FROM categorie WHERE sousCategorie=$sousCategorie";
         	   if($sousCategorie != 0)
         	   {
				echo 
				'<ul>
					<li>
						<a href="?page=produits&cat='.$val['id'].'" title="'.$val['description'].'">
							'.$val['nom'].'
						</a>
					</li>
				</ul>';         	         
         	   }
?></ul>
le menu est visible ici
http://6tnline.com/

Ma table est peut-être mal conçut ?
Cordialement