IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Fonction Include page et sous page


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 13
    Points : 16
    Points
    16
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    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.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 13
    Points : 16
    Points
    16
    Par défaut
    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.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    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 ?

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    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 ?

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    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...

  7. #7
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Je procéderais autrement. Si tu as un gabarit de page standard, tu peux faire ainsi :
    template.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $header = "header.php";
    $body   = "contentArchive.php";
    $footer = "footer.php"
     
    include "specificTemplateForArchives.php";

  8. #8
    Invité
    Invité(e)
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Dernière modification par Sendusha ; 27/01/2012 à 18h20. Motif: Ajout du balise [CODE]

Discussions similaires

  1. Plusieurs sous pages dans une page
    Par janyoura dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 17/07/2013, 15h29
  2. Réponses: 1
    Dernier message: 23/05/2010, 09h08
  3. La fonction include() pour un sous-domaine
    Par pierrot10 dans le forum Langage
    Réponses: 1
    Dernier message: 08/09/2009, 00h24
  4. fonction Include page
    Par sasuke123456 dans le forum Langage
    Réponses: 8
    Dernier message: 10/08/2008, 22h11
  5. Réponses: 9
    Dernier message: 24/01/2008, 18h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo