Extension:Page Forms/Créer des formulaires de requête
Les formulaires peuvent également être utilisés pour les requêtes, par opposition à l'ajout ou à l'édition de données.
To do so, use the Special:RunQuery
page, which displays a form in a manner similar to Special:FormEdit
, but with no associated 'target page'.
Au lieu de cela, lorsque l'utilisateur soumet le formulaire en appuyant sur le bouton Run query, il voit à quoi ressemble le modèle lorsqu'il est affiché avec les valeurs qu'il a entrées.
Le modèle utilisé par le formulaire doit très probablement contenir une ou plusieurs requêtes (utilisant les requêtes en ligne Semantic MediaWiki, les requêtes Cargo, les requêtes External Data, etc.) pour demander les données en utilisant les valeurs que l'utilisateur a entrées.
Exemple de formulaire de requête - Essayez-le !.
Bouton Run query
Par défaut, le bouton Run query apparaît au bas des formulaires si vous accédez par Special:RunQuery
.
Vous pouvez modifier l'emplacement et le texte de ce bouton, en utilisant la balise "{{{standard input|run query}}}
" (ou "{{{standard input|run query|label=...}}}
", etc.) dans la définition du formulaire.
Voir la partie balise standard input (du manuel de Définition des formulaires) pour plus d'informations.
Formulaire de requête en haut
Si vous ajoutez le paramètre "query form at top
" à la balise {{{info}}}
, le champ d'entrée de la requête apparaîtra en haut de la page de résultats, au lieu du bas.
Créer des liens vers les formulaires de requête
Une fois le formulaire de requête créé, vous pouvez le lier en utilisant une syntaxe semblable à :
[[Special:RunQuery/nom du formulaire de requête]]
Cependant, la solution préférée, parce qu'elle est plus facile et plus puissante, est d'utiliser la fonction d'analyse syntaxique #queryformlink
.
Un appel de base à cette fonction ressemblerait à :
{{#queryformlink:form=nom du formulaire de requête}}
Voici la syntaxe complète de #queryformlink
:
{{#queryformlink:form=|link text=|link type=|query string=chaîne des paramètres de la requête|tooltip=|popup}}
Les paramètres sont presque identiques à ceux utilisés par #formlink
; pour une explication complète des paramètres, voir utiliser #formlink
(manuel Lier des formulaires).
Inclure des formulaires de requête
Vous pouvez également intégrer un formulaire de requête dans une autre page. Pour faire cela, ajoutez ce qui suit à une page où vous souhaitez que le formulaire de requête apparaisse :
{{Special:RunQuery/nom du formulaire de requête}}
Vous pouvez également intégrer plusieurs formulaires Special:RunQuery
sur la même page.
Précharger les données de la requête
Si les données de requête doivent être préchargées, le Special:RunQuery
doit suivre la convention :
Special:RunQuery/nom du formulaire?nom du modèle[nom de l'élément]=valeur
Par exemple, comme ceci :
http://discoursedb.org/wiki/Special:RunQuery/Item_query?Item_query[author]=John
La construction "nom de l'élément
" pourrait causer un problème avec le balisage du wiki, et donc les crochets — [
et ]
— peuvent être remplacées soit par %5B
et %5D
, ou par [
et ]
).
Enfin, assurez-vous que la casse dans la chaîne de la requête correspond bien à ce qui est déclaré dans le formulaire (par exemple, {{{for template|Item_query}}}
doit correspondre à ?Item_query[author]=John
et {{{for template|item_query}}}
doit correspondre à ?item_query[author]=John
).
Par ailleurs, vous pouvez précharger les données en utilisant le paramètre default=
pour les champs de formulaire.
Afficher les résultats automatiquement
La technique ci-dessus mettra les valeurs prédéfinies dans le formulaire, mais l'utilisateur devra toujours appuyer sur le bouton Run query pour voir les résultats de sa requête.
Si vous voulez aussi que les résultats soient affichés automatiquement, il suffit d'ajouter _run
à la chaîne de la requête, ainsi :
http://discoursedb.org/wiki/Special:RunQuery/Item_query?Item_query[author]=John&_run
Exemple de item query - Essayez-le !
Comme précédemment, la façon recommandée de se lier à une telle page en interne se fait avec #queryformlink
; un tel appel ressemblerait à ceci :
{{#queryformlink:form=Item_query|query string=Item_query[author]=John&_run}}