[RESOLU] include dans include

Eléphanteau du PHP | 13 Messages

09 juin 2013, 10:24

Bonjour,

Nouveau sur ce forum, après quelques recherche set essais infructueux, je me voix contraint de demander de l'aide.

Pour infos, j'ai quelques notions en html, php et css.

Je me suis lancé dans la fabrication d'un petit site vitrine que je souhaite simple mais pas trop moche.

Pour de raison pratique et en vus de changement régulier, j'utilise le fameux include().

Mon soucis :
Pour la navigation, j'utilise donc un menu incluant plusieurs choix du genre "<a href="index.php?page=accueil">Accueil</a>".

avec les code suivant au début de mon fichier index.php :
//Tableau des pages autorisées à l'include pour le premier niveau d'include
$pagesOK['accueil'] = 'accueil.php';
$pagesOK['contenu1'] = 'contenu1.php';
$pagesOK['contenu2'] = 'contenu2.php';
…
//Tableau des pages autorisées à l'include pour le deuxième niveau d'include
$pagesOK['contenu11'] = 'contenu11.php';
$pagesOK['contenu12'] = 'contenu12.php';
…


//Page par defaut
$page = 'accueil';

if(!empty($_GET['page'])
&& array_key_exists($_GET['page'], $pagesOK))
{

$page = $_GET['page'];
}
Puis, le include correspondant à l'endroit désiré dans ma page index.php :
<?php include($pagesOK[$page]); ?>		
Ma page "contenu1.php" contient elle même un menu (un sous menu en quelque sorte) ayant pour but de rester sur la page "contenu1" mais en changeant une partie (contenu11 ou contenu12 ou …)

C'est cici que le bas blesse, j'avais pensé que le "<?php include($pagesOK[$page]); ?>" fonctionnerait encore ici…… mais non.

petite arborescence pour essayer d'être plus clair :

monMenu1
-accueil(ici construction avec <li><a href="index.php?page=accueil">Accueil</a></li>…)
-contenu1
--monMenu2
---contenu11(ici aussi, construction avec <li><a href="????????">contenu11</a></li>…)
---contenu12
---contenu13
---…
-contenu2
-contenu3
-…


Voilà, merci d'avoir lu jusqu'ici.

Je ne suis peut-être pas très clair, alors n'hésitez pas à poser des questions.

Merci d'avance.

A bientôt

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

09 juin 2013, 11:21

Hello !

Ton problème est du au fait que tu veux gérer deux informations (ton menu et ton sous menu éventuel) dans une seule variable. Le plus simple serait donc que tu passes deux données (le menu et l'éventuel sous menu). Ainsi dans ta page principale, tu aurais le contrôle et l'inclusion de tes contenus de niveau 1 et dans chacun de tes contenus de niveau 1 tu aurais le contrôle et l'inclusion des contenus de niveau 2 qui lui sont associés.

Il y a bien sur d'autres solutions, tu pourrais dans chaque page de contenu intégrer le menu qui va bien qui serait lui même dans un fichier inclus ou ajouter des tests pour que lorsque tu inclus un sous-contenu, ton script inclus automatiquement le contenu supérieur avec une nomenclature ou des tests ... mais à mon avis le plus simple reste de passer deux infos :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 13 Messages

09 juin 2013, 11:46

Merci pour cette première réponse (rapide !),

En vérité, je me doutais un peu de ça. Mais le problème est que j'ai déjà essayé sans succès…… ou avec erreur.

voici ce que j'ai fait :

dans ma page index, j'ai :
//Tableau des pages autorisées à l'include pour le premier niveau d'include
$pagesOK['accueil'] = 'accueil.php';
$pagesOK['contenu1'] = 'contenu1.php';
$pagesOK['contenu2'] = 'contenu2.php';
et
Code php
<?php include($pagesOK[$page]); ?>
dans ma page contenu1 j'ai :
$pagesBisOK['contenu11'] = 'contenu11.php';
$pagesBisOK['contenu12'] = 'contenu12.php';
et
<?php include($pagesBisOK[$pageBis]); ?>


Ce que je ne trouve pas, il me semble, c'est le "<a href="index.php?page=accueil">Accueil</a>", mais pour le sous-menu.

Parce que si je met "<a href="index.php?pageBis=contenu11">contenu11</a>". Ça ne fonctionne pas et c'est logique.
Et, si je met "<a href="contenu1.php?pageBis=contenu11">contenu11</a>". Ça ne fonctionne pas et c'est logique aussi.

En vrai, je ne connais pas la syntax pour que l'inculde 2 reste include dans l'include 1. Phrase étrange mais qui explique ce que je souhaite.

Merci encore

A bientôt

Eléphanteau du PHP | 13 Messages

09 juin 2013, 15:21

Bon,

j'ai relu et cherché encore un peu.

Il me semble que j'ai trouvé une solution. Je ne sais pas si c'est propre, mais ça fonctionne.

J'ai tout gardé pareil, sauf la construction du lien dans le sous menu. Je pense que c'est ce que Ryle avait voulu me dire.

Voilà ce que ça donne :
<a href="index.php?page=contenu1&pageBis=contenu11">contenu11</a>
Ça à l'aire de fonctionné.

Je veux bien 1 ou 2 commentaires.

Si c'est OK, je sujet sera résolu.

Merci encore

A beintôt

Mammouth du PHP | 1967 Messages

10 juin 2013, 09:00

Passer 2 (ou plus mais pas trop) de paramètres via l'url comme tu le fait est très courant. Si ton problème te semble résolu tu peux donc l'indiquer
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 13 Messages

10 juin 2013, 21:01

Passer 2 (ou plus mais pas trop) de paramètres via l'url comme tu le fait est très courant.
Merci pour cette précision.

Je clique donc sur résolu.

A bientôt