Liens vers une page dans un autre répertoire

Résolu/Fermé
jlb59 Messages postés 343 Date d'inscription mercredi 25 août 2004 Statut Membre Dernière intervention 8 mars 2024 - 1 sept. 2011 à 09:41
mpmp93 Messages postés 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 - 1 sept. 2011 à 13:10
Bonjour à tous,

Dans un site d'essai, j'ai, à la racine, l'index.php.
Ce site contient différents répertoires - /00, /01,/02, /menu
Chaque répertoire contient une page (00.php, 01.php, etc.).

Lorsque je lance en local, tout va bien parce que les chemins spécifiés dans le menu sont exacts.

Toutes les pages sont en .php pour que l'include du menu se fasse bien.
Lorsque je suis à la page d'accueil et que je clique par exemple sur 00 pour appeler la page 00.php, ça se passe bien, mais où il y a un hic, c'est que quand je suis sur cette page, donc, le menu est bien inclus et que je clique pour appeler par exemple le fichier 01.php qui est dans un autre répertoire, le fichier est introuvable parce que le chemin n'est pas correct.

Si je le change dans le menu, c'est au lancement qu'il y a des problèmes de chemin.

J'ai essayé plusieurs façons avec différentes variables d'environnement, mais rien ne va.

Est-ce vous pourriez me dirte comment faire pour palier à ça ?

Merci d'avance de votre aide.


A voir également:

6 réponses

thevinou Messages postés 1007 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 10 mars 2015 190
1 sept. 2011 à 09:46
Si 01.php est dans le dossier 01, pourquoi ne pas faire le lien directement dans le dossier concerné ?

href="/01/01.php"

Après, tu utilises une variable que tu incrémentes dans une boucle pour générer tes liens, et c'est réglé.
0
jlb59 Messages postés 343 Date d'inscription mercredi 25 août 2004 Statut Membre Dernière intervention 8 mars 2024 4
1 sept. 2011 à 10:13
Oui thevinou, je comprends ça, et quand je suis sur la page d'accueil, avec ce chemin, ça va.

Tu me parles d'incrémentation d'une variable, là, j'ai peur de ne pas bien comprendre !
Comme je l'ai dit, j'ai essayé avec plusieurs sortes de variables pour le chemin, mais ça va pas.

Peut-être que tu fais allusion à d'autres variables, mais les connaissances que j'aie en PHP ne sont pas assez poussées.

Détailles-moi STP pour que je saisisse bien ?

Merci d'avance.
0
thevinou Messages postés 1007 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 10 mars 2015 190
1 sept. 2011 à 10:30
Avant tout, si tu est sur la page 01.php et que tu fais un href="/02/02.php" , fonctionne t'il ? normalement, le / avant permet de repartir de la racine. Si celui ci ne marche pas, tu fais ./02/02.php pour partir du répertoire avant.

Et pour tes liens, tu fais

$d = 0; // on met les dizaines à 0
$u = 0; // on met les unité à 0

for($d=0; $d<10; $d++)
{
for($u=0; $u<10; $u++)
{
$nombre = $d.$u
}
}

Je pense que ça devrait le faire avec ça. Sinon, tu peux eviter de te compliquer la vie avec ça, en ayant des répertoires nommé 1 et non pas 01 ;)
0
jlb59 Messages postés 343 Date d'inscription mercredi 25 août 2004 Statut Membre Dernière intervention 8 mars 2024 4
1 sept. 2011 à 11:06
J'ai essayé la méthode que tu as citée en 1er, mais ça va pas.
C'est Ok au lancement, mais comme je n'ai qu'un seul menu inclus pour tous les fichiers, si je suis ailleurs, c'est pas bon !

Pour infos, les répertoires commençant par "0", ne sont que provisoire.

Si l'appel des liens vaont bien partout, les noms de répertoires et fichiers seront totalement différents.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mpmp93 Messages postés 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
1 sept. 2011 à 11:18
Bonjour,

La meilleure solution, avoir un seul script index.php à la racine.

Ce script charge via include le contenu de vos autres pages. Code en début de fichier index.php:

<?php
$listePages = array(
'01' => '/01/01.php',
'02' => '/02/02.php',
// ...etc... liste de toutes vos pages
);

vos liens deviennent de cette forme:

index.php?p=01 ou index.php?p=02

et dans le corps de index.php, on retrouve ceci:


$page = '01'; // page par défaut
if (!empy($_GET['p'])) {
$page = $_GET['p'];
}

include $listePages[$page];

Avantage:
- vous mutualisez toute la partie avant <body> dans index.php et vous n'includez plus que des pages 01.php sans la quicaillerie placée avant <body>

Ce modèle est une approche MVC simplifiée, où index.php fera office de contrôleur frontal.

La solution proposée ici offre l'avantage que vous pourrez déplacer et renommer vos fichiers sans avoir à changer le numéro de page attendu. Exemple:

'02' => '/02/02.php',

peut devenir:

'02' => '/adherents/isncriptionAdherent.php',

un "hacker" aura beaucoup de mal à trouver l'arborescence de vos templates. Et de votre coté, comme chaque lien est traité à partir de la racine du site, même si vous écrivez ceci dans un des fichiers en sous-répertoire:

<a href='index.php?p=45'>vérifier votre abonnement</a>

C'est index.php qui va se charger de traduite 45 en lien physique en includant le contenu de la page qui va bien.

La solution de passer par un tableau associatif peut être facilement remplacée par une base de données ou un fichier xml ou un fichier ini de paramétrage... On le voit, les solutions sont donc multiples pour gérer facilement les pages avec ce modèle MVC simplifié

A+
0
jlb59 Messages postés 343 Date d'inscription mercredi 25 août 2004 Statut Membre Dernière intervention 8 mars 2024 4
Modifié par jlb59 le 1/09/2011 à 12:13
Effectivement, c'est une très bonne solution. J'utilise ce genre d'appel dans mon site en ligne.
Seulement, il y a autre fichier pour justement l('appel des pages.
De plus au début et à la fin de l'index.php il y a :
<?php ob_start(); ?> 

...
<?php ob_end_flush();?>

Sans ça, c'est plein d'erreurs.
Mais je vais essayer comme vous m'avez dit, on verra bien.

Merci pour ce complément d'informations.

----------------------------------------------------

Après essais, voilà ce que j'aie !
Fatal error: Call to undefined function empy() in C:\Program Files\EasyPHP-5.3.8.0\www\ZiteCMS\index.php on line 30
Et voilà la ligne d'erreur
if (!empy($_GET['p'])) {
Je suppose que c'est la variable "p" qui pose problème.


Cordialement, JLB59
0
mpmp93 Messages postés 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
1 sept. 2011 à 13:10
j'ai tapé trop vite:

if (!empty($_GET['p'])) {
0