PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 25-06-2009 10:39:49

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

[Résolu] Simplification de conditonnelle

Coucou,

Me jetant à corps perdu [bon, pas tout à fait, mais bon] dans le css, je mixe un peu le tout avec les pseudos trames et le reste...
Pour mon petit menu, j'ai donc un truc du style :


if (!empty($_GET['page'])) {$page = $_GET['page'];} else {$page='accueil';}?>
    <div id="sidebarnav">
    <a class="active" href="index">Accueil</a>
    <a class="" href="lienmenu1">Menu1</a> // lienmenu1 étant défini dans un array
    <a class="" href="lienmenu2">Menu2</a> // lienmenu2 étant défini dans un array
    <a class="" href="lienmenu3">MEnu3</a> // lienmenu3 étant défini dans un array
...
...
 

Tel que le code apparait, j'aurais l'application du style "sidebarnav" avec l'attribut "active" [surbrillance simple] sur le lien "Accueil"...

Comme je passe par des pseudos-trame, je récupère aisément le nom de la page à inserer.
Du coup, afin d'avoir mon menu qui réagit avec la page en cours, j'ai pour l'instant 2 solutions simples mais fastidieuses :

<?php
if (!empty($_GET['page'])) {$page = $_GET['page'];} else {$page='accueil';}
?>
    <div id="sidebarnav">
<?php if ($page == "accueil") {$var1 = "active"} else {$var1 = ""};?>
    <a class="<?php echo $var1;?>" href="index">Accueil</a>
<?php if ($page == "menu1") {$var2 = "active"} else {$var2 = ""};?>
    <a class="<?php echo $var2;?>" href="lienmenu1">Menu1</a>
<?php if ($page == "menu2") {$var3 = "active"} else {$var3 = ""};?>
    <a class="<?php echo $var3;?>" href="lienmenu2">Menu2</a>
...
...

Ou alors pour condenser les parties php

<?php
if (!empty($_GET['page'])) {$page = $_GET['page'];} else {$page='accueil';}?>
    <div id="sidebarnav">
<?php
// condensé des conditionnelles
if ($page == "accueil") {$var1 = "active"} else {$var1 = ""}
elseif ($page == "menu1") {$var2 = "active"} else {$var2 = ""}
elseif ($page == "menu2") {$var3 = "active"} else {$var3 = ""};
// puis le code html
?>
    <a class="<?php echo $var1;?>" href="index">Accueil</a>
    <a class="<?php echo $var2;?>" href="lienmenu1">Menu1</a>
    <a class="<?php echo $var3;?>" href="lienmenu2">Menu2</a>
...
...
 

N'y a t il pas une façon plus simple de prendre en compte toutes les conditionnelles ? [intéressant pour un code propre et si le menu est très long]

Merci d'avance


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#2 25-06-2009 11:49:46

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] Simplification de conditonnelle

Vite fait, sur le gaz

<?php
$items=array('accueil'=>array('href'=>'index','libelle'=>'Accueil','active'=>''),
             'menu1'=>array('href'=>'lienmenu1','libelle'=>'Menu1','active'=>''),
             'menu2'=>array('href'=>'lienmenu2','libelle'=>'Menu2','active'=>''));
if (!empty($_GET['page'])) {$page = $_GET['page'];} else {$page='accueil';}
$items[$page]['active']=' class="active"';
?>
          <div id="sidebarnav">
<?php
foreach($items as $menu=>$cols){
?>
            <a <?php echo $cols['active'] ?> href="<?php echo $cols['href']?>"><?php echo $cols['libelle'] ?></a><br/>
<?php    } ?>

Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 25-06-2009 14:43:02

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : [Résolu] Simplification de conditonnelle

et bien, disons qu'une fois de plus, c'est parfait !

Il s'agit des utilisations de ces foutus array qui me fait toujours autant défaut...

L'élève est encore loin de dépasser le maître [oui, t'as vu, je l'ai dit ^^]


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

Pied de page des forums