Posez votre question Signaler

Menu active

cassiope69 20Messages postés 23 septembre 2007Date d'inscription - Dernière réponse le 6 févr. 2009 à 13:32
Bonjour,
je réalise actuellement un site et j'aimerais que la lien vers la page actuelle soit d'une couleur différente alors j'ai fait mes recherches sur le net et j'ai découvert qu'il fallait du code PHP qui test la page pour savoir laquelle est active
voici la code de la page menu :
<ul id="menu">
<li><a href="index.php" <?php
if ($_SERVER['REQUEST_URI'] == 'index.php')
{
$class="class='active'";
}
else
{
$class="class='menuhaut'";
}
echo $class;
?> target="_self">• Accueil</a>
</li>
<li><a href="inscription.php" <?php
if ($_SERVER['REQUEST_URI'] == 'inscription.php')
{
$class="class='active'";
}
else
{
$class="class='menuhaut'";
}
echo $class;
?> target="_self">• Inscription</a>
</li>
<li><a href="connexion.php" <?php
if ($_SERVER['REQUEST_URI'] == 'connexion.php')
{
$class="class='active'";
}
else
{
$class="class='menuhaut'";
}
echo $class;
?> target="_self">• Connexion</a>
</li>
<li><a href="deconnexion.php" <?php
if ($_SERVER['REQUEST_URI'] == 'deconnexion.php')
{
$class="class='active'";
}
else
{
$class="class='menuhaut'";
}
echo $class;
?> target="_self">• Déconnexion</a>
</li>
</ul>

et voici le code de la CSS :
ul#menu
{
margin:30;
padding:0;
list-style-type:none;
width:1180px;
position:relative;
display:block;
height:30px;
.....
}
ul#menu li
{
display:block;
float:left;
margin:0;
padding:0;
}
ul#menu li a
{
display:block;
float:left;
color:white;
...
}
ul#menu li a:hover
{
color:#FFFFFF;
height:22px;
background:transparent url(images/menu_noir.png) 0px -30px no-repeat;
}
ul#menu li a:active
{
color:#FFFFFF;
height:22px;
background:transparent url(images/menu_noir.png) 0px -30px no-repeat;
}

Le problème est que le code généré par le menu donne pour tous les liens même celui séléctionné
class='menuhaut'
Est ce que quelqu'un aurait des solutions afin de m'aider???
Merci d'avance ;)
Lire la suite 

Menu active »

12 réponses
Réponse
+0
moins plus
Fait un echo sur ta variable "$_SERVER['REQUEST_URI']" tu comprendras peut être d'où vient ton erreur ;)
Ajouter un commentaire
Réponse
+0
moins plus
Une grosse erreur mais je ne sait pas ce que je dois mettre ...
Psyk974 - 6 févr. 2009 à 11:35
normalement tu ne devrais pas avoir d'erreur mais un truc du style : "page_en_cours.php"
Ajouter un commentaire
Réponse
+0
moins plus
Je ne vois pas ce que je dois faire pour résoudre le problème...
Psyk974 - 6 févr. 2009 à 11:45
Utilise ce petit code afin de bien récupérer le nom de ta page :)

<?php
$nom_page= substr($_SERVER["PHP_SELF"], strrpos($_SERVER["PHP_SELF"], '/')+1, strrpos($_SERVER["PHP_SELF"],'.')-1);

echo $nom_page;
?>
Ajouter un commentaire
Réponse
+0
moins plus
Parfait ça recupère bien le nom de la page.
Par contre lors de mon if si je met if $nom_page == 'index.php') ça me met une erreur, est ce que je dois remettre pour chaque ligne tout le code ou il y a une autre manière pour mettre simpletement $nom_page ???
Psyk974 - 6 févr. 2009 à 12:33
Ok, place le bout de code tout en haut de la page principale ensuite tu peux utiliser la variable $nom_page dans toute la page.

Petite question, comment tu appelles tes autres pages ?
Ajouter un commentaire
Réponse
+0
moins plus
C'est ce que j'ai fait j'ai mis ton code au début de la page et j'ai repris le $nom_page pour chaque if et ca me met ce message :
Parse error: parse error, unexpected T_VARIABLE, expecting '(' in C:\Program Files\EasyPHP 2.0b1\www\site.php\menu.php on line 8

Mes autres pages sont appelées dans cette page ( le menu )
Psyk974 - 6 févr. 2009 à 12:44
D'accord on dirait que je vois ce que tu fais et c'est pas la bonne solution.
As-tu déjà entendu parler des "includes" en PHP ?
Ajouter un commentaire
Réponse
+0
moins plus
Oui je connais mais il faut bien que les pages de mon menu appellent mes pages...
Pourquoi ça ne marche pas??
Psyk974 - 6 févr. 2009 à 12:55
Ton site doit se présenter de la manière suivante.

<?php

if ($_GET['page']=='accueil') {
echo '<a style="color:red;" class="menu_active" href="index.php?page=accueil">Accueil</a><br/>';
}
else {
echo '<a class="menu_inactive" href="index.php?page=accueil">Accueil</a><br/>';
}

if ($_GET['page']=='inscription') {
echo '<a style="color:red;" class="menu_active" href="index.php?page=inscription">inscription</a><br/>';
}
else {
echo '<a class="menu_inactive" href="index.php?page=inscription">inscription</a><br/>';
}

if ($_GET['page']=='connexion') {
echo '<a style="color:red;" class="menu_active" href="index.php?page=connexion">connexion</a><br/>';
}
else {
echo '<a class="menu_inactive" href="index.php?page=connexion">connexion</a><br/>';
}
//etc

switch ($_GET['page']) {
case 'accueil': include("accueil.php");break;
case 'inscription': include("inscription.php");break;
case 'connexion': include("connexion.php");break;
//etc
}

?>

Essai de comprendre ce que fais ce code, je pense que ça va t'éclairer
Ajouter un commentaire
Réponse
+0
moins plus
Oula c'est compliqué je vais tester...
Merci de ton aide
Ajouter un commentaire
Ce document intitulé « menu active » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook