Probleme avec mon menu en PHP

Fermé
ghisloy Messages postés 89 Date d'inscription mercredi 12 novembre 2014 Statut Membre Dernière intervention 1 août 2016 - 17 nov. 2015 à 21:34
ghisloy Messages postés 89 Date d'inscription mercredi 12 novembre 2014 Statut Membre Dernière intervention 1 août 2016 - 19 nov. 2015 à 02:23
Bonjour,

Les ami(e)s
j'ai fais mon menu en PHP dont voici le code
 <div style="position:relative; height:40px;"><div id="menu" role="navigation">
	<ul id="menu_principal" style="border:1px solid #CCC;">
		<li><a class="primaire<?php echo $page=='home'?' change':''; ?>" href="<?php echo $UP; ?>../../index.php"><img style="margin-top:9px; margin-bottom:13px;" src="<?php echo $UP; ?>../../images/new/accueil.png" alt="accueil"></a></li>
		<li><a class="primaire<?php echo $page=='ecole'?' change':''; ?>" href="<?php echo $UP; ?>htdocs/Ecole">L'Ecole</a></li>
        <li><a class="primaire<?php echo $page=='direction'?' change':''; ?>" href="<?php echo $UP; ?>htdocs/Direction">La direction</a></li>
		<li><a class="primaire<?php echo $page=='Formations'?' change':''; ?>" href="<?php echo $UP; ?>htdocs/Formations">Formations</a></li>
		<li><a class="primaire<?php echo $page=='actualites'?' change':''; ?>" href="<?php echo $UP; ?>htdocs/Actualites">Actualités</a></li>
        <li><a class="primaire<?php echo $page=='gallerie'?' change':''; ?>" href="<?php echo $UP; ?>htdocs/Gallerie">Gallerie</a></li>
		<li><a class="primaire<?php echo $page=='Contacts'?' change':''; ?>" href="<?php echo $UP; ?>htdocs/Contacts">Contacts</a></li>
        <li><a class="primaire<?php echo $page=='partenaires'?' change':''; ?>" href="<?php echo $UP; ?>htdocs/Partenaires">partenaires</a></li>
		<li><a class="primaire<?php echo $page=='ecrire'?' change':''; ?>" href="<?php echo $UP; ?>htdocs/Ecrire">Nous ecrire</a></li>
	</ul>
</div></div>


cependant quand tu es dans l'onglet L'ecole et tu veux passer par exemple à Formation, au lieu d'aller chercher ça dans htdocs/Formation ça fait plutôt htdocs/Ecole/htdocs/Formation du coup ca ne retrouve plus l'onglet mais l'accueil marche peux importe où on est... comment faire?


A voir également:

1 réponse

Salut,

Il me semble que vous faites un amalgame:
Un menu n'est pas en php mais TOUJOURS en HTML et CSS.
Donc c'est de ce côté là qu'il faut chercher je pense.
  • Je ne vois d'ailleurs pas vraiment l('intérêt d'utiliser PHP(éventuellement si vous changez le chemin des dossiers, mais ce n'est pas une bonne pratique à part si votre Système d'informations le nécessite).

PHP comme son nom l'indique est un langage de programmation préprocesseur. Cela signifie qu'il va interprété son script avant le chargement de la page dans le navigateur(côté serveur, le côté client est l'ordinateur de l'internaute).
Pour en revenir à votre problème c'est un problème de lien.
Vérifiez ceux ci(en utilisant une version HTML uniquement par exemple) car dans votre menu la variable $UP sert de répertoire de départ auquel vous concaténer d'autres caractères(est ce par raison de sécurité, pour vous adapter à un outil comme un CMS? sinon je ne vois pas vraiment l'intérêt d'avoir cette variable).
Concernnant votre menu s'il affiche le même HTML sur toutes les pages vous aurez donc le même menu partout(qui ne tiendra pas compte de la page en cours de lecture et donc affichera le lien aussi).
Pour résoudre cela vous pouvez soit faire un menu différent par page ou puisque vous utilisez des fonctions conditionnelles en notation ternaire je suppose que vous n'avez pas de problème de ce côté là en vérifiant la page qui est affiché(en PHP $_SERVER['PHP_SELF'] donnera la page en cours) et si elle est identique ne pas afficher le bouton du menu associé.
_:"mais l'accueil marche peux importe où on est... comment faire?"
Cela veut dire que le lien est correctement écrit pour l'accueil mais pas pour les autres liens. Dans votre texte du lien vous pouvez faire un echo du chemin complet pour voir vos erreurs.
Comme ceci:
<li>
<a class="primaire<?php echo $page=='actualites'?' change':''; ?>"
 href="<?php echo $UP; ?>htdocs/Actualites">
Actualités <?php echo ('mon lien:'.$UP.'htdocs/Actualites'); ?>
</a>
</li>
  • autre remarque votre HTML n'est pas formé à la dernière norme(sans parler du CSS 'à la volée' qui compliquera votre développement inutilement et empêche de le modifier facilement ou de réutiliser par le biais d'une classe): html5. En effet il existe une balise spécifique(nav) pour indiquer au navigateurs(et moteurs de recherches) qu'il s'agit d'un élément de navigation dans la page. Dans le même ordre d'idée les balises "main", "header", "footer" et surtout "article" et "section" remplacent avantageusement "div" qui n'a aucune sémantique particulière.

L'utilisation de la bonne sémantique permet de donner le sens de la page et la rendre plus facile à lire. Le respect des normes garantit le bon fonctionnement du site.

Outre de rendre votre site plus correct et mieux référencé vous permettrez ainsi l'accessibilité (sous entendue accrue, les personnes ayant des déficiences utiliseront un navigateur qui leur indiquera chaque élément de navigation de façon adaptée) et l'internationalisation(permettant à tous quelque que soit son langage et sa situation géographique d'accéder au même site). Pensez aussi au web responsive(critère important) c.à.d. la compatibilité avec les appareils mobiles(qui représentent 50% des utilisateurs).

Pour finir petit conseil pratique:
évitez les noms de dossiers avec majuscules. C'est une source d'erreur(qui n'a jamais chercher un bon moment d'où vient une erreur avant de constater qu'il y a une minuscule ou une majuscule à la place l'une de l'autre et que ça plante tout le programme ne peut pas savoir) et certains serveurs ou navigateurs le prendront en compte ou pas, ce qui peut aussi générer des erreurs.
Je veut dire : si vous écrivez: Dossier et dossier le résultat sera différent et l'interprétation aussi(parfois ça marche car http est censé être insensible à la casse, mais parfois non. Cela dépendra des serveurs web, du navigateur utilisé...). Donc à proscrire pour éviter les confusions et rendre l'écriture plus simple.
0
ghisloy Messages postés 89 Date d'inscription mercredi 12 novembre 2014 Statut Membre Dernière intervention 1 août 2016
19 nov. 2015 à 02:23
merci
0