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 :

[Cookies] Rajouter un id='current' sur un lien lors d'un clic


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de Strix
    Inscrit en
    Novembre 2006
    Messages
    632
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 632
    Points : 607
    Points
    607
    Par défaut [Cookies] Rajouter un id='current' sur un lien lors d'un clic
    Bonjour.
    Alors voilà ma (nouvelle) question :
    Pour mon menu tout en image, j'utilise un id='current' pour signaler la page en cours.
    J'utilise un template donc dès que je le mets à jour les id='current' sautent et je doit me retaper des copier-coller à tout va.
    J'aimerais savoir comment rajouter en php, lorsque on clique sur un des menus, ce fameux id='current' !

    Exemple :
    Je suis sur Accueil. Je clique sur Portfolio et là j'aimerais que le lien passe de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="../portfolio.php?lang=<?php echo lang; ?>">
    à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="../portfolio.php?lang=<?php echo lang; ?>" id="current">
    Merci !
    On appelle le Dr Freud aux urgences !!
    ------------
    Quelques règles simples qui font la différence :
    Rechercher - FAQ - Dire bonjour - Écrire en français - Balises [code] - Dire merci - Tag

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Points : 422
    Points
    422
    Par défaut
    Bonsoir,
    Il est l'heure que j'aille dodo :p j'ai rien compris à ce que tu souhaitais
    Mais quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (/* nouvelle page */) { $truc = 'id"current"'; }
    <a href="../portfolio.php?lang=<?php echo lang; ?>" <?php echo $truc; ?> >
    Devrait faire l'affaire .

  3. #3
    Membre confirmé Avatar de Strix
    Inscrit en
    Novembre 2006
    Messages
    632
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 632
    Points : 607
    Points
    607
    Par défaut
    Bon je reprends avec plus d'exemples :

    Voici le code du menu pour ma page Accueil:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <ul> 
    <li id="m1"><a href="accueil.php?lang=<?php echo lang; ?>" id="current"></a></li>
    <li id="m2"><a href="portfolio.php?lang=<?php echo lang; ?>"></a></li>
    <li id="m3"><a href="services.php?lang=<?php echo lang; ?>"></a></li>
    <li id="m4"><a href="contact.php?lang=<?php echo lang; ?>"></a></li>
    <li id="m5"><a href="liens.php?lang=<?php echo lang; ?>"></a></li>
    <li id="m6"><a href="telechargement.php?lang=<?php echo lang; ?>"></a></li>
    </ul>
    Voici le code du menu pour ma page Portfolio:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <ul> 
    <li id="m1"><a href="accueil.php?lang=<?php echo lang; ?>"></a></li>
    <li id="m2"><a href="portfolio.php?lang=<?php echo lang; ?>" id="current"></a></li>
    <li id="m3"><a href="services.php?lang=<?php echo lang; ?>"></a></li>
    <li id="m4"><a href="contact.php?lang=<?php echo lang; ?>"></a></li>
    <li id="m5"><a href="liens.php?lang=<?php echo lang; ?>"></a></li>
    <li id="m6"><a href="telechargement.php?lang=<?php echo lang; ?>"></a></li>
    </ul>
    Le soucis est que je dois rajouter les id="current" manuellement car mon template me les supprime.
    Ce que j'aimerais trouvé, c'est un code php qui en gros dit :

    Si la page est portfolio.php
    alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="portfolio.php?lang=<?php echo lang; ?>">
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="portfolio.php?lang=<?php echo lang; ?>"  id="current">
    Je suis sûr que j'ai presque donné la réponse du coup... enfin bon.

    Re merci
    On appelle le Dr Freud aux urgences !!
    ------------
    Quelques règles simples qui font la différence :
    Rechercher - FAQ - Dire bonjour - Écrire en français - Balises [code] - Dire merci - Tag

  4. #4
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Points : 751
    Points
    751
    Par défaut
    J'ai pas la réponse, mais je peux peut être t'aiguiller, il faut que tu recupère la page sur laquelle tu es, en fonction de ça il ne te reste plus qu'a tester dans ton menu pour afficher le "id=current". C'est vague je sais :p

    EDIT:
    exemple :
    - tu peux utiliser une variable de session que tu mets à jour en arrivant sur chaque page avec le nom de la page.
    - ou Il doit exister une variable d'environement qui recupère le nom de ta page aussi ($_SERVER['REQUEST_URI'] je crois à tester).
    Aucune aide par MP, utilisez le forum.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    379
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 379
    Points : 422
    Points
    422
    Par défaut
    Tu peux mettre le nom de ta page en session, puis dans chaque ligne de ton lien rajouter un echo $_SESSION['nom_de_la_page']; ...

    Une façon un peu plus "propre" de le faire serait de générer ton menu dynamiquement ... mais il n'y aura pas vraiment de différence.

    Bonne journée.

  6. #6
    Membre averti Avatar de deY!
    Inscrit en
    Avril 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 403
    Points : 414
    Points
    414
    Par défaut
    Quel morteur de template utilises-tu ? tu as un template par fichier php ?
    deY!

  7. #7
    Membre confirmé Avatar de Strix
    Inscrit en
    Novembre 2006
    Messages
    632
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 632
    Points : 607
    Points
    607
    Par défaut
    Template dreamweaver

    si je fais un truc de genre =

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (<?=substr($_SERVER['REQUEST_URI'],x,-x); ?"=='acceuil.php') {
    <a href=acceuil.php..." id="current">
    }
    Ça devrait marcher non ?

    Le soucis, n'étant pas un pro en php, c'est où le positionner ?!
    On appelle le Dr Freud aux urgences !!
    ------------
    Quelques règles simples qui font la différence :
    Rechercher - FAQ - Dire bonjour - Écrire en français - Balises [code] - Dire merci - Tag

  8. #8
    Membre averti Avatar de deY!
    Inscrit en
    Avril 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 403
    Points : 414
    Points
    414
    Par défaut
    à la limite fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <li id="m1">
    <a href="accueil.php?lang=<?php= $lang; ?>" <?php if (strstr($_SERVER['REQUEST_URl'], 'acceuil.php')) echo 'id="current"' ?>>
    </a>
    </li>
    deY!

  9. #9
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Points : 751
    Points
    751
    Par défaut
    Tu es obligé de le faire pour chaque menu que tu as.
    Aucune aide par MP, utilisez le forum.

  10. #10
    Membre confirmé Avatar de Strix
    Inscrit en
    Novembre 2006
    Messages
    632
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 632
    Points : 607
    Points
    607
    Par défaut
    Bon ça marche avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <ul> 
    <li id="m1"><a href="accueil.php?lang=<?php echo lang; ?>" <?php if (substr($_SERVER['REQUEST_URI'],10,-8)=='accueil.php') echo 'id="current"' ?>></a></li>
    <li id="m2"><a href="portfolio.php?lang=<?php echo lang; ?>" <?php if (substr($_SERVER['REQUEST_URI'],10,-8)=='portfolio.php') echo 'id="current"' ?>></a></li>
    <li id="m3"><a href="services.php?lang=<?php echo lang; ?>" <?php if (substr($_SERVER['REQUEST_URI'],10,-8)=='services.php') echo 'id="current"' ?>></a></li>
    <li id="m4"><a href="contact.php?lang=<?php echo lang; ?>" <?php if (substr($_SERVER['REQUEST_URI'],10,-8)=='contact.php') echo 'id="current"' ?>></a></li>
    <li id="m5"><a href="liens.php?lang=<?php echo lang; ?>" <?php if (substr($_SERVER['REQUEST_URI'],10,-8)=='liens.php') echo 'id="current"' ?>></a></li>
    <li id="m6"><a href="telechargement.php?lang=<?php echo lang; ?>" <?php if (substr($_SERVER['REQUEST_URI'],10,-8)=='telechargement.php') echo 'id="current"' ?>></a></li>
    </ul>
    certains peuvent trouver ça long mais j'ai plus à retoucher mon menu !
    Je vais voir avec strstr, je me renseigne et j'essaye.

    Merci à tous !
    On appelle le Dr Freud aux urgences !!
    ------------
    Quelques règles simples qui font la différence :
    Rechercher - FAQ - Dire bonjour - Écrire en français - Balises [code] - Dire merci - Tag

  11. #11
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    salut

    echo lang;?
    ca marche ca sans erreur.. c'est une variable?

    je crois que c'est correct ce que tu as écris sauf qu'au lieux de faire ton substr plusieur fois, tu pourrais le faire une seule fois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    $mapage = substr($_SERVER['REQUEST_URI'],10,-8);
    ?>
    <ul> 
    <li id="m1"><a <?php echo ($mapage == 'accueil.php') ? 'href="accueil.php?lang=lang" id="current" >' : 'href="accueil.php?lang=lang" ';?></a></li>
    <li id="m1"><a <?php echo ($mapage == 'portfolio.php') ? 'href="portfolio.php?lang=lang" id="current" >' : 'href="portfolio.php?lang=lang" ';?></a></li>
    <li id="m1"><a <?php echo ($mapage == 'services.php') ? 'href="services.php?lang=lang" id="current" >' : 'href="services.php?lang=lang" ';?></a></li>
    <li id="m1"><a <?php echo ($mapage == 'contact.php') ? 'href="contact.php?lang=lang" id="current" >' : 'href="contact.php?lang=lang" ';?></a></li>
    <li id="m1"><a <?php echo ($mapage == 'liens.php') ? 'href="liens.php?lang=lang" id="current" >' : 'href="liens.php?lang=lang" ';?></a></li>
    <li id="m1"><a <?php echo ($mapage == 'telechargement.php') ? 'href="telechargement.php?lang=lang" id="current" >' : 'href="telechargement.php?lang=lang" ';?></a></li>
    </ul>
    voilà comme ca tu ne fais pas plusieur fois l'appel à la fonction substr, mais une seule
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  12. #12
    Membre confirmé Avatar de Strix
    Inscrit en
    Novembre 2006
    Messages
    632
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 632
    Points : 607
    Points
    607
    Par défaut
    Salut
    Citation Envoyé par ozzmax
    echo lang;?
    ca marche ca sans erreur.. c'est une variable?
    Dans mes fichiers langues (fr.php, en.php & de.php) j'ai une variable "lang" (je ne sais pas si on peut réellement appeler ça une variable).
    Je l'avais créé avant la création du cookie qui du coup me créé $lang

    Citation Envoyé par ozzmax
    je crois que c'est correct ce que tu as écris sauf qu'au lieux de faire ton substr plusieur fois, tu pourrais le faire une seule fois
    Merci beaucoup
    On appelle le Dr Freud aux urgences !!
    ------------
    Quelques règles simples qui font la différence :
    Rechercher - FAQ - Dire bonjour - Écrire en français - Balises [code] - Dire merci - Tag

  13. #13
    Membre confirmé Avatar de Strix
    Inscrit en
    Novembre 2006
    Messages
    632
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 632
    Points : 607
    Points
    607
    Par défaut
    Bonjour.

    Suite au messages précédents voilà mon menu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $urlcurrent = substr($_SERVER['REQUEST_URI'],1,-8);
    $current = 'id="current"'
    ?>
    <ul> 
    <li id="m1"><a href="accueil.php?lang=<?php echo lang; ?>" <?php if ($urlcurrent=='accueil.php') echo $current ?>></a></li>
    <li id="m2"><a href="portfolio.php?lang=<?php echo lang; ?>" <?php if ($urlcurrent=='portfolio.php') echo $current ?>></a></li>
    <li id="m3"><a href="services.php?lang=<?php echo lang; ?>" <?php if ($urlcurrent=='services.php') echo $current ?>></a></li>
    <li id="m4"><a href="contact.php?lang=<?php echo lang; ?>" <?php if ($urlcurrent=='contact.php') echo $current ?>></a></li>
    <li id="m5"><a href="liens.php?lang=<?php echo lang; ?>" <?php if ($urlcurrent=='liens.php') echo $current ?>></a></li>
    <li id="m6"><a href="telechargement.php?lang=<?php echo lang; ?>" <?php if ($urlcurrent=='telechargement.php') echo $current ?>></a></li>
    </ul>
    Le soucis est que j'ai des pages n'ayant pas de liens directement à partir du menu (comme le sondage) mais j'aimerais qu'elles aient l'état current de accueil, comment faire ?

    je pense qu'il faut joué au niveau de mon $current et d'un $nocurrent
    ex :
    $current = lien actuel + id="current"
    $nocurrent = lien accueil + id="current"

    Mais là je vais avoir des soucis d'écriture...

    Ou y a-t-il une façon de faire :

    <?php if ($urlcurrent=='accueil.php' ou 'sondage.php') echo $current ?> ?

    Re-merci d'avance
    On appelle le Dr Freud aux urgences !!
    ------------
    Quelques règles simples qui font la différence :
    Rechercher - FAQ - Dire bonjour - Écrire en français - Balises [code] - Dire merci - Tag

  14. #14
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Points : 751
    Points
    751
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php 
    if ($urlcurrent=='accueil.php' || $urlcurrent=='sondage.php') echo $current 
    ?>
    Aucune aide par MP, utilisez le forum.

  15. #15
    Membre confirmé Avatar de Strix
    Inscrit en
    Novembre 2006
    Messages
    632
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 632
    Points : 607
    Points
    607
    Par défaut
    Merci beaucoup. je ne connaissais pas du tout le ||. On peut les enchainés à l'infini (enfin pour 2 ou 3 autres pages) ?
    On appelle le Dr Freud aux urgences !!
    ------------
    Quelques règles simples qui font la différence :
    Rechercher - FAQ - Dire bonjour - Écrire en français - Balises [code] - Dire merci - Tag

  16. #16
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Oui, il s'agit enfait du "ou" (||) dans les conditions
    il y a le "et" aussi && qui peut s'avérer très utile également dans le cas de validations
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

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

Discussions similaires

  1. Désactiver redirection d'un lien lors d'un clic sur élément enfant
    Par zouuc dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 16/07/2014, 08h44
  2. [Cookies] Methode post sur un lien
    Par Tee shot dans le forum Langage
    Réponses: 20
    Dernier message: 04/06/2007, 18h32
  3. Réponses: 8
    Dernier message: 27/12/2006, 19h04
  4. [SYBASE ASE] Rajouter une contrainte null sur une colonne
    Par Little_Goldo dans le forum Sybase
    Réponses: 1
    Dernier message: 09/02/2005, 10h48
  5. [JSP][Javascript] click droit sur un lien
    Par Stessy dans le forum Servlets/JSP
    Réponses: 22
    Dernier message: 24/09/2004, 10h14

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