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

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

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


précédentsommairesuivant

4. 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.