Aller au contenu

conception de site


harpo

Sujets conseillés

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 :lol:

Lien vers le commentaire
Partager sur d’autres sites

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...

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

:)

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...