Encore un post à partir du tuto Créer un menu déroulant “accordéon” avec jQuery

Mon site pourrait être construit en html, mais pour faciliter la maintenance j'utilise des balises include() mes pages sont ainsi enregistrée .php
Pour cela j'ai suivi le tuto Inclure un fichier dans un autre grâce à PHP

Et c'est là que ça se complique :
-Je perds le open-at-load de mon menu (je sais que je ne suis pas le seul :Olivier C) il y a la réponse de HammHetFiel mais je ne comprends pas où il inscrit sont JavaScript et j'ai un message d'erreur quand je fais avec des if.

Je suis prêt à perdre le open at load pour un ligne qui indiquerai la localisation dans arborescence du site du style : "Menu 1 > SousMenu 1.2" ; mais je ne sais pas faire !

Cependant cette idée d'arborescence est importante : il me semble que pour que le serveur indique la position relative de la page, il faudrait non pas que la page soit appelée mais qu'elle soit "crée".
Autrement dit, plutôt que mettre le header, le menu, le footer dans des balises include() et ça sur chacune des pages de mon site, ne vaudrait-il pas mieux créer une page qui rassemble ces éléments constant, et selon l'onglet cliqué seul le contenu de la div centrale changerai.

Qu'en pensez vous ?
Bonjour, encore un soucis suite au merveilleux tuto sur les menu déroulants avec JQuery

Mon site est composés de pages .php pour profiter de include() et faciliter la maintenance mais dans les faits il est statique, puisque chaque onglet du menu charge une nouvelle page.

L'aide de Heyoan m'a été fort utile : le script qu'il donne à Flyman30 le 01 Mar 2010 - 14:03:30 fonctionne... ...presque parce que mes onglets sont tous ouverts !

Mon menu est dans une page appelée par un include.
Voici dans l'ordre, ce que contient cette page.php :


<script type="text/javascript">

<!--

$page_en_cours = basename($_SERVER['PHP_SELF']);



$menu = array(  



    'Illustrations'    =>    'Illus_animaux.php',   



    'Expositions'	=>	array(



		'Sommes-nous tous de la même famille ?'			=>	'Expo_Famille.php',



		'Montcuq au Moyen-Âge'	=>	'Expo_Montcuq.php',



		'Technique constructives, énergies et savoirs-faire'		=>	'Expo_TechniConstructives.php',



		'GéoLoT'		=>	'Expo_GeoLoT.php',





    'Outils éducatifs'    => array(



		'Tables de manipulation'    			=>	'Peda_TableManip.php',



		'Malle pédagogique'			=>	'Peda_MalleClassi.php',



		'Randonnée des temps'	=>	'Peda_RandoTmps.php',



		'Poster GéoLoT'	=>	'Peda_PosterGeol.php',







);  



// Génération du menu 



echo '<ul class="navigation">'."\n"; 



foreach($menu as $key => $value) { 

 

	if {    // sous-menu 



        $classe_en_cours = in_array ($page_en_cours, $value) ? ' open_at_load' : ''; 



        echo "\t".'<li class="toggleSubMenu"><span>'.$key.'</span>'."\n"; 



        echo "\t\t".'<ul class="subMenu'.$classe_en_cours.'">'."\n"; 



        foreach($value as $keySM => $valueSM) { 



			$page_active = ($page_en_cours == $valueSM) ? ' id="en_cours"' : '';



            echo "\t\t\t".'<li'.$page_active.'><a href="'.$valueSM.'">'.$keySM.'</a></li>'."\n"; 



        } 



        echo "\t\t</ul>\n\t</li>\n"; 



    } 

	else (!is_array($value)) {    // pas de sous-menu



		$page_active = ($page_en_cours == $value) ? ' id="en_cours"' : '';



        echo "\t".'<li'.$page_active.'><a href="'.$value.'">'.$key.'</a></li>'."\n"; 



		}



} 



echo "</ul>\n";



// -->



</script>






<div id="menu">

<ul class="navigation"> 



	<li ><a href="Illus_animaux.php" title="Aller à la page illustrations animaux">Illustrations</a></li>

	

	<li class="toggleSubMenu"><span>Expositions</span> 

        <ul class="subMenu"> 

            <li><a href="Expo_Famille.php" title="Aller à la page Sommes-nous tous de la meme famille">Sommes-nous tous de la même famille ?</a></li> 

 

            <li><a href="Expo_Montcuq.php" title="Aller à la page Montcuq au Moyen-Âge">Montcuq au Moyen-Âge</a></li> 

            <li><a href="Expo_TechniConstructives.php" title="Aller à la page Technique constructives, énergies et savoirs-faire">Technique constructives, énergies et savoirs-faire</a></li> 

            <li><a href="Expo_GeoLoT.php" title="Aller à la page Exposition GéoL'oT">GéoLoT</a></li> 

 

        </ul> 

   </li>

   

   <li class="toggleSubMenu"><span>Outils éducatifs</span> 

        <ul class="subMenu"> 

            <li><a href="Peda_TableManip.php" title="Aller à la page Tables de manipulations">Tables de manipulation</a></li>

            <li><a href="Peda_MalleClassi.php" title="Aller à la page Nouvelle classification des animaux">Malle pédagogique</a></li> 

            <li><a href="Peda_RandoTmps.php" title="Aller à la page Randonnée des temps géologiques">Randonnée des temps</a></li>  

			<li><a href="Peda_PosterGeol.php" title="Aller à la page Poster Géologique">Poster GéoL'oT</a></li>  

 

        </ul> 

   </li>

       

</ul>

</div>




Quelqu'un voit-il l'erreur ?

Merci
Voici la réponce de HammHetfield

Bonjour,

Tout d'abord, petit rappel au sujet de GET : c'est une super-variable qui récupère les paramètres passés à un script Php via son url.

www.exemple.com/script.php?var1=1&var2=9



Ici on aura donc $_GET['var1'] qui vaudra 1 et $_GET['var2'] qui vaudra 9


Ce qui est relativement pratique, c'est que ça fonctionne aussi bien avec les includes... Donc si tu fais :

<?php include('script.php?var1=1&var2=9); ?>


Le script.php pourra tout aussi bien récupérer ces deux variables...

Pour ton problème, tu vas donc devoir utiliser la variable 2 fois :

Dans ton script qui contient le corps de la page et les includes, et ensuite dans le script inclus lui même. Petit schéma :

Url -> Page -> Header

var1 est écrit dans l'url, comme par exemple

www.exemple.com/mapage.php?var1=bonjour



Le script mapage.php contiendra donc le texte de cette page, et les includes pour le header e le footer par exemple.
Réponse de HammHetfield :


Si tu as besoin de ce var1 dans header.php par exemple, il va donc falloir que tu fasses ensuite, dans le script mapage.php :

include('header.php?var1='.$_GET['var1'])


De cette façon tu aras passé la valeur de l'url, jusqu'à la page, jusqu'au header.

Ce qui revient à include header.php?var1=bonjour . Si la syntaxe te paraît étrange, une recherche dans google sur "php concaténation" devrait éclaircir tout ça.

J'espère que c'est clair, je n'ai pas trouvé ton topic si tu en as fait un à ce sujet. Si jamais c'est le cas, j'apprécierai que tu copies/colles ma réponse de façon à ce que tout le monde puisse en profiter Smiley smile

Bon week end