IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Lien absolu, relatif et menu dynamique [PHP 4]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2004
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : développeur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2004
    Messages : 481
    Par défaut Lien absolu, relatif et menu dynamique
    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 ?

  2. #2
    Membre confirmé Avatar de islyoung2
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42

    Informations forums :
    Inscription : Juin 2008
    Messages : 236
    Par défaut
    Salut;
    Si j'ai bien compris, je pense que le problème est dans ton fichier menu.php, car c'est dans ce fichier que tu crée les liens, alors je te conseil que la création des liens soit dynamique, c'est à dire que à chaque fois où t'a à créer un lien il faux vérifier dans quel niveau de l'arborescence tu est :
    1- si tu est dans le dossier principale alors le lien sera :adresse_de_l_hote/Script/Admin/admin.php.
    2- si tu est dans le dossier script/admin le lien sera que admin.php.
    et ainsi de suite.
    pour effectuer les vérification utilise la fonction is_dir('nom_dossier').
    voila j'espère que je t'ai répondu, bon courage.

  3. #3
    Membre éclairé
    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2004
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : développeur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2004
    Messages : 481
    Par défaut
    Tu as bien résumé le problème.
    Je vais voir ce que je peux faire.

  4. #4
    Membre éclairé
    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2004
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : développeur
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2004
    Messages : 481
    Par défaut
    Bon, comme je n'y arrivais pas, j'ai utilisé une autre méthode.

    J'ai divisé la page en deux :
    header qui contient le menu
    un div "page" qui contient les autres pages.

    A l'aide d'Ajax, lorsque je clique sur un lien du menu, le div est renseigné avec le contenu renvoyé par le lien.

  5. #5
    Membre confirmé Avatar de islyoung2
    Homme Profil pro
    Inscrit en
    Juin 2008
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42

    Informations forums :
    Inscription : Juin 2008
    Messages : 236
    Par défaut
    Envoie le code pour que tous le monde en bénéficie.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Liens menu dynamique vers une frame
    Par Snoopymaxx dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/04/2009, 19h09
  2. Survol des liens dans un menu dynamique
    Par leejunfan dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 27/04/2008, 17h28
  3. [XHTML] Pb avec lien relatif et lien absolu
    Par trotters213 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 13/09/2006, 13h38
  4. liens menu dynamique javascript
    Par gregius dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/06/2006, 14h15
  5. [PDE] Lien entre menu dynamique et plugin.xml
    Par simsky dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 21/06/2005, 11h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo