Lien d'une page via mysql

cs_pilaf Messages postés 24 Date d'inscription lundi 6 février 2006 Statut Membre Dernière intervention 18 mars 2010 - 17 mars 2010 à 18:50
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 - 19 mars 2010 à 08:13
bonjour, je n'arrive pas a inserer une page php dans une autre page via un lien dans ma base.
J'ai essaye plusieurs solution mais je n'arrive que a afficher le texte de la cellule dans ma page "incrustee". J'ai mis le lien en dur dans la cellule, j'ai aussi essaye de mettre l'include directement dans la cellule. Aucune des 2 ne fonctionne. Peut etre pas la bonne syntaxe. Pourriez vous me donner une syntaxe valable, svp ? Merci de votre participation.

4 réponses

Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
17 mars 2010 à 19:57
Hello,

Qu'as tu écris ?


_________________________________
Min iPomme
0
cs_pilaf Messages postés 24 Date d'inscription lundi 6 février 2006 Statut Membre Dernière intervention 18 mars 2010
17 mars 2010 à 21:57
Hello Tonio, J'ai mis dans la base dans ue cellule : include /entete.php
et dans ma page : 'ENTETE' => $_ENV['entete'] en POO.
j'espere que c'est comprehensible ?
0
cs_pilaf Messages postés 24 Date d'inscription lundi 6 février 2006 Statut Membre Dernière intervention 18 mars 2010
18 mars 2010 à 23:26
Dans index.tpl :


{ENTETE}




Dans index.php :
// Envoi des variables de la bd au gabarit.
$template->assign_vars(array(
'ENTETE' => $_ENV['entete_page'],
));
//Ma fonction.
$_ENV['entete_page'] = $tabl_result['Entete_page'];
et dans la base :
include (''entete.php'')
Et j'ai ce resultat dans le browser :


include ('entete.php')



Quelqu'un peut il m'aider ?
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
19 mars 2010 à 08:13
Normal, tout au long de ton code, "include ('entete.php') " est pris pour une chaine de caractère et non interprété par php.

SOLUTION N#1 :
Moi j'aurais fais comme ca :
Dans la base je stoque "entete" ;

Dans ta fonction je me sert d'un buffer :
<?php
ob_start();
// Tout ce qui est renvoyé à partir de la est stoqué dans un buffer
if(!is_file($tabl_result['Entete_page'].'.php'))
{
    // Si y a une erreur on arrête la bufferisation
    ob_end_clean();
    // Et on quitte (Tu peux mettre une page 404 ici)
    die("Le fichier n'existe pas");
}
else
{
    // Sinon on inclus le fichier qui va retourner ton entête
    include($tabl_result['Entete_page'].'.php');
}
// On récupère tout ce que le fichier à retourné dans le buffer
$tpl_temp = trim(ob_get_contents());
// On stoppe la bufferisation
ob_end_clean();
// On met le retour du buffer dans le template
$template->assign_vars(array(
    'ENTETE' => $tpl_temp,
)); 
?>

Plus de détails sur les buffer php ici.

SOLUTION N#2 :
Tu peux aussi te servir de la fonction eval si tu ne veux pas changer ta base de donnée. Elle interprète une chaine de caractère (Cf. Doc). La aussi tu auras certainement besoin du buffer.


_________________________________
Min iPomme
0