LINUX:MediaWiki - SMW - Requête: Personnes
But
On constitue diverses requêtes.
Liste des adresses
Voici une requête qui affiche sous forme de tableau des adresses. On crée une page nommée "PERSONNE:Liste adresses" et on met le texte suivant:
=Liste des adresses= {{#ask: [[category:PERSONNE:Adresse]] |?Adresserue=Rue |?Numerorue=N° |?Codepostal=CP |?Commune |?Codepays=Pays |limit=50 |format=table |mainlabel=Page |sort=Commune }}
Cette requête se présente comme un appel à un modèle mais au lieu d'un modèle, on appelle la fonction '''"#ask:"'''. Elle divers paramètres.
Le premier paramètre spécifie que l'on va chercher parmi les pages reprises dans la catégorie des adresses: "category:PERSONNE:adresse" leurs propriétés.
Les lignes qui suivent précédées d'un point d'interrogation, nomme les différentes propriétés qui seront présentes dans le tableau. Derrière le signe d'égalité, on peut spécifier l'entête de la colonne correspondante.
Quelques options suivent:
- limit=50 : On limite la liste à 50 lignes.
- format=table : Le format se présente sous forme de tableau.
- mainlabel=Page : L'intitulé de la première colonne sera "Page"; elle regroupe le nom des pages. Par défaut, cette entête est vide.
- sort=Commune : Le tri est fait selon le nom des communes.
Le résultat affichera une liste ressemblant à celle-ci.
Liste des personnes
Voici une requête analogue qui concerne les personnes. On crée une page nommée "PERSONNE:Liste personnes" et on met le texte suivant:
=Liste des personnes= {{#ask: [[category:PERSONNE:Personne]] |?Nomutilisateur=Utilisateur |?Nomfamille=Nom |?Prenomfamille=Prénom |?Emailutilisateur=Email |?GSM |?Telephoneutilisateur=Téléphone |limit=50 |format=table |mainlabel=Page |sort=Nomutilisateur }}
Voici le résultat:
Recherche d'adresses
Mais dès que le nombre d'adresses devient important, il est difficile de retrouver celle qui nous intéresse.
On va donc créer le nécessaire. Pour y arriver, on doit créer un formulaire et un modèle.
On crée la page "Formulaire:RequeteAdresse" pour le formulaire et on met de texte suivant:
<includeonly> <div id="wikiPreview" style="display: none; padding-bottom: 25px; margin-bottom: 25px; border-bottom: 1px solid #AAAAAA;"></div> {{{for template|RequeteAdresse|label=Fiche de Recherche d'Adresses}}} {{{info|query form at top}}} {| class="formtable" ! Pays: | {{{field|Codepays|input type=text}}} |- ! Commune: | {{{field|Commune|input type=text}}} |- ! Rue: | {{{field|Adresserue|input type=text}}} |} {{{end template}}} </includeonly>
On retrouve le même canevas présenté dans l'article précédent.
On crée ici sous forme de tableau, trois zones afin d'effectuer une recherche sur le pays, la commune et la rue. On donne le titre "Fiche de Recherche d'Adresses" à ce tableau. Ce formulaire sera utilisé par le modèle "RequeteAdresse" ("template"). On désire que ce tableau se trouve au dessus de la page: "{{{info|query form at top}}}".
Ensuite, on crée la page "Modèle:RequeteAdresse" pour le modèle et on met de texte suivant:
{{#ask: [[category:PERSONNE:Adresse]] {{#if:{{{Commune|}}}| [[Commune::~{{{Commune}}}*]]}} {{#if:{{{Codepays|}}}| [[Codepays::~{{{Codepays}}}*]]}} {{#if:{{{Adresserue|}}}| [[Adresserue::~*{{{Adresserue}}}*]]}} |?Adresserue=Rue |?Numerorue=N° |?Codepostal=CP |?Commune |?Codepays=Pays |format=table |mainlabel=Page |sort=Commune |limit=10 }}
On retrouve un requête proche de celle présentée plus haut pour lister les adresses. Mais ici, on ajoute trois conditions qui font appel à la fonction "#if". Chacune concerne le traitement des trois champs du formulaire. Le premier teste le champs du formulaire "Commune" et recherche parmi les pages de la catégorie "PERSONNE:Adresse", celles dont la propriété "Commune" commence par le contenu du champs "Commune" pour autant que le champs soit rempli (barre verticale). Les trois conditions doivent être remplies si leur champs respectif est rempli.
Maintenant on introduit dans une page quelconque la ligne suivant qui va ajouter un lien vers cette recherche:
[[Special:RunQuery/RequeteAdresse|Recherche d'adresses]]
On retrouvera ce type d'appel dans l'article suivant mais sous une autre forme.
Voici un exemple de recherche: