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 :

sous menu divisé en colonnes [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut sous menu divisé en colonnes
    Bonjour.

    Comment je pourrais faire pour que mon sous menu puisse ne pas dépasser plus de 25 items par colonnes. Mes items proviennent de ma base de données.

    Code : 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <?php 
     
    $resultat = "
    
    SELECT
    	c.id_cat,
    	c.cat_name
    FROM
    	gal_cat AS c
    ORDER BY
    	c.id_cat ASC
    	
    ";
     
    $result = mysqli_query($connexion,$resultat);
     
    echo '
    	<ul id="menuDeroulant">
    	
    		<li>
    			<a href="index.php?loading=Accueil">Accueil</a>
    			<ul class="sousMenu">
    				<!--li><a href="#">1</a></li-->		
    			</ul>
    		</li>
    
    		<li>
    			<a href="index.php?loading=Emissions&post=1">Émissions</a>
    			<ul class="sousMenu">';
     
    while (false != ($ligne = mysqli_fetch_assoc($result))){
    $catname = $ligne['id_cat'];
    echo	'<li><a href="index.php?loading=Emissions&post='.$catname.'">'.$ligne['cat_name'].'</a></li>';		
    }
     
    echo '</ul>
    		</li>
    	</ul>
    ';
    ?>
    Pour que ça donne ceci :
    fichier attaché

    Ma difficulté avec mon menu, c'est que plus j'ajoute des articles, plus ça fait une longueur. j'aimerais plus qu'après un certain nombre qu'il se divise en colonnes.

    Le sous-menu est une requête mysql.

    Doit y avoir un truc en PHP qui me permettrait de faire ça..

    de l'aide svp.
    Images attachées Images attachées  

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    l'astuce consiste à utiliser la propriété de "modulo" (%): x%y avec un compteur de ligne
    ex. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if($compteur%25==0){
       // => on change de colonne
       // [...]
    }

  3. #3
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    Merci pour l'info.

    J'ai vu de quoi sur les "modulo" sans vraiment comprendre.

    php.net : Reste de $a divisé par $b.

    En rapport avec mon problème, de l'aide me serait utile.

    $compteur viendrait d'où?
    C'est du genre comme ça que j'appliquerait?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while (false != ($ligne = mysqli_fetch_assoc($result))){
    $catname = $ligne['id_cat'];
     
    if($comteur%25==0){
    echo	'<li><a href="index.php?loading=Emissions&post='.$catname.'">'.$ligne['cat_name'].'</a></li>';		
    }
     
     
    }

  4. #4
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut
    J'ai trouvé un exemple que j'ai adapté pour mon cas mais c'est un tableau html qui va compter le nombre de colonne et non le nombre de ligne.

    col1 col2 col3
    1 2 3
    4 5

    Mais, il me faut plutôt :
    1 4
    2 5
    3

    J'aurais besoin d'aide pour le faire en fonction du nombre de lignes. Entre-temps, si je trouve une solution ou bien si je réussi à le faire, j'indiquerai ma solution.

    Voici mon nouveau code :

    Code : 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    <?php
    $nbCols = 5; // nombre de colonnes du tableau
    $cpt = 0; // compteur d'éléments
    ?>
     
    <table>
     
    <?php  
     
    include_once('config.inc.php');
     
    $resultat = "
    
    SELECT
    	c.id_cat,
    	c.cat_name
    FROM
    	gal_cat AS c
    ORDER BY
    	c.id_cat ASC
    	
    ";
     
    $result = mysqli_query($connexion,$resultat);
     
    while (false != ($ligne = mysqli_fetch_assoc($result))){
    $catname = $ligne['id_cat'];
     
        // début d'une ligne
        if ($cpt%$nbCols==0) // on divise le nb d'élément par le nb de colonnes. Si le reste est de 0 ...
            echo '<tr>'; // ..., alors on est sur le premier élément d'une ligne
     
     
        // On place chaque élément dans une cellule du tableau
        echo '<td>';
        echo ''.$ligne['cat_name']; // affichage de tout ce qu'on veut dans la cellule
        echo '</td>';
     
     
        // fin d'une ligne
        if ($cpt%$nbCols==($nbCols-1)) // on divise le nb d'élément par le nb de colonnes. Si le reste est de ($nbCols-1) ...
            echo '</tr>'; // ..., on est sur le dernier élément d'une ligne
     
        $cpt++; // on incrémente le compteur pour savoir où on en est
     
     
    }
     
    // Au cas où ...
    if ($cpt!=0 && $cpt%$nbCols!=0) { // S'il n'y a pas eu assez de cellules dans la boucle pour finir la ligne ...
        echo '<td colspan="'.($nbCols - ($cpt%$nbCols) ).'">&nbsp;</td>'; // ... on complète avec une cellule vide de la bonne taille...
        echo '</tr>'; // ... et on ferme la ligne
    }
     
    ?>
     
    </table>

  5. #5
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808

  6. #6
    Invité
    Invité(e)
    Par défaut
    Voila une utilisation judicieuse de mon tuto

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

Discussions similaires

  1. [Débutant] Sous menu colonne de gauche
    Par lefebvrebsi dans le forum SharePoint
    Réponses: 2
    Dernier message: 09/03/2015, 14h18
  2. Menu / Sous Menu
    Par lenouvo dans le forum MFC
    Réponses: 5
    Dernier message: 27/10/2004, 15h50
  3. Créer un sous-menu dynamiquement
    Par PurL dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/09/2004, 10h31
  4. ContextMenu de l'explorer: Problème de sous menu
    Par Ingham dans le forum Composants VCL
    Réponses: 8
    Dernier message: 26/02/2004, 08h06
  5. Réponses: 9
    Dernier message: 14/10/2003, 15h35

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