affichage d'un menu - PHP - Programmation
Marsh Posté le 20-04-2010 à 16:35:15
Une fonction doit retourner quelquechose.
Essaye de rajouter dans tes fonctions return $variable
J'ai l'impression que tu confond fonction et include non ?
Marsh Posté le 20-04-2010 à 17:46:18
Tout d'abord, merci de la réponse, ça fait plaisir de ne pas se sentir seule face à son problème.
En effet, ce n'est pas très clair.
Une fonction permet de mener des actions pour afficher quelque chose (une sorte de raccourci pour éviter de refaire les mêmes manipulations)
Pour moi, Include est une fonction qui permet d'insérer un certain code dans ma page.
Est-ce exact ?
Mon objectif est que : lorsque j'active un lien hors menu, celui-ci s'affiche avec ses 2 niveaux comme sur la page d'accueil (index.php).
Donc, selon "cette" logique, pour que mon menu (top.php) apparaisse comme sur l'état d'index je dois intégrer l'instruction d'activer le menu par défaut. Mais où et comment ?
Tu me dis d'ajouter return $variable.
Est-ce que je peux, par ce biais, lui donner une instruction du genre :
Quand la page a afficher n'est pas incluse dans le menu, alors, active par défaut le menu tel qu'il apparaît dans la page d'accueil ?
Comme tu vois, ce n'est pas si clair...
Marsh Posté le 21-04-2010 à 09:40:48
Essaye de remplacer les
echo('class="active"');
de tes fonctions par un $retour="active";
Et ensuite avant le } qui ferme ta fonction insère un return $retour;
et refait le test, dis moi si ca marche
EDIT: je viens de relire ton code, je sais pas si tu peux utiliser des $_GET dans les fonctions, je t'avoue que j'ai jamais essayé. Si jamais ca ne fonctionne pas, regarde de ce coté.
Marsh Posté le 21-04-2010 à 10:25:40
Salut,
Tu as un "</a>" qui traine dans ton fichier contact.
Changes tes dl,dd,dt par des ul et li.
Tu as du css?
Est possible de voir la page ?
Marsh Posté le 21-04-2010 à 12:48:03
En faisant ce remplacement, je perds totalement mon niveau 2.
Par ailleurs, mon menu fonctionne très bien avec les 2 niveaux à partir du moment où j'active des liens du menu.
Comment donner une instruction par défaut si c'est une page hors menu comme l'index, à savoir page [1] rubrique [0] ?
Quand je regarde mon fichier top.php et que je compare le lien vers "contact" et celui de l'index, il manque l'instruction d'afficher le menu
# <a href="index.php?page=contact" id="contact"><img src="img/contact.gif" alt="contact" /></a>
#
# <dl id="menu">
# <dt><a href="index.php?page=1" title="p1" <?php stylen1(1); ?>>menu1</a></dt>
Je ne sais pas si je dois intervenir sur le fichier "top.php" ; "functions.php" et ou "contact.php"
En tout cas, merci de tes idées, au moins, j'avance en procédant par élimination.
Marsh Posté le 21-04-2010 à 14:31:18
Par défaut, quand tu es sur ton index, $_GET['page'] n'est pas défini.
Citation : function stylen1($a) |
Ce qui fait que : stylen1(1) affiche "classe="active" sur l'index.
Ce n'est plus le cas sur la page contact.
Citation : <body> |
Généralement, les inclusions des fichiers de configuration, fonction, classes... se font au début du fichier.
Marsh Posté le 21-04-2010 à 19:16:09
Merci Arcan_- de ta réponse,
Pour répondre au 1er message
Le "</a>" qui traine dans mon fichier contact est une erreur de copier/coller (en fait j'ai un lien)
J'ai bien un css
Code :
|
Pour le second message...
Citation : Par défaut, quand tu es sur ton index, $_GET['page'] n'est pas défini. |
Je pensais qu'il l'était du fait que dans le fichier top.php soit notifié
Code :
|
ce qui renvoie au fichier "functions.php"
Code :
|
En lien avec le fichier "index.php"
Code :
|
C'est un peu compliqué.
Je donnerai bien le lien vers le site mais le problème est que le php ne s'affiche pas difficile d'analyser le code.
Que puis-je faire pour faciliter la compréhension du problème : envoyer par mail les fichiers sources ?
Encore merci Arcan_- et Aspirateur de votre suivi.
Marsh Posté le 21-04-2010 à 23:04:31
aspirateur a écrit : Essaye de remplacer les |
$_GET, $_POST, $_SERVER, $_SESSION etc sont des superglobales, les superglobales sotn accessibles n'importe ou dans ton application, que ce soit une fonction, une classe ...
Marsh Posté le 22-04-2010 à 08:14:42
Oranjade a écrit :
|
tu as bien à la fin de ton adresse "?page=blabla" ?
Alisteroid a écrit : |
Merci, je ne savais pas (ou plutot je me suis jamais posé la question )
Marsh Posté le 22-04-2010 à 09:44:38
Tant que tu n'as pas "?page=xxxx" dans ton url, $_GET['page'] ne sera pas défini.
S'il n'est pas défini, $page dans ta fonction stylen1 aura "1" comme valeur.
Donc stylen1(1) affichera toujours "classe="active"".
Quand tu es sur ta page contact, $_GET['page'] (et donc $page dans ta fonction) est défini (il a "contact" pour valeur) => stylen(1) n'affiche rien.
Ton menu ne s'affiche que si $a == $page.
Il faudrait que tu aies stylen1('contact') pour que le menu s'affiche quelque part, ou que tu modifie la condition de ta fonction stylen(1).
Marsh Posté le 22-04-2010 à 13:50:00
Citation : Tant que tu n'as pas "?page=xxxx" dans ton url, $_GET['page'] ne sera pas défini. |
Mon url a la forme suivante
http://www..................../index.php?page=contact
Les conditions sont donc bien réunies ?
Comme plusieurs pages sont concernées (lien hors menu), je cherche l'instruction qui dise :
Si lien hors menu alors afficher par défaut la position (et non le contenu) du menu {$page = 1;} {$rubrique = 0;}
Ce n'est en effet pas le contenu de la page 1 rubrique 0 (correspondant au menu à double niveau) que je cherche mais son affichage
Une telle instruction devrait se trouver dans ce fichier "functions.php" ?
Code :
|
Si oui, est-ce que ça pourrait être quelque chose du style
Code :
|
Ensuite, dans mon fichier "top.php" qui réunit l'ensemble des liens du site (menu et hors menu) dont voici quelques lignes
Code :
|
il faudrait que la ligne du contact intègre l'appel de l'instruction
Code :
|
J'ai testé et en l'état ça ne fonctionne pas. Il me signale une erreur sur le fichier "functions.php" qui correspond à "include($file);" de la function insertion()
Toutefois, avant de vérifier chaque ligne, virgule, position, symbole... pourriez-vous me dire si la logique est bonne ?
Marsh Posté le 23-04-2010 à 09:16:16
Ta fonction stylen0() telle qu'elle est là ne sert à rien :
Tu pourrais tout aussi bien faire :
Code :
|
Marsh Posté le 23-04-2010 à 11:14:49
ok, je crois qu'il faut que je reprenne tout depuis le début. Je vais essayer de bien comprendre chaque élément du code en espérant parvenir à débloquer mon problème.
En tout cas, merci à tous de votre aide
Marsh Posté le 20-04-2010 à 14:39:03
Bonjour à tous,
Dans mon site en php, j'ai un menu horizontal à double niveau. Tout s'affiche correctement lorsque j'active les liens du menu. En revanche, dès que j'active un lien externe au menu du type "contact", la ligne du sous-menu est invisible. Le site est construit de la manière suivante :
index.php (je passe les meta et head)
top.php : dans lequel figure tous les liens internes et externes au menu
fonction.php
Prenons l'exemple du fichier contact
J'ignore d'où vient le problème.
En analysant le code, je pense qu'il vient du fichier "top.php" qui ne donne pas l'instruction d'activer le menu. J'ai donc essayé d'intégrer "<?php stylen2(1,1); ?>" dans la ligne ci-dessous, sans résultat.
<a href="index.php?page=contact" id="contact"><img src="img/contact.gif" alt="contact" /></a>
Manquerait-il l'instruction <?php insertion(); ?> dans mon fichier "contact.php"
Dois-je intervenir sur le fichier "functions.php" ou "top.php" ?
Je tourne un peu en rond, auriez-vous une piste ?
Merci d'avance pour votre aide.