Se connecter / S'enregistrer
Votre question

Page "Universelle" HTML/PHP ?

Tags :
  • Php
  • Index
  • Ftp
  • Programmation
Dernière réponse : dans Programmation
24 Juillet 2012 11:08:45

Bonjour à tous,
Je fais une nouvelle fois appel à vous pour une question que je me pose et à laquelle je n'ai pas de réponse.
Alors voilà, mon titre n'est peut être pas très explicite, alors je vous explique.
J'ai un site web que l'on accède à l'adresse "http://www.monsite.fr/dossier/sousdossier
Dans mon FTP, j'ai dans "sousdossier" un "index.php". Jusqu'ici rien de choquant.
De plus, j'ai non pas un seul sous dossier mais 30 différents qui contiennent chacun un "index.php"... ça commence à faire beaucoup.
Etant donné que dans les 30 sous dossiers mon thème est le même, je souhaiterai n'avoir qu'un seul "index.php" que je pourrais modifier à tout moment.
Sachant que chaque page correspond à une catégorie, et que dans une catégorie on peut accéder à toutes les autres, lorsque je dois en rajouter une, je dois ajouter dans les 30 PAGES un petit bout de code pour rajouter une catégorie
(
  1. <li><a href="../categori02">Catégorie 2</a></li>
)
Ceci marche évidemment, mais est très long et très fastidieux...
Je cherche donc un moyen de regrouper toutes mes pages en une seule, afin que je n'ai qu'à ajouter cette ligne dans mon SEUL "index.php" pour un gain de temps assez important...

Je vous remercie par avance!

Autres pages sur : page universelle html php

24 Juillet 2012 21:32:22

C'est un problème de structure que tu as, on sent que tu débutes en php ;) 

Dans l'immédiat, tu peux faire une seule page php et prévoir une inclusion de la page à partir d'une URL dynamique. Exemple :

tonsite.fr?page=15

dans ton index tu fais

$page = (int) !empty($_GET['page']) ? $_GET['page'] : 0;
if (!!$page){
require_once 'dossier_'.$page . '/index.php';
}else{
echo "error 404"; // par exemple
}

Et chaque index.php contient le template qui s'inclut dans le body

Ainsi ça donne un truc comme ça :

HEADER
BODY
<?template?>
FOOTER

et le template contient l'extrait d'HTML à inclure en fonction de la page.

Maintenant ça c'est la solution rapide pour pas que tu refasses tout le boulot.

Mais il faut que tu apprennes à faire du BON PHP, c'est-à-dire structuré, avec un modèle MVC. La seule chose que je puisse te conseiller pour pas galérer à l'avenir, c'est de te former à un framework. Un que j'aime beaucoup, c'est CodeIgniter. Tu verras il est très très simple. Sinon YII est sympa aussi. Cake est comme CodeIgniter aussi, même usabilité. Bref, faut se mettre aux frameworks maintenant y a que ça de vrai en PHP, ou alors tu crées une structure complète et cohérente, avec tes propres modèles de réécriture d'uRL (car vaut mieux avoir site.com/page1 que site.com?page=1 car c'est plus sécurisé, plus propre et plus réutilisable pr un utilisateur lambda ! ;) 
25 Juillet 2012 11:38:54

Je te remercie tout d'abord pour ta réponse.
J'ai quelques petites questions cependant^^
Lorsque je suis dans une catégorie de mon site, j'ai sur la gauche la liste de toutes les autres en noir et celle dans laquelle je me trouve avec un fond rose.
Exemple : Je suis dans la catégorie 3 , elle est donc surligné en rose à gauche dans la liste, alors que les autres sont surlignées en noir.
dans mon code :
<li><a href="../categorie02">Catégorie 2</a></li>
<li current_class_item><a href="../categorie03">Catégorie 3</a></li>
<li><a href="../categorie04">Catégorie 4</a></li>

Puis-je faire ceci avec la solution que tu me proposes?
Contenus similaires
Pas de réponse à votre question ? Demandez !
25 Juillet 2012 13:22:10

Oui, d'ailleurs tu peux faire un truc pas mal, c'est mettre ta liste dans un tableau et générer l'HTML.

Dans ton controller tu aurais ce bout de code là (dans la fonction Index() par exemple ou autre selon ce que tu fais...)

<?php
$menu = array(
"categorie1"=>array('name'=>'catégorie 1', 'link'=>'http://lien1', 'active'=>true),
"categorie2"=>array('name'=>'catégorie 2', 'link'=>'http://lien2', 'active'=>false),
"categorie3"=>array('name'=>'catégorie 3', 'link'=>'http://lien3', 'active'=>false),
);

Et dans ta view :
<ul>
<?php foreach ($menu as $key => $element):?>
<li <?php echo ($element['active'] ? "class='current'" : ""><a href="<?= $element['link'] ?>"><?= $element['name']?></a></li>
<?php endforeach;?>
</ul>

Après dans l'absolu ton menu est géré dans un yaml et l'HTML dans un template (enfin, sur les gros sites où il vaut mieux mettre tes pages en cache, avec les tempons ob_start ob_end_clean etc. ou en utilisant un système tout prêt, style VENDOR) ;) 
25 Juillet 2012 15:02:00

Euh. Je suis perdu là xD
Je ne pourrais je pense plus répondre avant un bout de temps, j'essayerai de remonter le post début août pour avoir plus d'infos!
Je te remercie pour ton aide :) 
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS