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

Langage PHP Discussion :

Traiter la variable récupérée pour activer le lien de la page courante


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut Traiter la variable récupérée pour activer le lien de la page courante
    Bonjour,

    Je vous remercie de lire ma requete. Et si vous pouvez y répondre, vous ferai de moi quelqu'un de comblé.
    Voilà mon problème :

    J'aimerais activer le lien de la page courante. Voici ce que j'ai fait comme algorithme. ça marche mais je suis certain que ce n'est pas la bonne méthode, parce que en face de 80 liens, on est foutu. Comment faire ça proprement ?

    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
    <?php
    //Recuperation de la variable de page
    if(isset($_GET['page']))
    {
    $page = $_GET['page'];
    }
    else
    {
    $page = 'home';
    }
     
    //Savoir sur quelle page on est pour écrire menu en fonction
    switch($page)
    {
    case 'home' :
    $varMenu = '
    	<ul id="tabnav">
    	<li class="active"><a href="index.php?page=home">Home</a></li>
    	<li ><a href="index.php?page=compte">Compte</a></li>
        <li ><a href="index.php?page=satat">Stat</a></li>
        </ul>
    ';
    break;
     
    case 'compte' :
    $varMenu = '
    	<ul id="tabnav">
    	<li><a href="index.php?page=home">Home</a></li>
    	<li class="active"><a href="index.php?page=compte">Compte</a></li>
        <li ><a href="index.php?page=satat">Stat</a></li>
        </ul>
    ';
    break;
     
    case 'stat' :
    $varMenu = '
    	<ul id="tabnav">
    	<li><a href="index.php?page=home">Home</a></li>
    	<li><a href="index.php?page=compte">Compte</a></li>
        <li class="active"><a href="index.php?page=satat">Stat</a></li>
        </ul>
    ';
    break;
    }
     
    echo $varMenu;
    ?>
    encore un grand merci et bonnes fêtes à toutes et à tous, et pour ceux qui ne font pas pâques, bonne journée
    Je sais que je ne sais rien

  2. #2
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    Salut,
    as tu reflechi a la methode que tu vas utiliser pour afficher tes 80 liens ?

    Un algo pourrait etre d'avoir un tableau avec toutes tes pages :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Pour chaque element du tableau,
      Si c'est la page courante (GET page)
        alors afficher le lien avec la classe 'active'
        sinon afficher le lien sans classe
      finsi
    finpour
    Z.

  3. #3
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Solution 1
    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
     
    <?php
    //Recuperation de la variable de page
    if(isset($_GET['page']))
    {
    $page = $_GET['page'];
    }
    else
    {
    $page = 'home';
    }
     
    $act = 'class="active" ';
     
    $varMenu = "<ul id=\"tabnav\"> \n";
    $varMenu .=" <li " . ($page == 'home' ? $act : '') . "><a href=\"index.php?page=home\">Home</a></li> \n";
    $varMenu .=" <li " . ($page == 'compte' ? $act : '') . "><a href=\"index.php?page=compte\">Compte</a></li> \n";
    $varMenu .=" <li " . ($page == 'satat' ? $act : '') . "><a href=\"index.php?page=satat\">Stat</a></li>\n";
    $varMenu .= "</ul>";
     
     
    echo $varMenu;
     
    ?>
    Mais effectivement si cela simplifie ton code, cela ne règle pas la multiplicité des liens !

    ERE
    Quand une tête pense seule, elle devient folle.

  4. #4
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Solution 2
    En utilisant un tableaux de liens:
    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
     
    <?php
    //Recuperation de la variable de page
    if(isset($_GET['page']))
    {
    $page = $_GET['page'];
    }
    else
    {
    $page = 'home';
    }
     
    //le tableau des liens avec l'url et le libellé associé
    $liens = array("home" => "Home",
                  "compte" => "Compte",
                  "satat" => "Stat" );
     
    $varMenu = "<ul id=\"tabnav\"> \n";
     
    foreach ($liens as $url => $libelle) {
    	$varMenu .=" <li " . ($page == $url ? "class=\"active\" " : '') . "><a href=\"index.php?page={$url}\">{$libelle}</a></li> \n";
    }
    $varMenu .= "</ul>";
     
     
    echo $varMenu;
    ?>
    Cela devrait te convenir...

    ERE
    Quand une tête pense seule, elle devient folle.

  5. #5
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Merci Emmanuel.Remy.

    Les deux codes sont propres. Je me rends compte qu'il me manque une bonne logique. Peux-tu me conseiller à ce sujet pour améliorer ma fonçon de coder ?

    Le premier code correspond à ma façon de penser et je comprends le code.
    Mais il faut avouer que le 2 ème est très beau et très propre. Wawooo. Je ne le comprends pas mais vais le déchiffrer, parce que j'aimerais coder comme ça prochainement.

    Merci beaucoup
    Je teste et te redis
    Je sais que je ne sais rien

  6. #6
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    Alexandrebox :
    Pour t'aider a reflechir, tu peux ecrire en pseudo code ce que tu veux faire :
    La solution de emmanuel.remy est la mise en oeuvre du pseudo code que je te proposais.

    Donc soit tu arrives a "ecrire" ce pseudo code dans ta tete, soit tu l'ecris sur une feuille de papier.
    Personnellement, l'ecrire m'aide a visualiser comment traiter des problèmes complexes.

    Z.

  7. #7
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Avec les commentaires !
    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
     
     
    //le tableau des liens avec l'url et le libellé associé
    // la clé est le nom de la page et la valeur le libellé associé
    $liens = array("home" => "Home",
                  "compte" => "Compte",
                  "satat" => "Stat" );
     
    //$varMenu contient l'ensemble du menu 
    //on crée la liste...
    $varMenu = "<ul id=\"tabnav\"> \n";
     
    //pour chaque élément du tableau des liens
    //on récupère l'url (la clé) et le libellé (la valeur)
    foreach ($liens as $url => $libelle) {
        //on construit la balise li
        //($page == $url ? "class=\"active\" " : "" -> si la page consultée
        //correspond à l'url scrutée, alors on génère la class, 
        //sinon on génère une chaine vide
        //{$url} et {$libelle} sont du remplissage avec les valeurs des 
        //variables associées
        $varMenu .=" <li " . ($page == $url ? "class=\"active\" " : '') . "><a href=\"index.php?page={$url}\">{$libelle}</a></li> \n";
    }
    //on clôt le menu
    $varMenu .= "</ul>";
     
     
    echo $varMenu;
    ?>
    J'espère que cela te permettra de mieux comprendre.

    ERE
    Quand une tête pense seule, elle devient folle.

  8. #8
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Merci beaucoup Emmanuel.Remy pour tes explications. Maintenant j'ai tout compris. Je vais faire des exercices avec ton exemple pour maîtriser l'utilisation des tableaux. Je trouve le code vraiment propre et très pro.

    Mon site utilise le url rewriting
    mon lien après urlrewriting donne par exemple ceci :
    pg,home.php
    Pour adapter cette partie de ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $varMenu .=" <li " . ($page == $url ? "class=\"active\" " : '') . "><a href=\"index.php?page={$url}\">{$libelle}</a></li> \n";
    J'écris ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $varMenu .='<li' . ($page == $url ? "class=\"active\" " : '') . "><a href=\"pg,{$url}.php\">{$libelle}</a></li> <br>";
    Pourras-tu m'aider à le faire correctement stp?

    Encore merci beaucoup Emannuel.Remy
    Et merci Z pour tes conseils
    Je sais que je ne sais rien

  9. #9
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Peux tu passer tes règles d'écritures de rewriting stp ?

    ERE
    Quand une tête pense seule, elle devient folle.

  10. #10
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    La page réécrite marche correctement en ligne également. La règle n'a pas de problème. C'était juste au niveau d'application de css autour des liens.

    Voici la règle comme tu me l'as demandée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^pg,([0-9a-zA-Z\-]+)\.php$ index.php?page=$1 [L]
    Merci
    Je sais que je ne sais rien

  11. #11
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Ton code précédent me semble bon. Il y a quelque chose qui te dérange ?

    ERE
    Quand une tête pense seule, elle devient folle.

  12. #12
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Ok merci.
    Je voudrais juste que tu me le confirmes. php est un langage qui n'est pas très rigoureux, parfois ça marche mais ne veut pas dire que c'est bien. Je vouddrais juste savoir ce que tu en pensais.

    Je vais dans ce cas coder comme ça. Encore merci
    Je sais que je ne sais rien

  13. #13
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Alexandrebox est devenu fou !
    (...)php est un langage qui n'est pas très rigoureux, parfois ça marche mais ne veut pas dire que c'est bien
    Hou, la, la !! Tu sais que tu prends des risques énormes avec de telles affirmations !

    Non, vraiment, tu mets ta vie en jeu là.

    Bon courage pour la suite de ton dev.

    Sans rancune,


    ERE
    Quand une tête pense seule, elle devient folle.

  14. #14
    Membre habitué Avatar de Alexandrebox
    Profil pro
    Inscrit en
    Août 2006
    Messages
    635
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 635
    Points : 153
    Points
    153
    Par défaut
    Désolé, je me suis mal exprimé. Je n'étais pas sûr de ce que j'écrivais.
    je cherchais le regard d'un pro. C'est fait je suis content. Merci et bonne soirée. Je vais mettre résolu
    Je sais que je ne sais rien

  15. #15
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Désolé, je me suis mal exprimé.
    C'est bien ainsi que je l'avais pris, c'était juste pour faire un brin d'humour.



    ERE
    Quand une tête pense seule, elle devient folle.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/12/2010, 20h16
  2. RegEx pour extraire les liens d'une page html
    Par herch dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 13/05/2009, 17h26
  3. variable GET pour tous les liens de la page
    Par saluts92b dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 03/11/2008, 13h19
  4. Liens vers la page courante
    Par Samyhijodelaluna dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 02/03/2007, 17h18
  5. [MySQL] Comment faire pour avoir un lien sur les pages suivantes/précédentes
    Par Meewix dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 21/10/2006, 09h32

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