IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

DIDACTITIEL ISAPI AVEC LES COMPOSANTS INTERNET DE DELPHI 5/6/7 enterprise


précédentsommairesuivant

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 :

 
Sélectionnez
<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 :

 
Sélectionnez
<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 :

 
Sélectionnez
<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 :

Image non disponible

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

 
Sélectionnez
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;

précédentsommairesuivant

Ce document est issu de https://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.