Hébergement du site en PHP et Mysql par WDMédia-hébergement
Vous aussi adpotez les éléPHPants de Vincent Pontier !  
CONCOURS
 
 
PLUS DE PHP
 
 
PLUS DE JAVASCRIPT
 
COMMENT CA MARCHE
 
 
EXPLIQUE-MOI
 
 
NEWS LETTER
 

 
PARTENAIRES
 
Découvrez scriptsphp.org
Découvrez phpteam.net
Tout sur les expressions régulières
IE sucks :-)
 
DESIGN DU SITE
 
Templates
Tuto écrit par Jocelyn, revu en août 2004 par Molokai et Raf

 
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


Ajouter une réponse
Nom
Email
Titre

Mise en forme : gras = [b]...[/b], italic = [i]...[/i], souligné = [u]...[/u], citation = [quote]...[/quote], lien = [url]liens_externe[/url] ou [url nom=texte]liens_externe[/url], code source : [code]...[/code]

Mémoriser mon nom et mon email : Oui Non
www.phpdebutant.org © 2014 - L'équipe de phpDebutant - Hébergement : WDMédia-hébergement
DEBUTEZ !
 
  0.  Introduction
  1.  Afficher une phrase ou une image
  2.  Afficher la date et l'heure
  3.  PHP dans du code HTML
  4.  La concaténation
  5.  Récupérer les valeurs d'un formulaire
  6.  Les structures de contrôle
  7.  Ecrire et lire dans un fichier texte
  8.  Les fonctions utilisateurs
  9.  Les variables d'environnement
  10.  Quelques fonctions utiles
  11.  SQL/MySQL (Create, Alter & Drop)
  12.  SQL/MySQL (Insert et Select)
  13.  SQL/MySQL (Delete et Update)
  14.  SQL/MySQL (Where)
  15.  Fonctions PHP pour mySQL
  16.  Interroger une table MySQL
  17.  Alimenter une ou plusieurs tables mySQL
  18.  Les pseudos-frames
  19.  Les sessions php4
  20.  Affichage page par page
  21.  Images dynamiques
  22.  Ca marche pas ?
  23.  Variables globales à OFF
  24.  Les variables dynamiques