IV. Gestion dynamique des données : répondre à une entrée de l'utilisateur▲
Les entrées d'un utilisateur se font par des formulaires <form>. Il existe deux méthodes pour passer des paramètres par un formulaire : GET ou POST.
- La principale différence réside dans le fait qu'avec la méthode GET, tous les paramètres seront affichés dans l'adresse HTTP envoyée au serveur : « http://mydomain/MyIsapi.dll/ShowName?firstname=Ornella&Lastname=Muti ». Ceci est un exemple, (Ornella Muti donc ;-) que nous allons utiliser, par le plus grand des hasards, par la suite.
D'autre part, la taille de la ligne des paramètres sera limitée à 255 caractères.
Le paramètre renvoyé à la DLL par le serveur HTTP sera du type QueryFields. - La méthode POST entraînera une adresse HTTP sans paramètre affiché : http://mydomain/MyIsapi.dll/ShowName. Le paramètre sera lui du type ContentFields. Le serveur Web ne renvoie tout d'abord que 48 K. Si vous avez un Contenfield plus long,regardez ici.
Le formulaire comporte deux paramètres principaux : une méthode et une action. La méthode est soit POST soit GET. L'action est l'appel à la procédure qui sera traitée par notre ISAPI. La formulation HTML est la suivante :
<FORM method="GET" action="/scripts/myisapi.dll/searchname">Notre formulaire contiendra des champs. Ce sont les valeurs de ces champs, entrées par l'utilisateur, qui seront récupérées et traitées par notre DLL. La formulation HTML :
<INPUT type="text" name="NOM" value="">Ici p.ex., c'est le paramètre name qui sera transmis à la DLL. Nous allons donc essayer de passer ce formulaire à une nouvelle action de notre DLL que l'on nommera searchname avec la méthode POST. Le code de notre nouvelle page HTML :
<html>
<body>
<form method="POST" action="/scripts/myisapi.dll/searchname">
<p>Prénom: <input type="text" name="FIRSTNAME" value=""><br>Nom : <input type="text" name="LASTNAME" value="">
<input type="submit" value="Envoyer">
</p>
</form>
</body>
</html>Notre DLL devra maintenant traiter cette requête Web. Les paramètres passés par la requête seront récupérés par Request.ContentFields.Values['FIRSTNAME'] (Ornella) et Request.ContentFields.Values['LASTNAME'] (Muti).
Avec la méthode GET, comme vu plus haut, nous aurions récupéré ces paramètres par Request.QueryFields.Values['FIRSTNAME']…
Nous allons donc créer cette nouvelle action SearchName :

Vous remarquerez que cette nouvelle action ne possède pas de « Producer », car nous allons créer notre page HTML dynamiquement. Voici le code de cette nouvelle action
procedure TWebM.WebMSearchNameAction(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
Var S:TStringList;
begin
S:=TStringList.Create;
Try
S.Add('<HTML><BODY>');
Adresses.connected:=True;
Query1.SQL.Clear;
Query1.SQL.Add('Select Nom, Prenom, Lieu from NOM where prenom=');
Query1.SQL.Add(QuotedStr(Request.Contentfields.Values['FIRSTNAME']));
Query1.SQL.Add(' and nom=');
Query.SQL.Add(QuotedStr(Request.ContentFields.Values['LASTNAME']));
Query1.SQL.Add(' order by Nom, Prenom);
Query1.Open;
If Query1.RecordCount=0 then
S.Add('Enregistrement introuvable...')
Else
Begin
While not Query1.Eof do
Begin
S.Add(Query1.FieldByName('Nom').AsString+' ');
S.Add(Query1.FieldByName('Prenom').AsString+' ');
S.Add(Query1.FieldByName('Lieu').AsString);
//Retour à la ligne
S.Add('<BR>');
Query1.Next;
end;
end;
Query1.Close;
S.Add('</HTML></BODY>');
Adresses.Connected:=False;
Handled:=True;
Finally
//On renvoie la page HTML construite (S)
Response.Content:=S.Text;
S.Free;
end;
end;

