Php URL / onglet actif

Fermé
alexEEE - 14 févr. 2013 à 15:02
 Utilisateur anonyme - 14 févr. 2013 à 15:33
Bonjour,
je vous explique le truc, en fait j'ai fait un switch case donnant les conditions de l'onglet actif, sauf que mon menu est chargé avant le que le switch case ne soit pris en compte, donc l'onglet actif ne réagit pas et ne s'affiche nulle part.

ma page d'accueil est la page home.php
la variable $menu est juste reprise, il n'y pas d'include du menu.php.

on m'a dit d'utiliser l'URL et de transformer mon menu contenu dans la page "menu.php" en fontion, par ce biais, je marque sur la page apppelé sur mon menu à onglet ( par exemple : la page "rechercher_dve.php") que la variable du switch ($nav_en_cours) remplit le "case" n°2 par exemple, donc l'onglet rechercher du menu devrait passer en actif.

Il me manque le coté technique, car le raisonnement est trouvé enfin je pense.

voici comment est faite ma requete d'url :

<?php

$fileName = substr($_SERVER ["REQUEST_URI"], strrpos($_SERVER ["REQUEST_URI"], "/") +1, strlen($_SERVER ["REQUEST_URI"]));

?>

par exemple : sur la page home.php cette variable $fileName retourne "home"
donc

voici ma fonction et mon switch:

function affiche_menu()
{
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">';
echo "<html>";
echo "<head>";
echo '<link rel="stylesheet" href="./style/style.css" type="text/css" media="screen"/>';
echo '<link rel="stylesheet" href="./style/ie.css" type="text/css" media="screen"/>';
echo '<script src="./javascript/multiClass.js" type="text/javascript"></script>';
echo "</head>";
echo "<body>";
if ($aut and !$menu)
//Espace réserver au menu -->
$menu .= "<div id='container'>";
$menu .= "<ul id='menu'>";

$menu .="<li" . $idact1 ."><a href='./home.php' target='principal' title='Page Accueil'><span>" . translate($menu_accueil, "Accueil") . "</span></a> </li>";

$menu .="<li" . $idact2 ."><a href='./rechercher_dve.php' target='principal' title= 'Rechercher un dossier de visite electronique'><span>". translate($menu_rechercher, "Rechercher un DVE") . "</span></a> </li>";

$menu .="<li" . $idact3 ."><a href='./controle_technique.php' target='principal' title= 'contrôle technique' ><span>" . translate($menu_controle_tech, "Contrôle technique") . "</span></a> </li>";

$menu .="<li" . $idact4 ."><a href='./editer_dve.php' target='principal' title= 'Editer un dossier de visite electronique' ><span>" . translate($menu_editer, "Editer un DVE") . "</span></a> </li>";

$menu .="<li" . $idact5 ."><a href='./traitement_erreur.php' target='principal' title= 'Traitements des erreurs' ><span>" . translate($menu_traitement_erreur, "Traitement des erreurs") . "</span></a> </li>";

$menu .="<li" . $idact6 ."><a href='./doc/guide_utilisateur_". $app_name . ".pdf' target='principal' title= 'Besoin Aide?' ><span>" . translate($menu_aide, "Aide") . "</span></a> </li>";

$menu .= "</ul>";
$menu .= "</div>";


switch($nav_en_cours)
{
case ('home'):
{
$idact1 = 'id="actif"';
}
break;
case ($fileName ='rechercher_dve'):
{
$idact2 = 'id="actif"';
}
break;
case ($fileName ='controle_technique'):
{
$idact3 = 'id="actif"';
}
break;
case ($fileName ='editer_dve'):
{
$idact4 = 'id="actif"';
}
break;
case ($fileName ='traitement_erreur'):
{
$idact5 = 'id="actif"';
}
break;
case ($fileName ='aide'):
{
$idact6 = 'id="actif"';
}
break;
}

echo "</body>";
echo "</html>";
}

normalement la condition de $nav_en_cours= $fileName marquée sur la page rechercher.php devrait lors du clic sur le bouton rendre l'onglet actif.

qu'est ce qui ne fonctionne pas?

2 réponses

Profil bloqué
14 févr. 2013 à 15:24
je pense qu'il faut inverser l'ordre
mettre les switch avant l'affichage du menu

exemple ici

<li" . $idact1 .">
variable $idact1 n'est pas encore connue
0
Utilisateur anonyme
14 févr. 2013 à 15:33
Bonjour

J'ajouterai à ce qu'a dit Waelbb83 qu'a priori, tu n'utilises pas correctement l'instruction switch.
https://www.php.net/manual/fr/control-structures.switch.php
Il ne doit pas y avoir ce comparaisons dans chaque 'case', mais des valeurs. D'ailleurs les comparaisons s'écriraient avec == et non pas implement =.
Ce que tu as écrit est syntaxiquement correct, mais ne correspond très probablement pas à ce que tu crois tester. Finalement, tu testes la valeur de $nav_en_cours ou celle de $fileName ?

Le plus simple est certainement de ré-écrire avec des if... elseif... elseif...
0