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

Conception Web Discussion :

Façon la plus optimisée de gérer un menu


Sujet :

Conception Web

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2011
    Messages : 44
    Par défaut Façon la plus optimisée de gérer un menu
    Bonsoir,

    je cherche une méthode pas trop barbare pour gérer un menu dont la rubrique active est mise en avant par rapport au paramètre passé en GET.

    Exemple nous sommes la rubrique B d'un site donc je veux qu'elle soit en gras et soulignée par exemple:

    rubriqueA rubriqueB rubriqueC.

    Pour l'instant j'ai ma façon barbare :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <a href="<?php echo LINK.'/index.php?obj=rubriqueA'; ?>"><div class="<?php if ($_GET['obj']=="rubriqueA"){echo "underlineClass";}?>">rubrique1</div></a>
    <a href="<?php echo LINK.'/index.php?obj=rubriqueB'; ?>"><div class="<?php if ($_GET['obj']=="rubriqueB"){echo "underlineClass";}?>">rubrique2</div></a>
    <a href="<?php echo LINK.'/index.php?obj=rubriqueC'; ?>"><div class="<?php if ($_GET['obj']=="rubriqueC"){echo "underlineClass";}?>">rubrique3</div></a>
    et dans l'exemple, on a

    et dans le css, on a

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .underlineClass{text-decoration:underline;}
    je suis sûr qu'il existe des façons bien plus optimisées de gérer la chose, et j'en appelle à votre savoir svp. Car j'ai du mal à trouver quelque chose qui me convienne.

    Je voudrais éviter d'avoir à faire 3 conditions if (3 ici mais dans mon menu, j'en ai plus, et j'ai un sous-menu..

    Merci

  2. #2
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    On peut utiliser un tableau comme ceci...
    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
    $menu  =array();
    $menu[]=array('obj'=>'rubriqueA','txt'=>'Rubrique 1');
    $menu[]=array('obj'=>'rubriqueB','txt'=>'Rubrique 2');
    $menu[]=array('obj'=>'rubriqueC','txt'=>'Rubrique 3');
     
    $obj=isset($_GET['obj'])?$_GET['obj']:'';
     
    // Filtrer cette variable par mesure de sécurité avant de rentrer dans la boucle
     
    foreach($menu as $item){
    	$html='<a href="'.LINK.'/index.php?obj='.$item['obj'].'">';
    	if($item['obj']==$obj)$html.='<div class="underlineClass">';else $html.='<div>';
    	$html.=$item['txt']."</div></a>\n";
    	echo $html;	
    }
    ou comme cela...
    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
    $menu=array(
    	'rubriqueA'=>'Rubrique 1',
    	'rubriqueB'=>'Rubrique 2',
    	'rubriqueC'=>'Rubrique 3'
    );
     
    $obj=isset($_GET['obj'])?$_GET['obj']:'';
     
    // Filtrer cette variable par mesure de sécurité avant de rentrer dans la boucle
     
    foreach($menu as $key=>$txt){
    	$html='<a href="'.LINK.'/index.php?obj='.$key.'">';
    	if($key==$obj)$html.='<div class="underlineClass">';else $html.='<div>';
    	$html.=$txt."</div></a>\n";
    	echo $html;	
    }

    Pour la prise en compte des sous-menus, on pourrait avoir un tableau comme ceci...
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $menu  =array();
    $menu[]=array('obj'=>'rubriqueA','txt'=>'Rubrique 1','smenu'=>null);
    $menu[]=array('obj'=>'rubriqueB','txt'=>'Rubrique 2','smenu'=>null);
    $menu[]=array('obj'=>'rubriqueC','txt'=>'Rubrique 3','smenu'=>array('srubrique1'=>'Sous-Rubrique'));
    ou comme cela...
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $menu=array(
    	'rubriqueA'=>'Rubrique 1','smenu'=>null,
    	'rubriqueB'=>'Rubrique 2','smenu'=>null,
    	'rubriqueC'=>'Rubrique 3','smenu'=>array('srubrique1'=>'Sous-Rubrique')
    );

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2011
    Messages : 44
    Par défaut
    Merci Eric ! Je prends c'est ce que je voulais.
    Ti ringraziu !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    je complèterai le code d'Eric en disant : "liste non-ordonnée <ul><li>" :
    (en enlevant les div et en sortant le code html du code php)
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <ul id="menu_nav1">
    <?php	foreach($menu as $key=>$txt) { ?>
    	<li<?php echo ($key==$obj)? ' class="underlineClass">' : ''; ?>>
    		<a href="<?php echo LINK.'/index.php?obj='.$key; ?>"><?php echo $txt; ?></a>
    	</li>
    <?php	} ?>
    </ul>
    Avec sous-menu ?
    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
    <ul id="menu_nav1">
    <?php	foreach($menu as $key=>$txt) { ?>
    	<li<?php echo ($key==$obj)? ' class="underlineClass">' : ''; ?>>
    		<a href="<?php echo LINK.'/index.php?obj='.$key; ?>"><?php echo $txt; ?></a>
    		<!-- sous-menu ? -->
    <?php		if($menu[$key]['ssmenu']!=NULL) { ?>
    			<ul class="menu_nav2">
    <?php			foreach($ssmenu as $sskey=>$sstxt) { ?>
    				<li<?php echo ($sskey==$obj)? ' class="underlineClass">' : ''; ?>>
    					<a href="<?php echo LINK.'/index.php?obj='.$sskey; ?>"><?php echo $sstxt; ?></a>
    				</li>
    <?php			} ?>
    			</ul>
    <?php		} ?>
    	</li>
    <?php	} ?>
    </ul>

    -> A lire : Des menus déroulants grâce aux CSS
    Dernière modification par Invité ; 12/09/2011 à 12h48.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2011
    Messages : 44
    Par défaut
    Merci jreaux62 !

    Simple question, quand tu fais à la ligne 3 de ton premier code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <li<?php echo ($key==$obj)? ' class="underlineClass">' : ''; ?>>
    j'ai jamais vu le echo écrit avant la condition, ça fait en fait exactement la même chose que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <li<?php ($key==$obj)?  echo 'class="underlineClass">' :  echo''; ?>>
    ?

    Merci !

  6. #6
    Invité
    Invité(e)
    Par défaut
    -> L'instruction if : voir ces exemples
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo ($key==$obj)? ' class="underlineClass">' : ''; ?>
    est équivalent à :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php if($key==$obj){ echo ' class="underlineClass">'; } else { echo ''; } ?>

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2011
    Messages : 44
    Par défaut
    Merci ! J'aurais pas pensé faire une simple recherche sur php.net.

    Parfois j'apprends avec du retard de nouvelles subtilités dans les conditions les plus usitées.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/03/2009, 15h49
  2. Comment gérer le menu contextuel sur access 2007
    Par chocoprof dans le forum IHM
    Réponses: 1
    Dernier message: 16/12/2007, 19h34
  3. Façon la plus propre de retenir des variables
    Par Lolie11 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 04/06/2007, 17h27
  4. plus de musique quand le menu est utilisé
    Par seb nantes dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/08/2006, 11h12
  5. Réponses: 18
    Dernier message: 09/08/2005, 13h57

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