harpo Posté 6 Avril 2005 Posté 6 Avril 2005 Bonjour, je suis débutant en PHP, aussi je colle sur le problème suivant : Le contexte : - ma page d'accueil est composée d'une <div> "menu" et d'une <div> "contenu" contenant une <include> - lorsque je clique sur un lien du menu, le contenu de la <div> contenu est modifié - pour faire ça, j'associe une variable aux liens (genre <a href="/index.php?page=accueil">Lien vers l'accueil</a> et je la récupère dans l'include avec un Switch. Jusque là, tout va bien... Là où ça se complique (pour moi, évidemment ) : La page appelée dans l'include contient, elle aussi, une <div> "contenu2" et une <div> "menu2". Les liens sont sensés appeler un nouveau contenu dans la <div> "contenu2". Ce que j'ai tenté : Associer aux liens de la <div> "menu2" deux variables, pour d'une part rappeler le bon document dans la <div> "contenu", et d'autre part le nouveau document dans la <div> "contenu2". Ce qui donne: <a href="/index.php?page=accueil&article=art001">Lien vers article 001</a> Ca ne marche pas : La <div> "contenu2" refuse d'afficher le document vers lequel pointe le lien. J'espère que mes explications ne sont pas trop tarabiscotées. Si quelqu'un peut me diriger vers la bonne porte, qu'il en soit remercié pour le restant de ses jours. Harpo
Kimberlyclarko Posté 6 Avril 2005 Posté 6 Avril 2005 Bonjour Harpo, le mieux est que tu mette ton code dans un message, ça sera plus facile de te dire ce qui ne va pas...
harpo Posté 6 Avril 2005 Auteur Posté 6 Avril 2005 Bonsoir Kimberlyclarko. En effet, ça sera plus simple à comprendre. ---------------------------------- Code de la page index : <div class="gauche"> <!-- c'est le menu général du site --> <a href="/index.php?page=accueil">Accueil</a><br> <a href="/index.php?page=concerts">Concerts</a><br> <a href="/index.php?page=films">Films</a> </div> <div class="frame"> <!-- dans cette div s'affichent les pages --> <?switch ($page){case 'accueil': include ('accueil.html'); break;case 'com_pr': include ('concerts.php'); break;case 'parcours': include ('films.html'); break;default: include ('accueil.html');}?> </div> Code de la page Concerts : <div class="article"> <!-- dans cette div s'affichent les articles sur les concerts --> <?switch ($article){case '001': include ('art001.html'); break;case '001': include ('art002.html'); break;case '001': include ('art003.html'); break;default: include ('jour.html');}?></div><div class="menuconc"> <!-- dans cette div s'affichent le menu des concerts --><? include ("menuconc.html"); ?> </div> Code de la page Menu des concerts (menuconc.html) : <a href="/index.php?page=concerts&article=001">Concert n°1</a><br><a href="/index.php?page=concerts&article=002">Concert n°2</a><br><a href="/index.php?page=concerts&article=002">Concert n°3</a> Le hic, c'est que lorsqu'on clique sur "Concert n°2", par exemple, la page art002.html ne s'affiche pas dans la div "article" (c'est toujours la page jour.html qui est affichée). Il s'agit donc d'un problème de chemin et de niveau...
Kimberlyclarko Posté 6 Avril 2005 Posté 6 Avril 2005 On dirait que tu as une coquille là : "case 'com_pr': " Ca devrait pas plutot être case 'concerts': ? Sinon, à mon avis tu va vite saturer si tu rajoutes des rubriques et des sous rubriques, car tu va multiplier le nombre de tes includes. Est-ce qu'il ne serait pas plus simple de mettre toute la navigation dans un seul include, plutot que d'avoir un include pour les rubriques principales, et un include pour chaque sous rubrique ? Au final, tu includes ton menu, tu recupère la variable page (qui devient du coup "rub" pour rubrique) et si la variable rub=concert, alors tu affiche ton sous menu avec les liens vers les articles. Cette solution te permettra par exemple de mettre le nom de la rubrique active en gras dans le menu, ce qui indiquera à l'internaute l'endroit où il se trouve.
Anonymus Posté 7 Avril 2005 Posté 7 Avril 2005 Bonjour, switch ($article){case '001': include ('art001.html'); break;case '001': include ('art002.html'); break;case '001': include ('art003.html'); break;default: include ('jour.html');} Là, tu as toujours le meme appel : 001, 001, 001... Ca ne peut pas marcher. La commande 'break' du premier cas renvoie en fin de switch, ce qui fait que les autres cas ne sont pas évalués. Anonymus.
Portekoi Posté 7 Avril 2005 Posté 7 Avril 2005 Pour compléter le post d'Anonymus : <?switch ($article){case '001': include ('art001.html'); break;case '002: include ('art002.html'); break;case '003': include ('art003.html'); break;default: include ('jour.html');}?> ou alors if (file_exists("art".$article.".html")){ include ("art".$article.".html");}else{ include ('jour.html');} A tester.
Anonymus Posté 7 Avril 2005 Posté 7 Avril 2005 Bon... if (! _AT_include ("art".$article.".html")) include ('jour.html');
Portekoi Posté 7 Avril 2005 Posté 7 Avril 2005 Mouai Bof... Mais au moins, le miens est plus clair pour une personne "débutante" Quoi je cherche des excuses ???
harpo Posté 8 Avril 2005 Auteur Posté 8 Avril 2005 Merci à tous. Effectivement, j'ai fait une grossière erreur (tous les cases étaient "001"). Sinon, cette structure faite d'includes intégrées dans d'autres includes a l'air de fonctionner. Je conserve toutes vos propositions et les testerai au fur et à mesure que j'avancerai en PHP. Bonne journée à tous! Harpo
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant