Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/01/2012, 17h24   #1
Invité de passage
 
Homme
Inscription : décembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 6
Points : 1
Points : 1
Par défaut Fonction Include page et sous page

Bonjour,

J'ai actuellement un site, qui contient des pages principales, et des pages secondaires.
Afin de pouvoir modifier le contenu de mes 7 différentes pages principales, j'ai utilisé la fonction switch de cette facon:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
 
<body>
 
<div id="container">
 
<?php include("header.php"); ?>
 
<?php 
 
switch ($_GET['page']) {
 
 
		default:
        include ("content1.php");
		break;
 
    case "nowplaying":
        include ("content1.php");
        break;
			case "current-production":
        		include ("current-production.php");
        		break;
			case "last-current-audition":
       		 include ("last-current-audition.php");
     		   break;
			case "tickets-reservation":
     		   include ("tickets-reservation.php");
     		   break;		
 
 
    case "shows":
        include ("shows.php");
        break;
			case "previous-shows":
        		include ("previous-shows.php");
        		break;
			case "last-shows":
       		 include ("last-shows.php");
     		   break;
			case "archive":
     		   include ("archive.php");
     		   break;		
			case "previous-auditions":
     		   include ("previous-auditions.php");
     		   break;		
 
 
 
    case "school-tours":
        include ("school-tours.php");
        break;
 
 
 
 
	case "theatre-events":
        include ("theatre-events.php");
        break;
			case "about":
        		include ("about.php");
        		break;
			case "seasons-prices":
       		 include ("seasons-prices.php");
     		   break;
			 		case "pricing-of-show":
       				 include ("pricing-of-show.php");
     		  		 break;
			 		case "pricing-policy":
       				 include ("pricing-policy.php");
     		  		 break;
 
			case "restaurant":
     		   include ("restaurant.php");
     		   break;		
			 		case "current-restaurant":
       				 include ("current-restaurant.php");
     		  		 break;
			 		case "previous-restaurant":
       				 include ("previous-restaurant.php");
     		  		 break;
 
 
 
	case "media":
        include ("media.php");
        break;
			case "press-room":
        		include ("press-room.php");
        		break;
			case "pictures":
       		 include ("pictures.php");
     		   break;
			case "newsletter":
     		   include ("newsletter.php");
     		   break;		
 
 
 
 
	case "news":
        include ("news.php");
        break;
 
 
 
 
	case "contact":
        include ("page.php");
        break;
 
 
 
}
 
 
 ?>
 
<?php include("content2.php"); ?>
 
<?php include("footer.php"); ?>
 
 
 
  <!-- end .container --></div>
 
</body>
J'obtiens donc du contenu different en fonction de la page cliquée dans le menu.
Seulement voila.

J'ai également des sous pages.

Ces sous pages posséderont elles aussi le meme header, le meme footer, et le contenu se différenciera a chacune des différentes sous pages, mais toutes, auront le même fond.

J'ai donc créé une balise div, qui a le meme fond chaque fond, et qui contiendra chacune de mes différentes pages.

J'ai donc pensé faire un modèle, page.php, avec le code suivant:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
<div id="container">
 
<?php include("header.php"); ?>
 
<?php 
 
switch ($_GET['page']) {
 
 
		default:
        include ("content1.php");
		break;
 
	case "contact":
        include ("contact.php");
        break;
 
 
 
}
 
 
 ?>
 
<?php include("footer.php"); ?>
 
  <!-- end .container --></div>
 
</body>
LA page contact dans cette exemple a été précédemment développé , en fonction des éléments que je souhaiterai afficher, et je souhaiterai donc insérer cette page contact.php, a ma balise div qui correspond a la zone avec meme fond.

Je me rend compte qu'il y a un problème de niveau, et de parametrage, mais j'essaie d'expliquer comment j'ai pensé la construction de mon site, pour m'aider a m'eguiller sur la bonne voie.

Merci.
sanfenice est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 18h53   #2
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Citation:
Je me rend compte qu'il y a un problème de niveau, et de parametrage
Il y a aussi un problème de clarté car je ne comprends rien à ce que tu veux faire.
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 16h16   #3
Invité de passage
 
Homme
Inscription : décembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 6
Points : 1
Points : 1
Je m'en doutai un peu.

pour faire un peu plus simple, si j'y arrive:

d'abord voici la construction de mon site

http://www.senzeo.net/WEBSITE2/index.php


j'ai donc ma page index.php.
dans celle ci j'y inclue:

header.php
content1.php
content2.php
footer.php

j'ai utilisé la fonction switch pour modifier le contenu de content1, qui sera different en fonction de la page appelé.

jusque la tout va bien.

la ou cela se complique c'est concernant mes sous pages.

toutes sont construites sur une meme base, tout du moins concernant header.php et footer.php.

j'ai donc les pages content1.php et content2.php qui s'enlèvent, pour laisser place a ma page.php.

