IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Affichage des catégories et sous catégories [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti Avatar de onirisme
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Novembre 2004
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 221
    Points : 316
    Points
    316
    Par défaut Affichage des catégories et sous catégories
    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 :
    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>' ;
    	}
    ?>
    Cette fonction me permet d'afficher, les liens, les catégories, les archives.

    Le problème :
    Je souhaiterai afficher mes catégories en prennant en compte les sous catégories pour obtenir l'affichage suivant :
    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...
    Pour obtenir cela, j'ai construit une table mw_categories :
    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 ;
    Le champ cat_link correspondant à l'id de la catégorie mère

    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
    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
    Merci pour votre aide

  2. #2
    Membre averti Avatar de onirisme
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Novembre 2004
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 221
    Points : 316
    Points
    316
    Par défaut
    Bon, ok, j'ai réussi...

    Je sais pas si c'est le meilleur moyen d'y arrivé mais ça fonctionne. Je laisse le code :

    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
    20
    21
     
    function getCat($tableName){
    	//Requête pour la selection des catégories MERE
    	$getSelect = "SELECT * FROM $tableName WHERE cat_link = 0 " ;
    	$reqSelect = mysql_query($getSelect)or die ("Impossible d'éxecuter la requête Liste2");
     		echo '<ul>'."\n";
    		//On affiche les vatégories MERE
    		while($i = mysql_fetch_row($reqSelect)) { 
    		   	echo '<li class="mainCat"><b>'.$i[0].$i[1].'</b></li>'."\n" ;
    			//Deuxieme requête qui cible les sous catégories >0 (0 étant Catégorie MERE)
    			$getFille = "SELECT * FROM $tableName WHERE cat_link > 0 " ;
    			$reqFille = mysql_query($getFille)or die ("Impossible d'éxecuter la requête getFille") ;
    				//On affiche les résultat dans chaque boucle
    				while($fille = mysql_fetch_row($reqFille)) {
    					if ($fille[4]==$i[0]){
    				echo '<li class="sousCat">'.$fille[0].$fille[1].'</li>'."\n" ;
    				}
    			}
    		}
    		echo '</ul>'."\n";
    	}

    HTML généré ->
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <ul>
    <li class="mainCat"><b>1Générale</b></li>
    <li class="sousCat">4News</li>
    <li class="mainCat"><b>2Informatique</b></li>
    <li class="sousCat">5Php</li>
    <li class="sousCat">6Linux</li>
    <li class="mainCat"><b>3i-wab</b></li>
    </ul>

    Affichage :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Générale
        News
    Informatique
        Php
        Linux
    i-wab

    J'ai éssayé de commenter un peu...
    Si vous avez de meilleures propositions, je suis OK...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Smarty] affichage catégories et sous catégories
    Par tabbabi dans le forum Bibliothèques et frameworks
    Réponses: 11
    Dernier message: 06/11/2012, 14h19
  2. Réponses: 1
    Dernier message: 15/12/2011, 14h16
  3. créer des catégories et sous catégories
    Par larreira dans le forum Excel
    Réponses: 5
    Dernier message: 28/04/2009, 11h47
  4. Réponses: 17
    Dernier message: 07/09/2007, 08h06
  5. Affichage incrémenté de catégories et sous-catégories
    Par Djakisback dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 21/09/2006, 21h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo