Bonjour,

Je gère un menu en stockant ses éléments dans une base de données.
J'ai le fichier menu.php qui affiche une barre de menu et sous-menu.

menu.php :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
		$querymenu = "SELECT E.LIB_ELEMENT_MENU, E.ORDRE_ELEMENT_MENU, E.LIEN_ELEMENT_MENU, E.ID_ELEMENT_MENU, E.TARGET_ELEMENT_MENU FROM ELEMENT_MENU E, ACCEDE A, PROFIL P WHERE E.ELE_ID_ELEMENT_MENU=0 AND E.ID_ELEMENT_MENU=A.ID_ELEMENT_MENU AND A.ID_PROFIL=P.ID_PROFIL AND P.LIB_PROFIL='".$_SESSION['profil']."' ORDER BY ORDRE_ELEMENT_MENU;";//on prend les éléments du menu principal, d'où E.ELE_ID_ELEMENT_MENU=0
		$resultmenu = mysql_query($querymenu);
		echo "<table border=\"0\" align=\"center\">";
		echo "<tr>";
		if ($resultmenu==false){
			echo "<td align=\"center\">";
			message_erreur("009",$_SESSION['emailadmin'],"menu");
			echo "</td>";
		} else {
			$rowmenu = mysql_fetch_array($resultmenu);
			while ($rowmenu != false) {
				echo "<td align=\"center\">";
				if ((strtolower($_SESSION['identifiant']) != 'psu') || ((strtolower($_SESSION['identifiant']) == 'psu') && ($rowmenu['LIB_ELEMENT_MENU'] == 'Administration' || $rowmenu['LIB_ELEMENT_MENU'] == 'Contact' || $rowmenu['LIB_ELEMENT_MENU'] == 'Se déconnecter'))) {//psu est le compte qui permet de suivre la création des comptes; il ne peut  voir que les comptes et les contacts.
					echo "<a href=\"".$rowmenu['LIEN_ELEMENT_MENU']."&amp;ID_ELEMENT_MENU=".$rowmenu['ID_ELEMENT_MENU']."\"";
					if ($rowmenu['TARGET_ELEMENT_MENU'] != '') {
						echo " target=\"".$rowmenu['TARGET_ELEMENT_MENU']."\"";
					}
					echo ">".$rowmenu['LIB_ELEMENT_MENU']."</a>";
				}
				echo "</td>";
				echo "<td width=\"30\">&nbsp;</td>";
				$rowmenu = mysql_fetch_array($resultmenu);
			}
		}
		echo "</tr>";
		echo "</table>";
		echo "<hr>";
 
		//on récupère les éléments de sous-menu en fonction du menu principal (ID_ELEMENT_MENU) et du profil utilisateur. S'il y en a, on les affiche
		$id_element_menu = @$_GET['ID_ELEMENT_MENU'];
		$querysousmenu = "SELECT E.LIB_ELEMENT_MENU, E.ORDRE_ELEMENT_MENU, E.LIEN_ELEMENT_MENU, E.ID_ELEMENT_MENU, E.TARGET_ELEMENT_MENU FROM ELEMENT_MENU E, ACCEDE A, PROFIL P WHERE E.ELE_ID_ELEMENT_MENU=".$id_element_menu." AND E.ID_ELEMENT_MENU=A.ID_ELEMENT_MENU AND A.ID_PROFIL=P.ID_PROFIL AND P.LIB_PROFIL='".$_SESSION['profil']."' ORDER BY ORDRE_ELEMENT_MENU;";
		$resultsousmenu = mysql_query($querysousmenu);
		if ($resultsousmenu==false){
			echo "<table border=\"0\" align=\"center\" width=\"100%\">";
			echo "<tr>";
			echo "<td align=\"center\">";
			message_erreur("170",$_SESSION['emailadmin'],"menu");
			echo "</td>";
			echo "</tr>";
			echo "</table>";
		} else {
			$rowsousmenu = mysql_fetch_array($resultsousmenu);
			$i = 1;
			echo "<table border=\"0\" align=\"center\" width=\"100%\">";
			echo "<tr>";
			while ($rowsousmenu != false) {
				echo "<td align=\"center\">";
				if ((strtolower($_SESSION['identifiant']) != 'psu') || ((strtolower($_SESSION['identifiant']) == 'psu') && ($rowsousmenu['LIB_ELEMENT_MENU'] == 'Comptes'))) {//psu est le compte qui permet de suivre la création des comptes; il ne peut que voir les comptes et rien d'autre.
					echo "<a href=\"".$rowsousmenu['LIEN_ELEMENT_MENU']."&amp;ID_ELEMENT_MENU=".$id_element_menu."\"";
					if ($rowsousmenu['TARGET_ELEMENT_MENU'] != '') {
						echo " target=\"".$rowsousmenu['TARGET_ELEMENT_MENU']."\"";
					}
					echo ">".$rowsousmenu['LIB_ELEMENT_MENU']."</a>";
					echo "</td>";
					if ($i != mysql_num_rows($resultsousmenu)) {
						echo "<td align=\"center\"> | </td>";
					}
				}
				$rowsousmenu = mysql_fetch_array($resultsousmenu);
				$i += 1;
			}
			echo "</tr>";
			$longeur = 2*mysql_num_rows($resultsousmenu)-1;
			if ($i != 1) {
				echo "<tr><td colspan=\"".$longeur."\"><hr></td></tr>";
			}
			echo "</table>";
		}
	?>
Ce fichier menu.php est inclus dans le fichier header.php :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
...
	include "menu.php";
...
Enfin, le fichier header.php est inclus dans différents fichiers, par exemple accueil.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
<?php
	include "header.php";
...
?>
ou admin.php

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
<?php
	include "../../header.php";
	switch (@$_GET["mode"]) {
		case "gestion_menu":
			include "Script/Admin/admin_menu.php";
			break;
		case "profil":
			include "Script/Admin/admin_profil.php";
			break;
...

Pour admin_menu.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
...
	include "../../header.php";
...
L'arborescence des différents fichiers est :

header.php
menu.php
accueil.php
Script/Admin/admin.php
Script/Admin/admin_menu.php

Dans la base de données, les menus sont stockés selon :
accueil.php
Script/Admin/admin.php
admin.php?mode=gestion_menu
admin.php?mode=profil

Une fois connecté, l'utilisateur arrive sur la page d'accueil, qui affiche donc le menu sous cette forme :

Accueil ...... ...... ..... Administration .... .....

Le lien pour Accueil est : adresse_de_l_hote/accueil.php
Le lien pour Administration est : adresse_de_l_hote/Script/Admin/admin.php

Quand je clique sur Accueil, le menu s'affiche à nouveau () et les liens sont les mêmes.

Quand je clique sur Administration, le menu devient :

Accueil ...... ...... ..... Administration .... .....
Menu Profils ... ... ... ...

Mais les liens deviennent :
Pour Accueil : adresse_de_l_hote/Script/Admin/accueil.php <-- PAS BON !
Pour Administration : adresse_de_l_hote/Script/Admin/Script/Admin/admin.php <-- PAS BON
Pour Menu : adresse_de_l_hote/Script/Admin/admin.php?mode=gestion_menu <-- BON !
Pour Profils : adresse_de_l_hote/Script/Admin/admin.php?mode=profil <-- BON !

Dans la page Menu, j'ai d'autres liens :
adresse_de_l_hote/Script/Ajout_Modif/gestion_menu.php

Quand je clique dessus, les liens des menus deviennent :
adresse_de_l_hote/Script/Ajout_Modif/Script/Admin/admin.php?mode=gestion_menu
alors que ça devrait être :
adresse_de_l_hote/Script/Admin/admin.php?mode=gestion_menu


Bref, y a un problème dans les liens.

Comment faire ?