Menu active

Fermé
cassiope69 Messages postés 20 Date d'inscription dimanche 23 septembre 2007 Statut Membre Dernière intervention 6 février 2009 - 6 févr. 2009 à 11:14
cassiope69 Messages postés 20 Date d'inscription dimanche 23 septembre 2007 Statut Membre Dernière intervention 6 février 2009 - 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 ;)
A voir également:

7 réponses

Psyk974 Messages postés 551 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 30 mars 2010 51
6 févr. 2009 à 11:28
Fait un echo sur ta variable "$_SERVER['REQUEST_URI']" tu comprendras peut être d'où vient ton erreur ;)
0
cassiope69 Messages postés 20 Date d'inscription dimanche 23 septembre 2007 Statut Membre Dernière intervention 6 février 2009 1
6 févr. 2009 à 11:33
Une grosse erreur mais je ne sait pas ce que je dois mettre ...
0
Psyk974 Messages postés 551 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 30 mars 2010 51
6 févr. 2009 à 11:35
normalement tu ne devrais pas avoir d'erreur mais un truc du style : "page_en_cours.php"
0
cassiope69 Messages postés 20 Date d'inscription dimanche 23 septembre 2007 Statut Membre Dernière intervention 6 février 2009 1
6 févr. 2009 à 11:42
Je ne vois pas ce que je dois faire pour résoudre le problème...
0
Psyk974 Messages postés 551 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 30 mars 2010 51
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;
?>
0
cassiope69 Messages postés 20 Date d'inscription dimanche 23 septembre 2007 Statut Membre Dernière intervention 6 février 2009 1
6 févr. 2009 à 11:52
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 ???
0
Psyk974 Messages postés 551 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 30 mars 2010 51
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cassiope69 Messages postés 20 Date d'inscription dimanche 23 septembre 2007 Statut Membre Dernière intervention 6 février 2009 1
6 févr. 2009 à 12:37
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 )
0
Psyk974 Messages postés 551 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 30 mars 2010 51
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 ?
0
cassiope69 Messages postés 20 Date d'inscription dimanche 23 septembre 2007 Statut Membre Dernière intervention 6 février 2009 1
6 févr. 2009 à 12:45
Oui je connais mais il faut bien que les pages de mon menu appellent mes pages...
Pourquoi ça ne marche pas??
0
Psyk974 Messages postés 551 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 30 mars 2010 51
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
0
cassiope69 Messages postés 20 Date d'inscription dimanche 23 septembre 2007 Statut Membre Dernière intervention 6 février 2009 1
6 févr. 2009 à 13:32
Oula c'est compliqué je vais tester...
Merci de ton aide
0