Cours CPTIC 158
Bases de données sur Internet
16 et 17 avril 2002

Généralités

ASP signifie Active Server Pages. C'est la solution proposée par Microsoft pour créer des pages Web dynamiques. Bien que ce produit soit conçu pour ne tourner que sur des serveurs Microsft, il existe des clônes, tel que Instant ASP de Halcyon Software ou Chili!ASP de Chili!Soft.

Une page ASP est en fait une page HTML à laquelle une partie de code de programmation a été ajoutée, et qui sera exécutée sur la serveur, avant que celui ne rende une page HTML standard au Client.

Ce code peut être programmé en divers langaage de script, tel VBScript, JScript, PerlScript ou Python. Ce cours se contentera de présenter l'utilisation de VBScript dans le contexte ASP.

Intégration de HTML et de VBScript dans une page ASP

Les délimiteurs <% et %> permettent de marquer les parties de code à interpréter dans une page avant de la transettre au client.

La syntaxe <%= NomDeVariable %> est un raccourci pour <% Response.Write NomDeLaVariable %> (voir plus loin l'information sur l'objet Response)

<% option explicit %>
<html>
   <head>
      <title>Bonjour</title>
   </head>

<%

DIM Moment

If DatePart("h",Time()) < 12 Then
   Moment = "le matin"
ElseIf DatePart("h",Time()) < 18 Then
   Moment = "l'apr&egrave;s-midi"
Else
   Moment = "le soir"
End If

%>


   <body bgcolor="#ffffff">
      <p>Bonjour,</p>
      <p>Nous sommes le <%= Date() %></p>
      <p>Il est <%= Time() %>, c'est <%= Moment %>.</p>
   </body>
</html>

Inclusion de fichiers

Les inclusions côté serveur permettent d'écrire une seul fois du code qui pourra ensuite être réutilisé, par exemple l'inclusion de d'une barre de boutons de navigation commune à toutes les pages du site, ou bien l'ouverture de la connexion vers une base de donnée, etc.

barrenav.asp
<html>
   <head>
      <title>Une page du site</title>
   </head>

   <body bgcolor="#ffffff">
<!--#include file="barrenav.asp" -->
      <h2>Contenu de la page</h2>
   </body>
</html>
<div align="center">
   <p>
      <a href="main.html">Page principale</a> |
<a href="info.html">Informations</a> |
<a href="liens.html">Liens</a><br>
   (ps: ces liens ne fonctionnent pas, inutile d'essayer)
     </p>
</div>

Commentaires

Un commentaire en ASP commence par une apostrophe, et il doit évidemment se trouver dans la partie destinée au serveur. Il ne faut pas confondre avec le commentaire html <!-- -->

<html>
   <body>
      <!-- Ceci est un commentaire HTML -->

<%
' Ceci est un commentaire en ASP
%>

   </body>
</html>

Syntaxe et déclaration des variables

En insérant <% option explicit %> au début de la page ASP, on s'impose l'obligation de devoir déclarer systématiquement toutes les variables que l'on va utiliser. On pourrait penser qu'il s'agit là d'une pointe de masochisme, mais en fait, cela permet de faire apparaître un nombre certain d'erreur de manière explicite, tel que faute de frappe dans les noms de variables, etc.

Les nom de variables commencent obligatoirement par une lettre. Les caractères suivants peuvent être des lettres, des chiffres ou le caractère de soulignement. Les noms ne peuvent pas dépasser 255 caractères, les accents ne sont pas autorisés, et les majuscules et minuscules sont confondues. On ne peut pas non plus utiliser un mot réservé comme nom de variable:

Ma_premiere_variable OK
Ma premiere Variable Faux ce nom contient des espaces
20chaud Faux commence par un chiffre
Critère Faux Contient un caractère accentué
Dim Faux Ceci est un mot réservé
MAVARIABLE , MaVariable et mavariable représente tous les trois la même variable

La déclaration des variables se fait à l'aide de l'instruction Dim. Il n'est pas possible de typer les variables lors de leur déclaration. Par contre, elles sont typée dès que quelque chose leur a été affecté. Cela peut jouer des tours avec des comparaisons entre chaînes de caractères et nombres. La fonction TypeName permet de connaître le type de la variable.

<% option explicit %>
<html>
   <head>
      <title>Test du type des variable</title>
   </head>
<%
DIM Age
DIM Nom
%>

   <body bgcolor="#ffffff">
      <p>Avant affectation, le type de Nom est <%= TypeName(Nom) %></p>
<%
Nom = "Elie Coptaire"
Age = 29
%>

      <p>Apr&egrave;s affectation, le type de Nom est <%= TypeName(Nom) %></p>
      <p>et celui de Age est <%= TypeName(Age) %></p>
   </body>
</html>

Déclaration des tableaux

La déclaration de tableau se fait soit avec l'instruction Dim, soit en utilisant la fonction Array

<% option explicit %>

<html>
   <head>
      <title>Les jours et les mois</title>
   </head>

<%

DIM Mois
DIM Jour(6)
DIM j, m

Jour(0) = "dimanche"
Jour(1) = "lundi"
Jour(2) = "mardi"
Jour(3) = "mercredi"
Jour(4) = "jeudi"
Jour(5) = "vendredi"
Jour(6) = "samedi"

Mois = Array ("janvier","f&eacute;vrier","mars","avril","mai","juin", _
   "juillet", "ao&ucirc;t","septembre","octobre","novembre","d&eacute;cembre")
%>

   <body bgcolor="#ffffff">
<%
For Each m In Mois
   Response.Write m & "<br>"
Next
%>

      <hr>
<%
For j= LBound(Jour) To UBound(Jour)
   Response.Write Jour(j) & "<br>"
Next
%>

   </body>
</html>

Déclaration d'objets

Les objets se déclarent à l'aide de l'instruction Set

<%
DIM RS
Set RS = Server.CreateObject("ADODB.RecordSet")
%>

...

<%
Set RS = Nothing
%>

Instructions conditionnelles

If condition Then instruction If Age>=18 Then Gabarit="Adulte"
If condition Then
   insruction
End If
If Prenom="Elie" Then
   Vehicule = "Voiture"
End If
If condition Then
   insruction
Else
   instruction
End If
If a < b Then
   a = a*b
Else
   b = b-a
End If
If condition Then
   insruction
ElseIf condtion Then
   instruction
Else
   instruction
End If
If DatePart("h",Time()) < 12 Then
   Moment = "le matin"
ElseIf DatePart("h",Time()) < 18 Then
   Moment = "l'apr&egrave;s-midi"
Else
   Moment = "le soir"
End If
Select Case expression
Case valeur1
instruction
Case valeur2
instruction
...
Case valeurN
instruction
Dim Operation, Valeur1,Valeur2, Resultat
...
Select Case (UCase(Operation))
Case "ADDITION"
   Resultat = Valeur1+Valeur2
Case "SOUSTRACTION"
   Resultat = Valeur1+Valeur2
Case "MULTIPLICATION"
   Resultat = Valeur1+Valeur2
Case "DIVISION"
   Resultat = Valeur1+Valeur2
End Select

Instruction de boucles

Do While condition
   instruction
Loop
i=0
Do While i<10
   i=i+1
Loop
Tant que la condition est remplie, on reste dans la boucle.
Si la condition n'est pas remplie à l'entrée de la boucle, elle n'est jamais exécutée
Do Until condition
   instruction
Loop
i=0
Do Until i>=10
   i=i+1
Loop
On reste dans la boucle jusqu'à ce que la condition soit remplie.
Si la condition n'est pas remplie à l'entrée de la boucle, elle n'est jamais exécutée
Do
   instruction
Loop While condition
i=1
Do
   i=i*2
Loop While i<100
Tant que la condition est remplie, on reste dans la boucle.
La boucle est écxutée au moins une fois, dans la mesure où le test a lieu à la fin de la boucle
Do
   instruction
Loop Until condition
Do
   RS.MoveNext
Loop Until RS.eof
On reste dans la boucle jusqu'à ce que la condition soit remplie.
La boucle est écxutée au moins une fois, dans la mesure où le test a lieu à la fin de la boucle
While condition
   instruction
Wend
While Not RS.eof
   RS.MoveNext
Wend
Tant que la condition est remplie, on reste dans la boucle.
La boucle est écxutée au moins une fois, dans la mesure où le test a lieu à la fin de la boucle
For var=debut To fin
   instruction
Next
For i=0 To 10
   Response.Write i & "<BR>"
Next
Parcourir tous les nombre de début à fin,
et affecter cette valeur à la variable var
For Each n In Tableau
   instruction
Next
For Each nom In Table
   Response.Write nom
Next
Sert à parcourir les éléments d'un tableau ou d'une collection.