Le module LIST vous permet d'exécuter des requêtes SQL pour la base de données MySQL.
Note: pour utiliser cette fonction, veuillez
configurer vos accès SQL dans le fichier
templeet/config.php.
Il offre les fonctions suivantes:
-
list
: lancement d'une requête sur une base de données, et extraction du résultat
fld : renvoie un champs lors d'une extraction sur une base de données
gfld : renvoie la valeur d'une variable interne de la fonction ~list - listtotaltime : renvoie le temps que templeet a passé dans la base de données
- list_lastid : renvoie l'identifiant généré par la dernière requête INSERT
- list_querycolumns : renvoie une description simple d'une table d'une base de données
-
next
: crée le code HTML pour pointer vers la page suivante d'une liste
prev : crée le code HTML pour pointer vers la page précédente d'une liste
getfirst : fonction liée à la fonction prev
list
La fonction ~list est une fonction de liste. Elle permet d'effectuer une extraction sur une base de données. Les sélecteurs supportés sont LM, LR, LF, LL, LN, LS, L1, LD et LE.
La fonction ~list prend comme arguments le nom indiqué dans
templeet/config.php pour la base de donnée, la requête
SQL à exécuter, puis les sélecteurs.
fld
La fonction ~fld prend un argument, celui ci étant le nom de la colonne SQL que l'on souhaite récupérer. Il est possible d'indiquer un second argument (facultatif) permettant d'accéder aux colonnes dans des requêtes SQL imbriqués.
Si le second argument est négatif, la colonne accédée sera celle de la requête correspondant à un déplacement relatif par rapport à la requête en cours, ainsi ~fld('id',-1) accèdera à la colonne 'id' de la requête parente. Si le second argument est positif, la requête concerné sera celle dont la position absolue est indiqué par l'argument, ainsi ~fld('id',1) correspond à la colonne 'id' de la toute première requête effectué avec ~list.
Exemples d'utilisation des commandes ~list, et ~fld :
L'exemple suivant affiche le champ section de chaque enregistrement de la table sections :
~list("database",'SELECT section FROM sections',"LM",~fld("section"))
L'exemple suivant met en oeuvre les paramètres "LF", "LM", "LL" de la fonction ~list :
~list("database",'
SELECT
nom, prenom
FROM
utilisateurs
ORDER BY
nom, prenom
',
"LF",
'<table border="1">
<thead>
<tr>
<th>Nom</th>
<th>Prénom</th>
</tr>
</thead>
<tbody>
',
"LM",
'
<tr>
<td>~fld("nom")</td>
<td>~fld("prenom")</td>
</tr>
',
"LL",
'
</tbody>
</table>
'
)
Exemple de résultat du code précédent :
| Nom | Prénom |
|---|---|
| DUPOND | Pierre |
| MARTIN | Catherine |
| DUMONT | Sébastien |
NOTE : il est possible d'imbriquer la fonction ~list dans une autre fonction ~list. Cependant, dans la fonction ~list qui est contenue, il n'est pas possible d'accéder aux champs de la fonction ~list contenante s'il le second argument de ~fld n'est pas renseigné.
Exemple :
~list("database", <--- fonction ~list (1)
'
SELECT
section
FROM
sections
',
"LM",
'
~list("database", <--- fonction ~list (2)
'
SELECT
nom,
prenom
FROM
utilisateurs
WHERE
section="~fld("section")" <--- accès au champ section de la requête effectué par la fonction ~list (1)
',
"LF",'
<table>
'
"LM",'
<tr>
<td>~fld("nom")</td> <--- accès au champ nom de la requête effectué par la fonction ~list (2)
<td>~fld("prenom")</td> <--- accès au champ prenom de la requête effectué par la fonction ~list (2)
<td>~fld("section")</td> <--- accès au champ prenom de la requête effectué par la fonction ~list (2)
</tr>
'
)
',
"LL",'
</table>
'
)
gfld
Cette fonction permet de récupérer la valeur de variables internes Templeet.
- ~gfld("numrows") : permet d'avoir le nombre de lignes renvoyées par la requête.
- ~gfld("counter") : permet d'avoir le numéro de ligne courante (la première ligne a pour valeur 1).
- ~gfld("error") : permet d'avoir le message d'erreur.
- ~gfld("executedtime") : permet de récupérer le temps passé à exécuter la requête.
Exemple d'utilisation de la fonction ~gfld :
~list("database",'
SELECT
nom, prenom
FROM
utilisateurs
ORDER BY
nom, prenom
',
"LF",
'<p>Nombre d\'enregistrement : ~gfld("numrows")</p>
<table border="1">
<thead>
<tr>
<th></th>
<th>Nom</th>
<th>Prénom</th>
</tr>
</thead>
<tbody>
',
"LM",
'
<tr>
<td>~gfld("counter")</td>
<td>~fld("nom")</td>
<td>~fld("prenom")</td>
</tr>
',
"LL",
'
</tbody>
</table>
'
)
Exemple de résultat du code précédent :
Nombre d'enregistrement : 3
| Nom | Prénom | |
|---|---|---|
| 1 | DUPOND | Pierre |
| 2 | MARTIN | Catherine |
| 3 | DUMONT | Sébastien |
listtotaltime
Cette fonction, qui ne prend pas d'argument, indique le temps que Templeet a passé dans la base de données.
Exemple d'utilisation de la fonction ~listtotaltime :
Templeet a passé ~listtotaltime()s en requêtes SQL
list_lastid
La fonction ~list_lastid renvoie l'identifiant généré par la dernière requête INSERT. Cet identifiant correspond à un champ qui est automatiquement incrémenté.
~list("foo", 'INSERT INTO table (field) VALUES ("bar")')
Index du dernier enregistrement inséré : ~list_lastid("foo")
list_querycolumns
La fonction list_querycolumns permet de récupérer une description simple d'une table d'une base de données.Elle retourne un tableau qui représente chacun des champs de la table sous forme normalisée. En effet, en fonction de la base de données utilisée la déclaration des champs varie. Cette fonction permet de faire des vérifications simples sur les types des champs se trouvant dans une table. Pour chaque champs de la table, et donc chaque élément du tableau retourné, on a le nom du champs associé à la clef name et le type normalisé associé à la clef type.
Actuellement trois types sont gérés par la fonction:
- varchar: chaîne de longueur fixe
- text: chaîne de longueur variable
- int: entier
- unknown: aucun des types précédents
CREATE TABLE personnes (
nom char(50),
prenom char(50),
age integer,
commentaire text
);
et le template suivant:
~print_r(~list_querycolumns('database','personnes'))
Le résultat est alors:
Array
(
[0] => Array
(
[name] => nom
[type] => varchar
)
[1] => Array
(
[name] => prenom
[type] => varchar
)
[2] => Array
(
[name] => age
[type] => int
)
[3] => Array
(
[name] => commentaire
[type] => text
)
)
Cette fonction a été créée initialement pour l'authentification. Il est bien évident qu'il faudrait qu'elle soit étoffée mais en gardant à l'esprit qu'elle sert à faire de la normalisation. Donc tout ajout doit se faire dans toutes les couches de bases de données.
next
Cette fonction, ainsi que ~prev() et ~getfirst() permet de créer un chaînage entre des pages présentant chacune une partie de liste. ~next() permet de créer le lien avec la page suivante.
Elle prend 5 paramètres:
- le numéro du premier élément
- le nombre d'éléments par page
- le nombre d'éléments dans la liste
- le code HTML à insérer si il y a une page suivante
- le code HTML à insérer si il n'y a pas de page suivante
prev
~prev() permet de créer le lien avec la page précédente
Elle prend 4 paramètres:
- le numéro du premier élément
- le nombre d'éléments par page
- le code HTML à insérer si il y a une page précédente
- le code HTML à insérer si il n'y a pas de page précédente
getfirst
~getfirst() permet dans le troisième paramètre des fonctions ~next() et ~prev() de connaitre le numéro du premier élément de la page suivante et précédente respectivement.
Elle ne prend pas de paramètre.
Exemple d'utilisation d'affichage d'une liste en plusieurs pages chaînées:
~set("pays",~array(
"Allemagne",
"Autriche",
"Belgique",
"Bulgarie",
"Chypre",
"Danemark",
"Espagne",
"Estonie",
"Finlande",
"France",
"Grèce",
"Hongrie",
"Irlande",
"Italie",
"Lettonie",
"Lituanie",
"Luxembourg",
"Malte",
"Pays-bas",
"Pologne",
"Portugal",
"République-Tchèque",
"Roumanie",
"Royaume-uni",
"Slovaquie",
"Slovénie",
"Suède"))
~set("first",~get_filenamevar(1))
~if(~get("first")=="",~set("first",0))
~set("pagesize",10)
~array_list(~get("pays"),~get("first")+1,~get('pagesize'),
"LM",<![LM[<tr><td>~array_fld('key')</td><td>~array_fld('current')</td></tr>]LM]>,
"LF","<table>",
"LL","</table>"
)
<table>
<tr>
<td>~prev(~get('first'),~get('pagesize'),
<![PREV[<a href="~relative_templeet()~get_dirname()~get_filenamevar(0),~getfirst(),.~get_extension()">
<input type="image" src="~imagepath()auth/icons/left_arrow.png"/></a>
]PREV]>
,'pas de page précédente')</td>
<td>~next(~get('first'),~get('pagesize'),~count(~get("pays")),
<![NEXT[
<a href="~relative_templeet()~get_dirname()~get_filenamevar(0),~getfirst(),.~get_extension()">
<input type="image" src="~imagepath()auth/icons/right_arrow.png"/></a>
]NEXT]>,'pas de page suivante')</td>
</tr>
</table>
Télécharger
FAQ
