Introduction :
Je vais vous présenter les templates grâce à la librairie PHPlib, sous la forme d'un exemple simple.
Nous allons faire une sélection de la table "clients" et afficher le contenu. Les templates vont nous permettre
de mieux organiser le travail en équipe et d'augmenter la rapidité des mises à jour.
Arborescence :
-Fichier liste.php
-Dossier [gabarits]
-Fichier liste.html
-Dossier [librairies]
-Fichier template.inc
le fichier liste.html
Ce fichier sera créé par l'intégrateur HTML en théorie (souvent le graphiste et l'intégrateur HTML ne font qu'un)
et développé normalement en HTML grâce à un éditeur type dreamweaver ou au bloc notes
Exemple (code HTML simple)
|
1 |
<html>
|
2 | <head>
|
3 | <title>Ma page client</title>
|
4 | </head>
|
5 |
|
6 | <body>
|
7 | <table width="600" border="0">
|
8 |
|
9 | <tr bgcolor="#FFFF99"> |
10 | <td><font face="Verdana" size="2" color="#000000">Numero clients</font></td>
|
11 | <td><font face="Verdana" size="2" color="#000000">Nom clients</font></td>
|
12 | <td><font face="Verdana" size="2" color="#000000">Tel. clients</font></td>
|
13 | <td><font face="Verdana" size="2" color="#000000">Adresse clients</font></td>
|
14 | <td>
|
15 |
|
16 | <tr bgcolor="#000066"> |
17 | <td><font face="Verdana" size="2" color="#FFFFFF"></font></td>
|
18 | <td><font face="Verdana" size="2" color="#FFFFFF"></font></td>
|
19 | <td><font face="Verdana" size="2" color="#FFFFFF"></font></td>
|
20 | <td><font face="Verdana" size="2" color="#FFFFFF"></font></td>
|
21 | </tr>
|
22 |
|
23 | </table>
|
24 | </body>
|
25 | </html>
|
|
Une fois le fichier fini, il va falloir rajouter un peu de code. On peut noter que le code à insérer n'est que du commentaire HTML.
Pour commencer un bloc, on utilise la balise : <,!-- BEGIN nom_du_bloc -->
Pour fermer un bloc, on utilise la balise : <!-- END nom_du_bloc -->
Pour insérer un champ, on utilise la balise : {nom_du_champ}
Les modifications pour notre exemple
|
1 |
<html>
|
2 | <head>
|
3 | <title>Ma page client</title>
|
4 | </head>
|
5 |
|
6 | <body>
|
7 | <table width="600" border="0">
|
8 |
|
9 | <tr bgcolor="#FFFF99"> |
10 | <td><font face="Verdana" size="2" color="#000000">Numero clients</font></td>
|
11 | <td><font face="Verdana" size="2" color="#000000">Nom clients</font></td>
|
12 | <td><font face="Verdana" size="2" color="#000000">Tel. clients</font></td>
|
13 | <td><font face="Verdana" size="2" color="#000000">Adresse clients</font></td>
|
14 | <td>
|
15 |
|
16 | <!-- BEGIN liste_clients -->
|
17 | <tr bgcolor="#000066"> |
18 | <td><font face="Verdana" size="2" color="#FFFFFF">{id}</font></td>
|
19 | <td><font face="Verdana" size="2" color="#FFFFFF">{nom}</font></td>
|
20 | <td><font face="Verdana" size="2" color="#FFFFFF">{tel}</font></td>
|
21 | <td><font face="Verdana" size="2" color="#FFFFFF">{adresse}</font></td>
|
22 | </tr>
|
23 | <!-- END liste_clients -->
|
24 |
|
25 | </table>
|
26 | </body>
|
27 | </html>
|
|
La gestion du fichier liste.html est finie et implicitement le travail de l'intégrateur HTML.
A noter qu'il n'y a eu que du code HTML, donc totalement gérable grâce à dreamweaver.
Le fichier liste.php
Le fichier liste.php
|
1 |
<?php
|
2 | //1
|
3 | include "librairies/template.inc";
|
4 |
|
5 | //2
|
6 | $db = mysql_connect('localhost', 'root', '');
|
7 | mysql_select_db('mabase',$db);
|
8 | $sql = 'SELECT id,nom,tel,adresse FROM clients';
|
9 | $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
|
10 |
|
11 | //3
|
12 | $tpl = new template("gabarits");
|
13 | $tpl->set_file("gliste","liste.html");
|
14 |
|
15 | //4
|
16 | $tpl->set_block('gliste','liste_clients','liste_bloc');
|
17 |
|
18 | //5
|
19 | while($data = mysql_fetch_array($req)) {
|
20 |
|
21 | //6
|
22 | $tpl->set_var("id", $data['id']);
|
23 | $tpl->set_var("nom", $data['nom']);
|
24 | $tpl->set_var("tel", $data['tel']);
|
25 | $tpl->set_var("adresse", $data['adresse']);
|
26 |
|
27 | //7
|
28 | $tpl->parse('liste_bloc','liste_clients',true);
|
29 | }
|
30 |
|
31 | //8
|
32 | mysql_close();
|
33 |
|
34 | //9
|
35 | $tpl->pparse("affichage","gliste");
|
36 | ?>
|
|
Explications :
//1
On inclut le fichier de "template.inc" de PHPLIB.
//2
On crée une connexion et on fait une requête SELECT de clients.
//3
Pour utiliser la commande "new template" il faut indiquer le chemin vers les gabarits (ici = ../gabarits ).
- template (string $path)
Ensuite "set_file" va servir à choisir le gabarit et lui attribuer un nom dans le fichier PHP. Son utilisation se fait sous cette forme : nom du gabarit, fichier gabarit.
- set_file (string $name_gabarit, string $path)
//4
Avec la commande "set_block" nous allons créer un bloc qui va correspondre au nom du traitement créé précédemment dans la page HTML. Son utilisation se fait sous cette forme : nom du gabarit, nom du traitement (dans HTML), nom du bloc.
- set_block (string $name_gabarit, string $name_HTML,string $name_bloc)
//5
On fait une boucle qui va faire un tour pour chaque enregistrement.
//6
Grâce à "set_var" nous allons définir les champs notés dans le code HTML.
Cette commande s'exécute sous cette forme : nom du champ (dans HTML), valeur (ici récupéré dans la base. Pour chaque différent champ nous exécutons la commande "set_var".
set_var(string $name_HTML, string $value)
//7 Ensuite nous utilisons la commande "parse" qui va nous servir à parcourir la boucle et à remplacer les champs par les valeurs de la db. Sa syntaxe est la suivante : nom du bloc, nom du traitement (dans HTML), true.
parse(string $name_bloc, string $name_HTML, true)
//8
on ferme la connexion à MySql.
//9
On finit par l'affichage, avec la commande pparse, qui s'écrit sous la forme :
Nom de l'affichage, nom du gabarit.
pparse(string $name, string $name_gabarit);
Pour tester :
Il va falloir créer une base "mabase" avec une table clients de cette forme (3 clients y sont insérés) :
Création
de la table dans phpMyAdmin
|
|
Ensuite il va falloir insérer le templates.inc dans le dossier librairies puis exécuter le fichier liste.php.
home : http://phplib.sourceforge.net/
Alternatives :
Il n'y a pas que PHPlib qui a un système de templates. Voici une petite liste des différents systèmes de templates :
XTemplates
Smarty
ModeliXe
PHemplate
Jocelyn
|