[PHP] Templates

Templates [PHP] - Programmation

Marsh Posté le 08-11-2001 à 18:25:10    

Pendant que je pensais à recoder mon site web avec des templates, il me survint alors une question :
 
comment faire pour tout ce qui est affichage de plusieurs éléments issus d'une BD et dont l'affichage est répétitif ?
 
ex dans un forum :  
- l'affichage de l'entête des forums disponibles  
- l'affichage des entêtes de messages
je m'explique pour tout ceux qui n'auraient pas compris ou je voulais en venir ;)
en gros une page de forum ressemble à ça
<Table>
<TR> <TD>{NOM}</TD> <TD>{DATE}</TD> <TD>{SUJET}</TD> </TR>
<TR> <TD>{NOM}</TD> <TD>{DATE}</TD> <TD>{SUJET}</TD> </TR>
<TR> <TD>{NOM}</TD> <TD>{DATE}</TD> <TD>{SUJET}</TD> </TR>
</table>
 
on ne connait pas le nombre de lignes du tableau à afficher :(
et même si on le connaissait, ce n'est que répétition de l'affichage d'une même ligne de table dont le contenu change.
 
donc comment s'en sortir ? je pensais à ça, mais ça me semble lourd :(
 
un template page.tpl qui contient la structure d'une page de base
//page.tpl----------------------------------------
-----
<HTML>
<HEAD>
{HEADER}
</HEAD>
<BODY>
<H1> {TITRE} </H1>
<CENTER>
<TABLE>
{ENTETEMESSAGE}
</TABLE>
</CENTER>
</BODY>
</HTML>
//-----------------------------------------------------
 
//un template pour l'entete des messages message.tpl
//entetemessage.tpl------------------------------------------
<TR> <TD>{NOM}</TD> <TD>{DATE}</TD> <TD>{SUJET}</TD> </TR>
//-----------------------------------------------------
 
et une page qui assemble le tout:
//index.php--------------------------------------------
...includes...
//remplissage du template des entêtes du forum
template= new template("emplacement/entetemessage.tpl" );
sqlquery= "select * from forum ...";
...
$entetes_forum= "";
while ($row= mysql_fetch_array($...)) {
  $entetes_forum.= $template->parse($row);
}
 
//remplissage du template de la page
template= new template("emplacement/page.tpl" );
...
$messages_forum= "";
echo $template->parse(array("TITRE"=>"monTitre","E
NTETEMESSAGE"=>"$entetes_forum",...));
...
//------------------------------------------------
-----
 
Qu'en pensez vous ??
Comment faites vous ?

Reply

Marsh Posté le 08-11-2001 à 18:25:10   

Reply

Marsh Posté le 08-11-2001 à 18:30:54    

:hello: Ethernal
 
moi, je fais ma requete, et pis un  
while(list($auteur, $message,...)=mysql_fetch_row($result))
affichage du topic
 
je sais pas si j'ai répondu a ta question...  :??:

Reply

Marsh Posté le 08-11-2001 à 18:37:05    

sisicaivrai>  :hello:  
bha c'est ce que j'ai pour l'instant, mais je peux pas mettre ça dans un template ;) vu que les templates sont destinés aux graphistes (si j'en ai un sous la mains un jour ;) :lol: )
 
d'autre part, si j'utilise des templates, mais que je ne permet pas aux graphistes de modifier le style d'affichage des entêtes des messages, autant pas faire de template, faut rester logique avec ce que l'on fait ;)

Reply

Marsh Posté le 08-11-2001 à 18:39:48    

comment j'ai répondu a coté j'avais pas relevé le mot important:template (lu en diagonale:D)... ;)
 
daisolai, je vois pas trop comment t'aider  :(

 

[edtdd]--Message édité par sisicaivrai--[/edtdd]

Reply

Marsh Posté le 08-11-2001 à 18:44:17    

heu oui on fait à peu près comme tu as fait dans ton 1er msg

Reply

Marsh Posté le 08-11-2001 à 18:47:59    

sisicaivrai a écrit a écrit :

comment j'ai répondu a coté j'avais pas relevé le mot important:template (lu en diagonale:D)... ;)
 
daisolai, je vois pas trop comment t'aider  :(  
 
 




 
pas de problème, ça m'arrive aussi ;)

Reply

Marsh Posté le 08-11-2001 à 18:49:20    

krolours1 a écrit a écrit :

heu oui on fait à peu près comme tu as fait dans ton 1er msg  




 
à peu près ça veut dire quoi exactement ?
pcq vais me rerouver avec des variables remplies un max si mes pages sont grosses... ça risque pas de poser des problèmes ?

Reply

Marsh Posté le 08-11-2001 à 22:50:57    

je disais à peu près car j'ai lu le code très rapidement :)
 
maintenant il me vient un doute :)
c quoi ta lib de templates ??

Reply

Marsh Posté le 08-11-2001 à 23:01:14    

c vrai que j'ai fait un peu long là ;) dsl
 
Je me suis fais une classe de template pas bien élaborée.
Elle lit et stocke le contenu d'un template dont on lui donne l'origine.
Elle retourne le contenu modifié en fonction du tableau passé en paramètre.  Ce tableau contient le nom de la variable en clé et le contenu de celle-ci.
En fait ça ressemble à FastTemplates (ou un truc du genre).
 
Mais le principe d'avoir plusieurs templates "inclus" est-il bon ? (page.tpl contient implicitement entete_forum.tpl)

Reply

Marsh Posté le 09-11-2001 à 07:19:52    

euh... c quoi un template? :ange:  
 
-pas taper hein?-


---------------
1km = 1024m
Reply

Marsh Posté le 09-11-2001 à 07:19:52   

Reply

Marsh Posté le 09-11-2001 à 10:17:06    

ethernal a écrit a écrit :

 
 
Mais le principe d'avoir plusieurs templates "inclus" est-il bon ? (page.tpl contient implicitement entete_forum.tpl)  




 
Ben oui c'est tt à fait normal
sur certaines pages j'ai 15 templates différents

Reply

Marsh Posté le 09-11-2001 à 15:15:19    

ou la la 15 templates ;)
tu me rassures là   :)  :)  
pcq je me disais aussi que pour chaque formulaire il me faudrait une template aussi...
 
Est-ce que ça n'utilise pas trop de ressources cpu et mémoire ?
 
Que se passe-t-il si un message d'un forum ou autre contient un text du genre "{FOOTER}" (à cause d'un utilisateur en manque de tests) et que cette variable est remplacée par après par sa valeur ? hum hum ?
le seul moyen est-il de remplacer le contenu à risque en dernier ? ou bien il y a d'autres façons de faire ?

 

[edtdd]--Message édité par ethernal--[/edtdd]

Reply

Marsh Posté le 09-11-2001 à 15:36:54    

ethernal a écrit a écrit :

ou la la 15 templates ;)
tu me rassures là   :)  :)  
pcq je me disais aussi que pour chaque formulaire il me faudrait une template aussi...
 
Est-ce que ça n'utilise pas trop de ressources cpu et mémoire ?
 
Que se passe-t-il si un message d'un forum ou autre contient un text du genre "{FOOTER}" (à cause d'un utilisateur en manque de tests) et que cette variable est remplacée par après par sa valeur ? hum hum ?
le seul moyen est-il de remplacer le contenu à risque en dernier ? ou bien il y a d'autres façons de faire ?  
 
 




 
1. Pour les ressources, je me suis pas posé la question étant donné le confort de dev et la clarté du code que les templates apportent. Je pense que ce n'est pas significatif.
Par contre je pense que tu devrait utiliser 1 lib existante plutot que d'écrire la tienne, il en existe des très performantes qui font du cache, de la compression ect..
 
2. Avec fastTemplate, ça peut pas arriver il me semble (je suis pas super sur non plus :))

Reply

Marsh Posté le 09-11-2001 à 15:45:05    

merci beaucoup pour tes réponses krolours1  :jap:  
 
c'est vrai qu'avec les templates on arrive à une distinction totale du code et de l'html et ça j'aime :love:  
 
je vais suivre tes conseils et utiliser FastTemplates qui m'a l'air correct.
 
encore merci ;)

Reply

Marsh Posté le 09-11-2001 à 18:34:28    

pour ceux que ça intéresse :

Citation :


Speed discussion
"Ok," you might say, "that is all fine and nifty. But doesn't it impact the speed of my web site?"  
 
Yes, your site will probably become faster. There is a simple reason for that: Because you as the coder are focused on designing your application and building code, your code will be more efficient, handling the same task easier and quicker. So, you might add just another reason to the above list why you should consider using FastTemplate in your next PHP project.  


issu d'un article de phpbuilder http://www.phpbuilder.com/columns/ [...] hp3?page=1

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed