[Résolu] Changer couleur du lien de la page active

Changer couleur du lien de la page active [Résolu] - PHP - Programmation

Marsh Posté le 20-05-2010 à 13:04:03    

Salut!
 
J'aurai besoin d'un petit coup de main svp.
 
Je voudrais surligner le lien de ma page active dans mon menu pour que l'utilisateur puisse savoir où il se trouve.
Mon code de départ est celui-ci (il fonctionne) :

Code :
  1. <a href="/fr/galeries.php"<?php echo ($_SERVER['REQUEST_URI'] == "/fr/galeries.php" )?'class="li_actif"':'' ?>>GALERIES PHOTO</a></li>

Mais je voudrais aussi que le lien soit actif quand je suis sur une page qui commence par /fr/galeries/
J'ai essayé ce code mais ça ne fonctionne pas.

Code :
  1. <a href="/fr/galeries.php"<?php echo ($_SERVER['REQUEST_URI'] == "/fr/galeries.php" || "/fr/galeries/" )?'class="li_actif"':'' ?>>GALERIES PHOTO</a></li>

Merci!!


Message édité par djodjolyon le 21-05-2010 à 16:37:41
Reply

Marsh Posté le 20-05-2010 à 13:04:03   

Reply

Marsh Posté le 20-05-2010 à 13:12:34    

Quand tu veux tester si A est égale à 1 ou 0 tu fais ; A == 1 || A == 0.
Sinon suivant ce que tu veux faire tu peux vérifier si ça commence par "/fr/galeries".


Message édité par Deamon le 20-05-2010 à 13:13:38
Reply

Marsh Posté le 20-05-2010 à 13:14:56    

La précédence de == est supérieure à celle de ||
 
Donc ton code est interprété de cette manière :
1 - ($_SERVER['REQUEST_URI'] == "/fr/galeries.php" || "/fr/galeries/" )
2 - $_SERVER['REQUEST_URI'] == "/fr/galeries.php" || "/fr/galeries/"
3 - true || "/fr/galeries/"
ou
3 - false || "/fr/galeries/"
4 - true (dans le premier cas, la string est ignorée, dans le second elle est castée en booléenne et comme elle est non nulle/vide elle retourne true)
 
Il faut que tu écrive plutôt :
($_SERVER['REQUEST_URI'] == "/fr/galeries.php" || $_SERVER['REQUEST_URI'] == "/fr/galeries/" )
 
http://www.php.net/manual/en/langu [...] edence.php

Reply

Marsh Posté le 20-05-2010 à 13:21:39    

J'ai pas préciser que je ne connais pas le php...
Comment fait-on pour vérifier que ça commence par "/fr/galeries"?
Merci
 
[Edit]Pas vu la réponse de Monsieur Y[Edit]


Message édité par djodjolyon le 20-05-2010 à 13:29:42
Reply

Marsh Posté le 20-05-2010 à 13:37:39    

Merci pour les précision Monsieur Y même si c'est encore un peu abstrait pour moi...
Donc j'ai essayé avec ($_SERVER['REQUEST_URI'] == "/fr/galeries.php" || $_SERVER['REQUEST_URI'] == "/fr/galeries/" ).
Ca fonctionne si je met l'adresse complète /fr/galeries/exemple/xxx.php mais pas avec la moitié de l'adresse /fr/galeries/.
Comment faire pour que toutes les adresses commençant par /fr/galeries/ soient prisent en compte?

Message cité 1 fois
Message édité par djodjolyon le 20-05-2010 à 14:01:05
Reply

Marsh Posté le 20-05-2010 à 16:13:47    

djodjolyon a écrit :

Merci pour les précision Monsieur Y même si c'est encore un peu abstrait pour moi...
Donc j'ai essayé avec ($_SERVER['REQUEST_URI'] == "/fr/galeries.php" || $_SERVER['REQUEST_URI'] == "/fr/galeries/" ).
Ca fonctionne si je met l'adresse complète /fr/galeries/exemple/xxx.php mais pas avec la moitié de l'adresse /fr/galeries/.
Comment faire pour que toutes les adresses commençant par /fr/galeries/ soient prisent en compte?


Code :
  1. preg_match('/^\/fr\/galeries/',$_SERVER['REQUEST_URI'])


/^\/fr\/galeries/ est une expression régulière.
 
Si on la décompose :

  • englobée par des / pour la délimiter
  • ^ vérifie qu'on est au début de la chaîne de caractère
  • \/ vérifie qu'on trouve un / (on met un \ devant pour qu'il ne soit pas compris comme un délimiteur)
  • ^\/fr\/galeries signifie donc : une chaîne de caractères commençant par /fr/galeries

Reply

Marsh Posté le 20-05-2010 à 19:51:17    

Parfait ça fonctionne!!!
Merci  à tous ;)
Voilà le code final...

Code :
  1. <a href="/fr/galeries.php"<?php echo (preg_match('/^\/galeries/',$_SERVER['REQUEST_URI']) || $_SERVER['REQUEST_URI'] == "/fr/galeries.php" ) ?'class="li_actif"':'' ?>>GALERIES PHOTO</a>


Bonne soirrée

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed