Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/07/2011, 04h39   #1
Invité de passage
 
Inscription : février 2011
Messages : 2
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 2
Points : 0
Points : 0
Par défaut Gestion d'ouverture sous menu

Bonjour,

Je suis en train de concevoir un menu (avec sous-menus) vertical déroulant, voici à quoi il ressemble :



A gauche, aucun élément du menu n'est sélectionné.
Au milieu et à droite, des sous-menus ouverts (et en bleu la page sélectionnée).
Un seul sous-menu peut être ouvert à la fois (un s'ouvre, l'autre se ferme).
Le contenu du menu ne changera pas (en tout cas il n'est pas créé depuis une base de données).

Le gros problème était qu'à chaque changement de page il fallait ouvrir le sous-menu de la page sélectionnée.

Alors j'ai décidé que toutes mes pages seraient sous la forme "index.php?p=ma_page", et dans un fichier menu.php j'ai construit ce tableau:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
$menu = array(
	'Présentation' => array(
		'accueil' => 'Accueil',
		'inscription' => 'Inscrivez-vous'
	),
	'Nos actions' => array(
		'mediation-familiale' => 'Médiation familiale',
		'droit-de-visite' => 'Droit de visite accompagnée',
		'accompagnement-familial' => 'Accompagnement familial'
	),
	[...]
);
Je récupère la page $_GET['p']. Je parcours le tableau $menu et écrit l'html correspondant.
Si $_GET['p'] est une des clés du sous-tableau, j'affiche le sous-menu avec une classe CSS afin que ce sous-menu soit ouvert.
(Et le lien est sélectionné par défaut).

Même si cette solution fonctionne, ce système ne me permet de stocker que des liens type "index.php?p=blabla".

Je voudrais pouvoir mettre d'autres liens, comme "forum.php" (et inclure "menu.php" dans "forum.php"), etc.

Si vous avez des idées pour que cela soit possible, je vous serais reconnaissant.
AsKaiser est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2011, 10h09   #2
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
tu peut t'affranchir de ca moyennant quelques modifs :
(démo par l'exemple)
Code :
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
<?php // structure simplifiée (décomposée pour plus de clarté)
$menu[0][0] = 'presentation.php';
	$menu[0][1] = 'accueil.php';
	$menu[0][2] = 'inscription.php';
$menu[1][0] = 'nos-actions.php';
	$menu[1][1] = 'mediation-familiale.php';
	$menu[1][2] = 'droit-de-visite.php';
	$menu[1][3] = 'accompagnement-familial.php';
	// [...]
// ----------------
// niveau 1 (menu principal) : $menu[$i][0]
// niveau 2 (sous-menus) :	$menu[$i][$j] // (avec $j!=0)
?>
<?php
// page en cours : on compare le nom de la page affiché dans l'URL avec celle du tableau array
// [...] (on parcourt l'array : for $i ... for $j ...)
	if (strpos($_SERVER["PHP_SELF"],$menu[$i][$j])) {
		$menu_encours_id 	= $i; // id du menu principal dont un sous-menu est la page en cours
	}
// [...]
// ----------------
// on peut alors afficher le menu ...
// [...] (on parcourt l'array : for $i ... for $j ...)
	if ($i == $menu_encours_id) {
		$menu_encours 	= 'encours'; // permet d'ajouter une class sur le menu en cours et signaler qu'il faut l'ouvrir
	} else {
		$menu_encours 	= '';
	}
// [...]
?>
Cela dit, perso j'utilise plutot un menu enregistré en base de données :
Code :
1
2
3
4
5
6
7
8
9
T_MON_MENU :
id_menu
niv_menu	(1=principal - 2=sous-menus)
id_sup	(0 si principal - id_menu du menu principal pour les sous-menus)
url_menu	(URL de la page à ouvrir)
(... on peut ensuite ajouter d'autres champs pour chaque menu/sous-menu ...)
nom_menu	
title_menu
...
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h10.


 
 
 
 
Partenaires

Hébergement Web