c'est donc dans page.php, que j'ai inséré à nouveau une balise switch, qui appellera la page souhaité, par exemple, la page news.php, ou encore contact.php.

J'espère que j'ai pu expliquer un peu plus concrètement ce que je souhaiterai faire.

Merci.

C'est en me relisant que je m'aperçois qu'il y a un truc qui cloche dans la construction de mon site lol.
sanfenice est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2012, 22h43   #4
Invité régulier
 
Inscription : janvier 2012
Messages : 13
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 13
Points : 6
Points : 6
Bonjour,
Si je comprends bien, votre site adoptera une structure arborescente du style :
  • nowplaying
    • current-production
    • last-current-audition
    • tickets-reservation
  • shows
    • previous-shows
    • archive
    • previous-auditions
  • school-tours
  • theatre-events
    • about
    • seasons-prices
  • medias
  • news
  • contact
Dans ce cas, pourquoi vouloir à tout prix gérer l'ensemble dans le seul fichier index.php.

Vous gagneriez sans doute en clarté à créer fichier cadre pour chaque espace du site (nowplaying, shows...), vous vous affranchirez du même coup de votre premier niveau de switch.
La solution la plus commode, à mon avis (qui n'est sans doute pas le meilleur au monde, croyez-moi) est de fragmenter davantage votre structure de fichiers : vous dites que le site possédera 7 espaces, je ferais donc 7 fichiers différents, le seul include conditionnel qui vous reste à ce niveau, c'est le contenu informatif de la page.

Vous pouvez même pousser le raisonnement à son extrémité et prévoir un fichier par page à afficher.

Qu'en pensez-vous ?
yonn_b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 22h32   #5
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Quand tu dis "fichier cadre", ça veut dire "frame" ? (En général, cadre=frame). Or les frames, c'est néfaste au référencement et de plus, si on veut faire un lien sur une page, l'URL récupérée ne correspond qu'au contenu de la frame et ignore le "container", donc l'idée du switch n'est peut-etre pas si mauvaise...
Par contre, je n'ai pas encore tout compris : c'est quoi les pages et les sous-pages ? Peux-tu donner un exemple à partir de tes fichiers ?
De plus, tu parles de "fond" d'une div. C'est quoi pour toi le fond ?
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 20h41   #6
Invité régulier
 
Inscription : janvier 2012
Messages : 13
Détails du profil
Informations forums :
Inscription : janvier 2012
Messages : 13
Points : 6
Points : 6
Alors désolé pour l'approximation, l'usage des frames m'est tellement étranger que je n'ai même pas pensé à la possibilité de confusion.

Pour ma proposition de faire plusieurs fichiers, elle repose simplement sur le constat que plutôt que de passer un paramètre via l'url et une variable GET, autant directement pointer vers un fichier dédié à l'affichage d'une partie. On évite ainsi de composer un fichier tentaculaire qui gère l'ensemble du site et fait même le café.

Sinon, j'ai jeté un œil sur le lien et je ne voit pas trop ce que sont les sous-pages...
yonn_b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 08h22   #7
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 554
Points : 2 554
Envoyer un message via Skype™ à rawsrc
Bonjour,

Je procéderais autrement. Si tu as un gabarit de page standard, tu peux faire ainsi :
template.php
Code :
1
2
3
include isset($header) ? $header : "defaultHeader.php";
include isset($body)   ? $body   : "defaultBody.php";
include isset($footer) ? $footer : "defaultFooter.php";
et sur chaque page :
Code :
1
2
3
4
5
$header = "header.php";
$body   = "content.php";
$footer = "footer.php"
 
include "template.php";
Tu fixes en dur les élements invariables de tes pages dans template.php
En gros tu codes tes blocs de manière indépendante et tu les assembles dans des pages de rendu (autant de template que tu veux).
J'espère avoir été clair.

Pour te caler ça sur ton arborescence :
Tu as une route .../shows/archive.php
Dans archive.php, tu mets :
Code :
1
2
3
4
5
$header = "header.php";
$body   = "contentArchive.php";
$footer = "footer.php"
 
include "specificTemplateForArchives.php";
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 13h22   #8
Membre chevronné
 
Avatar de christele_r
 
Femme Christele
Inscription : novembre 2009
Messages : 661
Détails du profil
Informations personnelles :
Nom : Femme Christele
Âge : 39
Localisation : France

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2009
Messages : 661
Points : 690
Points : 690
Bonjour,
A lire ce sujet je ferais trois remarques

Coté lisibilitée et nombre de lignes le if est de loin préférable au switch
donc
Code :
if ($_GET['page']=="nowplaying")        include ("content1.php");
Deuxiéme point le GET est souce de faille pourquoi ne pas utiliser une SESSION

Troisième point, si tu as 10 niveaux de include
Tu semble avoir perdu de vue que ton chemin de toute la chaine
des includes reste celui a indiquer pour atteindre un des php
s'il était appelé par la feuille principale !

A+ christele
christele_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h14.


 
 
 
 
Partenaires

Hébergement Web