Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
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 13/04/2007, 15h03   #1
Membre éprouvé
 
Avatar de Sayrus
 
Inscription : décembre 2005
Messages : 818
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : décembre 2005
Messages : 818
Points : 456
Points : 456
Par défaut Générer de l'html depuis un include PHP



Désolé pour le titre, ce n'est pas facile à résumer...

Mon problème est le suivant, j'espère que vous pourrez m'aider à le résoudre:

J'ai un fichier newsletter.php qui permet de créer dynamiquement le contenu d'une newsletter, c'est-à-dire nombre de liens de menu et d'article a volonté qui seront inclus dans la newsletter HTML.

Jusque là ça va.

Je problème, c'est que j'aimerais créer des skins pour les newsletter.

Donc lorsque j'appelle newsletter.php, celui-ci inclura, par exemple, "models/default/layout.php"

Dans le fichier layout.php, on retrouve une mise en forme HTML avec un minimum de PHP pour inclure les données dynamiques.

Le seul problème, c'est : Comment pouvoir générer en HTML tout ça?

passer les variables au layout.php en l'incluant dans newsletter.php qui lui, écrira un fichier du type newsletter_XX.html.


Donc faire une copie du layout, une fois les données PHP remplie au format HTML...

Un grand merci.

Si je n'ai pas été assez clair, dites le.
Sayrus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2007, 15h37   #2
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Pourquoi écrire un fichier newsletter_XX.html ? Pourquoi pas faire un simple include à chaque affichage de la page ?
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2007, 15h42   #3
Membre éprouvé
 
Avatar de Sayrus
 
Inscription : décembre 2005
Messages : 818
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : décembre 2005
Messages : 818
Points : 456
Points : 456
Parce que la page doit etre générée en HTML pour être envoyée par e-mail, et pour ensuite est sauvée au format HTML dans un répertoire.
Sayrus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2007, 15h47   #4
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Ok. Bonne réponse

Je te conseille de te documenter sur la famille des fonctions ob_xxxx, elles te permettent de manipuler le buffer de sortie :
http://us2.php.net/manual/fr/ref.outcontrol.php
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2007, 16h05   #5
Membre éprouvé
 
Avatar de Sayrus
 
Inscription : décembre 2005
Messages : 818
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : décembre 2005
Messages : 818
Points : 456
Points : 456
C'est une idée effectivement, si la après la mise en cache, d'un fichier php généré, on peut récupérer le fichier html (celui en cache donc), ça peut marcher aussi.

J'ai trouvé une alternative en tout cas, au lieu de passer par un layout.php. Je fais comme ceci.

Je décomposse chaque modèle en 4 partie : top.html et bottom.html (contenu de mise en forme de la newsletter) et menu.html (qui représente le modèle pour chaque élément du menu et item.html (qui représente un article de la newsletter ou paragraphe si on préfère)

J'inclus dans $newsletter=file_get_contents(bottom.html)

puis pour chaque itération j'inclus respectivement $newsletter.= $tmp
(dans chaque itération, avec un str_replace je remplace le contenu "modèle" par la variable PHP)

puis je ferme avec bottom.html

et j'écris le fichier avec fwrite.

Merci pour le lien, je verrai ce qui est le mieux.
Sayrus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2007, 16h13   #6
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Je pense que l'option str_replace sera plus gourmande
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2007, 16h31   #7
Membre éprouvé
 
Avatar de Sayrus
 
Inscription : décembre 2005
Messages : 818
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : décembre 2005
Messages : 818
Points : 456
Points : 456
Et ereg aussi je suppose...
Sayrus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2007, 16h47   #8
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Ereg ? Encore pire que str_replace

Mais mon sentiment reste un apriori. Je pense intuitivement que ce code :
Code :
1
2
3
4
5
6
7
8
9
<?php
$toto = 5;
$titi = 66;
 
ob_start();
include($file);
file_put_contents('newsletter.html', ob_get_contents());
ob_end_clean();
?>
sera plus rapide que
Code :
1
2
3
4
5
6
7
8
9
<?php
$toto = 5;
$titi = 66;
 
$html = file_get_contents('template.html');
$html = str_replace('$toto', $toto, $html);
$html = str_replace('$titi', $titi, $html);
file_put_contents('newsletter.html', $html);
?>
Et plus maintenable...

Reste à démontrer ces affirmations par des benchmarks...
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2007, 09h10   #9
Membre éprouvé
 
Avatar de Sayrus
 
Inscription : décembre 2005
Messages : 818
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : décembre 2005
Messages : 818
Points : 456
Points : 456
C'est a tester effectivement!

Merci en tout cas pour cette solution
Sayrus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2007, 12h16   #10
Membre éprouvé
 
Avatar de Sayrus
 
Inscription : décembre 2005
Messages : 818
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : décembre 2005
Messages : 818
Points : 456
Points : 456
Je viens de me renseigner sur l'utilisation du buffer de sortie.

Seulement je ne suis pas sur de comprendre le code suivant:

Code :
1
2
3
4
5
6
<?php $toto = 5;
 $titi = 66;   
ob_start(); 
include($file); 
file_put_contents('newsletter.html', ob_get_contents()); 
ob_end_clean(); ?>
Que le fichier ce mette dans le tampon, là ok, que le fichier ce copie au format html, là ok.

Mais ce code ne remplacera pas les variables il me semble? il faudra quand meme passer par un str_replace() non?
Sayrus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2007, 14h07   #11
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
Ca dépend du fichier... Avec un fichier newsletter.html comme ça :
Code html :
1
2
3
4
5
6
<html>
   <body>
      <h1>toto = <? echo $toto; ?></h1>
      Titi = <? echo $titi; ?>
   </body>
</html>
__________________
Get your motor runnin'
Head out on the highway...
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2007, 16h15   #12
Membre éprouvé
 
Avatar de Sayrus
 
Inscription : décembre 2005
Messages : 818
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : décembre 2005
Messages : 818
Points : 456
Points : 456
Ok, merci de la réponse, j'ai pigé now!
Sayrus est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h34.


 
 
 
 
Partenaires

Hébergement Web