Menu externe avec fonction include et class:active - PHP - Programmation
Marsh Posté le 02-05-2015 à 01:05:01
Je pense qu'en PHP c'est pas possible. Vu que tu appelles le même code sur toutes tes pages.
Après peut être qu'avec des conditions ça peut se faire mais j'ai pas l'idée en tête.
Renseigne toi plutôt du côté du JavaScript, ça pourrait être possible.
Bon je ne t'ai pas forcément beaucoup aidé mais si j'ai pu te donner une piste...
Marsh Posté le 03-05-2015 à 02:20:18
Bien évidemment que c'est faisable en PHP
Dans ton header il suffit de detecter sur quelle page tu es. Soit tu regardes pour utiliser $_SERVER ( REQUEST_URI ou PHP_SELF par ex), soit tu mets une variable genre $page avant d'appeler ton menu
Marsh Posté le 03-05-2015 à 08:45:34
Et comment j'ajoute cette fonction dans mon menu?
Pour l'instant je n'ai le class:active que sur la class qui doit être active...
Voici mon menu:
Code :
|
Marsh Posté le 04-05-2015 à 17:46:44
Merci, j ai essayé mais pas tout réussi...
Voila c que j ai fait:
Code :
|
Le problème c'est que ca fonctionne dans la partie unser-team mais pas dans leistungen.
Et je ne sais pas comment faire pour que la class active aille sur unser-team quand on clique sur sebastien-fournereau et non sur sebastien-fournereau
Marsh Posté le 05-05-2015 à 10:59:59
Fait un echo $_SERVER['REQUEST_URI']; et tu comprendras tout de suite pourquoi ton pregmatch ne fonctionne pas...
Et utiliser des regex pour détecter un début d'url c'est overkill, tu peux faire :
if (substr($_SERVER['REQUEST_URI'],0,7) == 'kontakt') { ce sera nettement plus léger pour le serveur...
Marsh Posté le 05-05-2015 à 16:00:29
Je ne comprends pas...
Est ce que je dois ecrire ca?
Code :
|
Marsh Posté le 05-05-2015 à 17:08:30
index n'ayant que 5 lettres, ça ne vas pas le faire, quand a ce qu'il y'a entre les brackets, je ne veux même pas chercher à comprendre comment tu as pu penser que je voulais te faire écrire ça...
Le echo request_uri c'était pour que tu vois que ça ne commencera jamais par ./, par / à la rigueur (me souvient plus) et dans ce cas faudra modifier le substr($url, 1, $longueur_de_ma_chaine) pour ignorer le /.
Sur ce forum on veut bien donner des conseils, mais on ne donnes que rarement de solution toute faite et complète (le plus souvent par manque de temps), donc on attend au minimum que les gens cherchent par eux même ( http://php.net/manual/fr/function.substr.php ), c'est comme ça qu'on progresse !
Marsh Posté le 05-05-2015 à 21:44:14
Ok alors j'ai mis mon header.inc.php dans le dossier leistungen et du coup ca fonctionne pour leistungen mais je ne comprends donc pas pourquoi ca fonctionne pour unser-team alors que ce dernier est aussi dans un sous-dossier dans lequel je n'ai pas mis le header.inc.php.
Pour le reste j ai essayer ca:
<li <?php if (substr($_SERVER['REQUEST_URI'],0,-1) == 'index') { echo ("class=\"active\"" ); } ?> ><a href="./index">Startseite </a></li>
et ca:
<li <?php if (substr($_SERVER['REQUEST_URI'],0,5) == 'index') { echo ("class=\"active\"" ); } ?> ><a href="./index">Startseite </a></li>
ou encore ca:
<li <?php if (substr($_SERVER['REQUEST_URI'],0,-1) == '/index') { echo ("class=\"active\"" ); } ?> ><a href="./index">Startseite </a></li>
et ca:
<li <?php if (substr($_SERVER['REQUEST_URI'],0,6) == '/index') { echo ("class=\"active\"" ); } ?> ><a href="./index">Startseite </a></li>
Mais ca ne donne rien...
Marsh Posté le 06-05-2015 à 09:09:05
affiche quelque part dans ta page $_SERVER['REQUEST_URI'], ça t'aidera a comprendre ton erreur, si tu est dans un sous dossier, REQUEST_URI ne commence sans doute pas par index, dans ce cas la fonction http://php.net/manual/fr/function.pathinfo.php pourra sans doute t'aider...
Marsh Posté le 06-05-2015 à 18:11:41
ok j ai corrigé mon erreur mais je n'arrive pas a me debrouiller avec le request_uri ma class ne passe pas en active...
Marsh Posté le 06-05-2015 à 18:32:24
j ai une structure comme suit:
C:\xampp\htdocs\site2\index.php
et
C:\xampp\htdocs\site2\leistungen\index.php
Marsh Posté le 07-05-2015 à 09:23:42
Jamais 2 sans 3, si tu veux utiliser $_SERVER['REQUEST_URI'] pour identifier sur quel page tu te trouves et afficher une classe :
commence par afficher ce que contient $_SERVER['REQUEST_URI'] (en allant sur plusieurs pages différentes bien sur)
Une fois ceci fait tu comprendras ce que contient cette variable, et tu adapteras ton code en conséquence...
D'ailleurs pour mieux faire tu devrais utiliser une fonction :
Code :
|
Marsh Posté le 07-05-2015 à 21:21:25
Comment est ce que j affiche $_SERVER['REQUEST_URI'], je l avais reussi mais j'ai oublié
Marsh Posté le 29-05-2015 à 20:16:06
Code :
|
Voila ou j en suis mais ca ne fonctionne pas...
Marsh Posté le 01-05-2015 à 22:16:43
Bonjour,
mon titre n'étant pas très clair je vais l'expliquer:
J'ai un site dans lequel j'ai extériorisé mon header via php et une fonction include.
Le problème c'est que dans mon menu j'ai une class:active qui permet de colorer le point du menu de la page sur laquelle on est, comme sur startseite ici:
http://testwebsite.physio-in-esslingen.de/index
ET maintenant que j'ai extériorisé mon header celui-ci est le même pour chaque page et du coup le point de menu actif est toujours le même.
Est ce que je peux régler ca pour que la class active se change tout en gardant mon header externe?
Merci