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 :

[Tableaux] Inclure une page HTML dans un gabarit PHP [Fait]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 4
    Par défaut [Tableaux] Inclure une page HTML dans un gabarit PHP
    Bonjour, j'ai suivi le tutoriel de Guillaume Rossolini (ici) et j'ai voulu modifier les pages affichées comme suit :
    - A la fin de ce tutoriel, dans la base de données, le code HTML des pages est directement inclu dans la base de données.
    - Dans l'autre tutoriel de Pierre-Baptiste Naigeon (ici) il dit que l'on peut spécifier l'emplacement du fichier html a inclure dans la base.

    J'ai donc voulu faire cela en modifiant la constante d'environnement "contenu" initialise comme ceci :
    $_ENV['contenu'] = $tabl_result['Contenu'];

    En la remplacant par : $_ENV['contenu'] = include($tabl_result['Contenu']);
    afin d'inclure le fichier html.

    Cependant quand je fais ceci, au lieu d'inclure la page HTML la ou il faudrait, il m'inclut le code de la page des le debut.

    Quelqu'un aurait il une solution?

    (En espérant que j'ai réussi a être assez clair... )

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 4
    Par défaut
    Pour info j'utilise des fichiers .tpl pour mettre ma page en place et le $_ENV['contenu'] est directement envoyé dans le template. Il faudrait juste que je sache comment lire le fichier HTML sans perte des caractères spéciaux pour initialisé la variable avec du code HTML. Doit bien y avoir une fonction qui fait ca non? (J'ai beau chercher je trouve pas... Help...)

  3. #3
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Oui mais non, je n'ai jamais mis le code HTML directement dans la base de données... J'ai fait tout l'inverse : j'ai mis dans la base de données le nom du fichier contenant le code HTML.

    Pour rappel, le gabarit n'est pas le script PHP mais le fichier .tpl : "tpl" vient de "template", que je traduis par "gabarit".

    Si tu cherches à include() un fichier .tpl, j'ai peur que tu n'aies pas encore compris comment s'utilisent les templates en PHP.
    En ce cas, je te recommande la lecture de ces tutoriels (les deux dans "création") avant de reprendre mon article : http://php.developpez.com/cours/#bibliotheques-gabarits

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 4
    Par défaut
    Oui mais oui!

    Non mais en fait j'ai fait ce que t'as dit, a savoir stocker dans la base de données dans la colonne contenu le lien vers le fichier .html qui doit s'afficher, seulement quand j'essaie de l'inclure par un include comme cité ci avant, il me met le code inclus dès le début de la page et la valeur du $_ENV['contenu'] est égale a 1...

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Précise ton vocabulaire, pour le moment ce n'est pas suffisant pour que je comprenne : tu n'enregistres pas un "lien" dans la base de données mais plutôt du texte qui est en fait le nom système du fichier de gabarit.

    Je suis désolé de paraître lourd mais l'utilisation des classes d'abstraction passe par un énorme travail sur la sémantique. Si tu n'es pas au point là-dessus, alors il est préférable que tu commences par te documenter par ailleurs (ta dernière réponse ne suggère pas que tu aies suivi mon conseil précédent).

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 4
    Par défaut
    Ok, je vais essayer de préciser et en attendant ta réponse, je vais lire les docs.

    Ma page d'accueil est un fichier index.php a la racine de mon site. Elle a un template "index.tpl" ou il y a entre autre ce code dedans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div id="contenu">
            {PAGE_CONTENU}
        </div>
    Le {PAGE_CONTENU} est assigné par ce code la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $template->assign_vars(array(
        'THEMES_FOLDER'    => THEMES_ROOT_FOLDER . $_SESSION['current_theme'],
        'HEAD_LANGUE'      => $_SESSION['language_short'],
        'HEAD_MOTS_CLES'   => $_ENV['mots_cles'],
        'HEAD_DESCRIPTION' => $_ENV['description'],
        'HEAD_TITRE'       => $_ENV['titre'],
        'PAGE_CONTENU'     => $_ENV['contenu'],
        'PAGE_ID'          => $_ENV['id_page'],
        'L_YOURE_HERE'     => L_YOURE_HERE,
        'L_LANGUAGES'      => L_LANGUAGES,
        'L_TEMPLATES'      => L_TEMPLATES,
        'L_THEMES'         => L_THEMES
        ));
    Le $_ENV['contenu'] est récupéré par une fonction perso dans "mes-fonctions.php" qui est inclu :
    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
    function extraction_infos_DB() {
    	global $db;
     
    	$sql = 'SELECT *
                FROM PAGES AS p
                WHERE p.Id_page = :id_page';
     
    	$statement = $db->prepare($sql);
    	$statement->execute(array(':id_page'   => $_ENV['id_page'], ':id_langue' => $_SESSION['language_id']));
    	$tabl_result = $statement->fetch();
     
    	$_ENV['mots_cles'] = $tabl_result['Mots_cles'];
    	$_ENV['description'] = $tabl_result['Description'];
    	$_ENV['titre'] = $tabl_result['Titre'];
    	$_ENV['contenu'] = include($tabl_result['Contenu']);
    	$_ENV['id_parent'] = $tabl_result['Id_parent'];
    }
    Dans la table ou je récupére les infos, dans la colonne Contenu il y a par exemple : "./pages/toto.html"

    Et avec tout ca, il m'inclut le code avec meme le premier tag <html>. Voila, sur ce je vais lire les docs.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Inclure un bloc (dynamique) d'une page html dans une autre
    Par oups! dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 03/01/2013, 13h32
  2. inclure une page html dans la page cgi
    Par szambaux dans le forum Web
    Réponses: 1
    Dernier message: 02/01/2012, 05h25
  3. insérer une page html dans un code php
    Par darckangel01 dans le forum Langage
    Réponses: 5
    Dernier message: 20/12/2008, 11h28
  4. inclure une page html dans une autre
    Par jani dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 10/08/2005, 19h28

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