|
*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.*.^.* |
|||||||
Template Engine pour Pro et débutants sous PHP version 4.2.0 ou supérieure |
Présentation : |
TinyButStrong est une classe PHP utile pour développer une application
en séparant proprement vos scripts PHP de vos pages HTML. Avec TinyButStrong,
les pages HTML sont générées dynamiquement en fusionnant
un modèle avec des données. C'est ce qu'on appelle un moteur
de modèle (Template Engine).
TinyButStrong tient son nom du fait qu'il ne
présente que 7 fonctions mais qu'il permet de faire le maximum. Il
est ••• très très fort ••• pour
fusionner des modèles de pages HTML avec vos variables PHP ou vos
requêtes
MySQL, ODBC, SQL-Server ou ADODB.
TinyButStrong a été
conçu pour que vous puissiez développer avec facilité
vos modèles depuis n'importe quel éditeur HTML visuel (comme
Dreamweaver ou FrontPage), mais si vous avez l'habitude d'utiliser un éditeur
textuel il est tout aussi pratique. TinyButStrong
permet aussi de créer du JavaScript dynamiquement.
Comme son nom l'indique, TinyButStrong et simple
à utiliser, puissant et rapide. Il est complètement °~° freeware °~°.
Résumé des fonctionnalités supportées : |
Quelques exemples : |
$TBS->MergeBlock("Fus","mysql","SELECT * FROM MaTable WHERE id=$id)") ; | + |
|
=> |
|
|||||||||||||||||||||||||||||||||
$TBS->MergeField("TitreParagraphe","Un nouveau Monde") ; | + |
|
=> |
|
|||||||||||||||||||||||||||||||||
$TBS->MergeBlock("lst_civilite",array("-","M.","Mme","Mlle")) ; | + |
|
=> |
|
|||||||||||||||||||||||||||||||||
$TBS->MergeField("x_civilite","Mlle") ; | + |
|
=> |
|
Principes de base : |
Du coté HTML : vous concevez une page qui n'a pas besoin
de contenir de script PHP. Dans cette page vous placez des indicateurs TinyButStrong
aux endroits où doivent s'afficher les données. Cette page est
appelée 'un modèle'.
Du coté PHP : vous utilisez une variable objet TinyButStrong
pour piloter la fusion de votre modèle HTML avec des données.
À la fin, TinyButStrong affiche le résultat
de la fusion.
Il existe deux types d'indicateur que vous pouvez placer dans votre modèle : les champs-fusion et les blocs-fusion. L'un pour afficher une donnée simple, et l'autre répéter une zone en se basant sur une source de données.
Installation : |
1. | Copiez le fichier tbs_class.php dans un répertoire de site Web. |
2. | Référencez ce fichier dans
votre programme PHP à l'aide de l'instruction 'include_once' ('require_once'
est valable aussi). Exemple : include_once("tbs_class.php"); |
3. | Délcarez une variable objet qui doit être une nouvelle instance
de la classe clsTinyButStrong. Exemple : $TBS = new clsTinyButStrong ; |
Coté PHP : |
Le pilotage de la fusion d'un modèle se fait dans un programme PHP en
utilisant une variable objet déclaré à partir de la classe
clsTinyButStrong.
Exemple de déclaration : $TBS
= new clsTinyButStrong ;
Cet objet vous permet de charger un modèle, piloter sa fusion avec des
données, puis afficher le résultat.
Exemple de code PHP :
include_once("tbs_class.php"); |
Voici la liste des propriétés et méthodes d'un l'objet
TinyButStrong :
Méthode CacheAction() : |
Active le système de cache
ou lance une autre opération sur les fichiers de cache.
À la place du time-out, vous pouvez utiliser l'un des constantes ci-après pour déclacher une action spéciale du systèm de cache.
|
Méthode GetBlockSource() : |
Retourne le source d'un bloc-fusion. Syntaxe : string $TBS->GetBlockSource(string NomBloc {, boolean Liste})
Cette méthode permet
de récupérer le source d'un bloc afin de gérer manuelement
sa fusion. |
Méthode LoadTemplate() : |
Charge un modèle en vue de son traitement pour la
fusion. Syntaxe : $TBS->LoadTemplate(string Fichier)
|
Méthode MergeBlock() : |
Fusionne un bloc-fusion avec les données
d'une source d'enregistrements. Retourne le nombre d'enregistrements rencontrés. TinyButStrong supporte plusieurs types de sources de données en natif : Données Php : un tableau ; une chaîne texte, un nombre. Base de données : MySQL ; ODBC ; SQL-Server ; ADODB. Vous pouvez aussi coder des fonctions personnalisées pour la lecture des données (voir paragraphe 'source de données personnalisée'). Il existe aussi des fonctions toutes prêtes à la page de support sur le site Web de TinyButStrong. Syntaxe : int $TBS->MergeBlock(string NomBloc, mixed Source{, string Requête}{, int PageTaille, int PageNum}{, int EnregConnu})
Utilisation des arguments Source et Requête selon le type de source de données :
(2) Il s'agit de la méthode d'accès aux données ADODB de Microsoft, accessible via la classe COM de Php. Coté HTML : Le modèle HTML doit contenir un, plusieurs ou zéro bloc-fusion correspondant au nom spécifié.
Fusion avec du texte : Tout le bloc est remplacé par le texte spécifié. Les noms de colonnes ne sont pas gérés sauf "#" qui représente le nombre d'enregistrement, celui-ci sera toujours 1 ou 0 si le texte est une chaîne vide. Fusion avec un nombre : Le bloc est répété autant de fois que le nombre indiqué. Les noms de colonnes ne sont pas gérés sauf "#" qui représente le numéro d'enregistrement.
Décompte des enregistrements : |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Méthode MergeField() : |
Remplace un champs-fusion du modèle par une valeur. Syntaxe : $TBS->MergeField(string NomChamp, mixed Valeur)
Coté HTML : |
Méthode MergeSpecial() : |
Remplace les champs et blocs spéciaux du type spécifié. Syntaxe : $TBS->MergeSpecial(string
Type)
Remarque : Par défaut, la méthode Show() replace tous les champs et blocs spéciaux juste avant l'affichage du résulat de la fusion. C'est pour cea qu'il est rare d'utiliser MergeSpecial() dans un script. |
Méthode Show() : |
Termine la fusion. Syntaxe : $TBS->Show() Pour teminer la fusion, TinyButStrong exécute la fusion des champs système, des champs de variables Php ainsi que d'autres opérations. Par défaut, le résultat est affiché et le script est arrêté mais vous pouvez changer ce comportement à l'aide de la propriété Render. |
Propriété Render : |
Détermine comment doit se
terminer la fusion. Syntaxe : int $TBS->Render
|
Propriété Source : |
Définie ou renvoie le code
HTML sur lequel on applique les opérations de fusion. |
Variables globales : |
TinyButStrong fourni certaines
variables globales que vous pouvez utiliser dans votre
programme
PHP. |
Coté HTML : |
Vous concevez votre modèle en plaçant des indicateurs TinyButStrong
aux endroits où doivent figurer les données.
Il existe deux types d'indicateurs : les champs-fusion et les blocs-fusion.
Un champ-fusion est un indicateur qui doit être remplacé
par une donnée simple. Il est possible de spécifier un format
d'affichage ainsi que d'autres paramètres. La syntaxe des champs-fusion
est décrite ci-après.
Un bloc-fusion est une région qui devra être répétée.
Il est est défini par un ou deux indicateurs.
Le plus souvent il s'agit d'une ligne d'un tableau HTML. La syntaxe des blocs-fusion
est décrite ci-après.
Champ-Fusion : |
Un champ-fusion est un indicateur
qui doit être remplacé par une donnée simple. Syntaxe : HTML ... [NomChamp;params] ... HTML
Sensibilité à la casse : TinyButStrong est insensible à la casse dans les modèles, y compris pour le codage des champs-fusion. |
Bloc-Fusion : |
Un bloc-fusion permet d'afficher les données d'une
source d'enregistrements. La fusion entre un bloc et des données est réalisée grâce à la méthode MergeBlock(). Lors de la fusion, un bloc-fusion standard est repété autant de fois qu'il ya d'enregistrement ; et les champs-fusion associés sont remplacés par les valeurs des colonnes. Un champ fusion associé au bloc Bloc1 et qui affiche la valeur de la colonne ColonneA doit être nommé Bloc1.ColonneA Exemple : [Bloc1.ColonneA;frm='dd-mm-yyyy'] Vous pouvez définir des blocs-fusion plus élaborés en utilisant - des paramètres de bloc, - des blocs multi-sections (alternées ou spéciales), - des sous-blocs (affichage en série ou multi-colonnes), - des blocs clone (utilisant une requête paramétrée). Syntaxes des blocs : Il existe trois syntaxes possibles pour définir un bloc-fusion :
Quelle syntaxe utiliser ? La syntaxe 'explicite' est rarement utilisée avec des éditeurs visuels parce que ses indicateurs doivent souvent être placés entre deux balises HTML. Par contre, elle convient assez bien pour des éditeurs textuels. La syntaxe 'relative' permet de désigner un bloc avec seulement un indicateur. De plus, on pas besoin de cacher l'indicateur car il sera supprimée lors de l'affichage. Cette syntaxe est assez pratique. La syntaxe 'simplifiée' est réellement simple. Elle permet de définir un bloc-fusion et un champ fusion avec un seul indicateur. Cette syntaxe est la plus courante et la plus pratique. Paramètres des blocs :
Blocs multi-sections (alternées ou spéciales) : Lorsque vous définissez plusieurs blocs avec le même nom, ils constituent des sections du bloc. Les sections qui contient le paramètre nodata ou headergrp sont des sections spéciales décrites dans le tableau plus haut, les autres sont des sections standard. Si il existe plusieurs sections standards qui se suivent, elles seront alternée à chaque enregistrement. Cela permet de créer des motifs. Exemple :
L'exemple ci-dessus montre un bloc multi-sections composés de deux sections aletrnées vert-bleu et d'une section spéciale 'nodata'. Il est possible de combiner les multi-sections avec des sous-blocs ou des blocs clones. Sous-blocs (affichage en série) : Les sous-blocs permettent d'afficher une série de plusieurs enregistrements par bloc. Par exemple, cela peut servir pour faire un affichage multi-colonnes. Vous devez indiquez qu'un bloc contient des sous-blocs en lui ajoutant le paramètre serial. Les sous-blocs devront être contenu dans leur bloc parent et leur nom doit être celui de leur bloc parent suivi de '_' puis de l'indice de série (en commencant par 1). Sous-bloc vide : Vous pouvez désigner un sous-bloc qui sera utilisé en remplacement des sous-block inexploités. Ce sous-bloc 'vide' doit avoir l'indice 0. Il peut être placé dans un bloc serial normal en plus des sous-blocs normaux, ou peut être placé seul dans autre bloc serial. Le sous-bloc vide est facultatif. Exemple :
Dans cet exemple il y a un affichage multi-colonnes sur trois colonne avec définition d'une case vide. Il est possible de combiner des sous-bloc avec des multi-sections ou des blocs clones. Blocs clone (et requête paramétrée) : Les blocs clone sont des blocs du même nom et qui seront fusionnés par un seul appel à la méthode MergeBlock(). Ils se distinguent des multi-sections par la présence du paramètre p1 au début d'un bloc clone. Ils peuvent éventuellement avoir d'autres paramètres p2, p3,... mais p1 est obligatoire. Pour chaque bloc clone, la requête SQL passée à la méthode MergeBlock() est modifée gâces aux paramètres du bloc. Chaque mot-clé '%p1%', '%p2%', '%p3%'... placés dans la requête SQL sera remplacés par les paramètres p1, p2, p3... Si les valeurs des paramètres sont des chaînes, le paramètre htmlconv=esc peut se réveler utile. Exemple de définition de trois blocs clone :
Code PHP correspondant : $TBS->MergeBlock('blc',$cnx_id,'SELECT ville FROM t_ville WHERE (pays_id=%p1%)') Les blocs clone peuvent avoir des multi-sections et des sous-blocs. Sensibilité à la casse : TinyButStrong est insensible à la casse dans les modèles, y compris pour le codage des blocs-fusion. |
Insertion de fichier : |
Le fichier à inlure est défini par le paramètre
file du champ-fusion. La valeur de ce paramètre
peut être une expression composée de champs
de variable PHP.
Exemples : |
Champs de variable Php : |
Un champ de variable Php est un champ-fusion
qui affiche une variable Php. Les champs-fusion n'ont pas besoin de respecter la casse des variables
PHP correspondantes. |
Champs système : |
Un champ système est un champ-fusion qui affiche
des données propre au moteur TinyButStrong.
Quand sont fusionnés les champs système ? Les champ système sont fusionnés à l'appel de la méthode Show(), c'est à dire juste avant l'affichage du résultat de la fusion. Mais vous pouvez forcer la fusion à tout moment avec la méthode MergeSpecial(). |
Affichage conditionnel : |
Les champs-fusion et des blocs-fusion
peuvent contenir des paramètres qui permettent de les afficher
ou de les supprimer selon une condition.
|
.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.:*~*:._.: