Liens vers une page dans un autre répertoire [Résolu/Fermé]

Signaler
Messages postés
279
Date d'inscription
mercredi 25 août 2004
Statut
Membre
Dernière intervention
22 août 2020
-
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
-
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.


6 réponses

Messages postés
1007
Date d'inscription
lundi 28 février 2011
Statut
Membre
Dernière intervention
10 mars 2015
187
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é.
Messages postés
279
Date d'inscription
mercredi 25 août 2004
Statut
Membre
Dernière intervention
22 août 2020
2
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.
Messages postés
1007
Date d'inscription
lundi 28 février 2011
Statut
Membre
Dernière intervention
10 mars 2015
187
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 ;)
Messages postés
279
Date d'inscription
mercredi 25 août 2004
Statut
Membre
Dernière intervention
22 août 2020
2
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.
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 266
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+
Messages postés
279
Date d'inscription
mercredi 25 août 2004
Statut
Membre
Dernière intervention
22 août 2020
2
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
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 266
j'ai tapé trop vite:

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