-   Introduction à ASP
 ASP ( Active Server Pages ) est une nouvelle technologie qui s'éxécute sur le 
 serveur. Le client ne reçoit que des instructions en Html. Cela élimine les problèmes de compatibilité qui apparaissent 
 parfois avec d'autres langages.
 Voici quelques différences entre les scripts côté client (par exemple 
Javascript) et les scripts 
côté seveur (par exemple VBScript en ASP):
-  le navigateur exécute les scripts côté client après avoir chargé 
complètement la page
-  Le code des scripts côté client fait partie de la page et peut donc 
être lu par l'utilisateur (par exemple via la commande Affichage/Code 
Source)
-  Le code côté client doit être pris en charge par le navigateur, et les 
différences entre navigateurs rendent parfois difficiles l'écriture des 
scripts
-  Le script côté serveur est exécuter par le serveur avant de 
transmettre au navigateur.
-  Le code d'un script côté serveur n'est pas transmis au navigateur, et 
donc pas lisible par l'utilisateur
-  Le script côté serveur est indépendant des possibilités du navigateur 
mais impose un équipement adéquat sur le serveur web
 Les scripts exécutés côté client et côté serveur peuvent être mélangés (on 
peut mettre du code ASP et Javascript dans la même page).
 L'idée générale est que les données sont créées avant d'être affichées sur 
 le client, de manière  active  et non  statique  comme c'est le cas avec HTML.
 Par exemple, si on souhaite afficher la date, avec le langage Html, il 
 faut réécrire l'instruction tous les jours alors qu'avec ASP, il suffit 
 de lui dire d'afficher la date du jour.
 Un fichier ASP est nommé avec l'extension .asp
 Plusieurs langages peuvent être utilisés pour les scripts ASP. Tous les 
 exemples de ce cours sont faits avec VBScript.
 
 Le but de ce cours est de faire une introduction rapide à ASP, et surtout 
 de montrer comment consulter une base de données via la web (lecture 
 totale ou partielle, ajout et modifications de données). Il ne se veut en 
 aucun cas exhaustif.
 
 
 
-   Quelques notions de VBScript 
 
  
-  Les variables  
 Il n'y a aucune différence entre les majuscules et les minuscules. Il 
n'est donc pas possible d'utiliser deux variables différentes définies par 
 toto et  TOTO.
 Pour éviter les fautes de frappe, on conseille de déclarer les variables 
utiliser dans le script au début:
 -  <% @LANGUAGE = VBScript %>
-  <%
-  Option Explicit
-  Dim var, truc
 Si une variable non déclarée est utilisée (par exemple 
troc le serveur le dit à l'exécution du script).
 On conseille également de trouver des noms de variables explicites 
(éviter var1, var2, var3,...)
  
 
-  Un simple script 
 
     - <html>
- <body>
- Résultat:<br>
- <%
- intS =60 * 60
- %>
- Il y a
- <%
- Response.Write intS
- %>
- secondes dans une heure
- </body>
- </html>
 le script
 
 Le résultat s'affiche ainsi:
 Résultat:
 Il y a 3600 secondes dans une heure
 
 La ligne 4 contient les caractères <% qui indiquent le début d'un bloc de 
script  server-side  (éxécuté côté 
serveur).
 Le couple <% %> délimite les commandes de scripts issues de VBScript 
(Visual Basic Script) . C'est le langage interprété par défaut par le 
serveur web de Micrsoft (IIS).
 La cinquième ligne insère une commande qui assigne le résultat de la 
multiplication 60 * 60 à la variable intS.
 On ferme ensuite le bloc de script.
 
 On voit sur cet exemple qu'une page ASP correspond à un document HTML 
auquel on a ajouté des commandes ASP. Ces instructions permettent de 
contrôler l'affichage du texte et des balises HTML qui se trouvent à l'exterieur 
des blocs de scripts.
Le module ASP détermine ainsi l'apparence des pages web chaque fois qu'un 
fichier portant l'extension .asp est chargée par le navigateur.
 
-   Que reçoit le client ? 
 Le script suivant constitue un bon exemple pour montrer comment combiner 
 Html et VBscript dans la fenêtre du navigateur, et pour voir ce que 
 reçoit le client.
 Il permet d'afficher l'heure du serveur, et le temps qui reste jusqu'à l'an 
 2000 (ou qui s'est écoulé depuis).
 
 
 -  <% @LANGUAGE = VBScript %>
-  <%
-  Option Explicit
-  Response.Expires = 0
-  Dim dtmTime, dtmLater, dtmDiff
-  dtmTime = Time
-  dtmLater = DateAdd("h",1,dtmTime)
-  dtmDiff = DateDiff("h",Now,#1/1/2000#)
-  %>
-  <html>
-  <body>
-  Bonjour, <br>
-  L'heure du serveur : <% = dtmTime %> <br>
-  Dans une heure, il sera <% = dtmLater %> <br>
-  <%
-  If dtmDiff > 0 Then
-  Response.Write "Encore " & dtmDiff & "heures"
-  Response.write "jusqu'à l'an 2000. <br>" & VbCrLf
-  ElseIf dtmDiff < 0 Then
-  Response.Write "Déja " & Abs(dtmDiff) & " heures passées depuis "
-  Response.Write "le début de l'an 2000. <br>" & VbCrLf
-  Else
-  Response.Write "L'an 2000 vient juste de commencer. <br>" & VbCrLf
-  Response.Write "<b> Bonne année ! </b><br>" & VbCrLf
-  End If
-  %>
-  </body>
-  </html>
 le script
 
 Voici un exemple de ce que l'utilisateur peut avoir à l'écran:
 
 Bonjour
 L'heure du serveur : 10:50:23
 Dans une heure, il sera  11:50:23
 Déja 9058 heures passées depuis le début de l'an 2000
 
 S'il consulte le code source de la page, voilà ce qu'il aura:
 
 <html>
 <body>
 Bonjour <br>
 L'heure du serveur : 10:50:23 <br>
 Dans une heure, il sera  11:50:23<br>
 Déja 9058 heures passées depuis le début de l'an 2000
 </body>
 </html>
 
 On remarque ainsi que le client ne reçoit que du Html. Regardons le script de plus près 
 La première inscription
      <% @LANGUAGE = VBScript %>  permet de 
     paramétrer le langage de script utilisé pour toute la page.
     (c'est le langage utilisé par défaut par le serveur web Microsoft, 
     mais ce n'est pas le cas pour tous les serveurs et il faut le 
     préciser par sécurité)
 
 Ensuite,  Option Explicit   demande au script de vérifier la déclaration de toutes 
     les variables, avec les commandes Dim, Private ou Public.
     Cela oblige à déclarer toutes les variables utilisées dans la page (et 
     cela permet de vérifier qu'il n'y a pas de faute de frappe dans le 
     nom des variables).
 
 La plupart des navigateurs conservent les pages transférées dans un 
     cache. Cela permet d'améliorer les performances: en retournant sur 
     une page déja affichée, le navigateur ne se connecte plus au serveur 
     mais charge le document à partir de son cache, c'est à dire en local.
     Cela pose un problème lorsqu'il s'agit de traiter des pages dynamiques 
     dont le contenu évolue régulièrement.
     On peut demander au navigateur de supprimer le document de leur cache 
     après un laps de temps déterminé.
     Avec VBScript, on attribue une valeur, en minutes, à la propriété 
     Expires de l'objet Response.
     Ici, on demande que la page ne soit pas sauvegardée avec la commande 
      Response.Expires = 0  .
 Si l'on voulait que le navigateur garde la dernière version de la 
     page jusqu'à une date fixée, on aurait utilisé la commande 
     ExpiresAbsolute de l'objet Response:
      Response.ExpiresAbsolute= #January 1,2002 00:00:00# 
      indiquait que la page expire le 1er Janvier 2002
 Rmq : les instructions Response.Expires et Response.ExpiresAbsolute doivent être indiquées en début de document, avant tout 
     contenu envoyé vers le client.
 
 Ensuite, on déclare les variables utilisées dans le script:
 Dim dtmTime, dtmLater, dtmDiff
 
     On leur assigne ensuite des valeurs: 
       dtmTime = Time attribue l'heure du serveur 
     à la variable dtmTime
     dtmLater = DateAdd("h",1,dtmTime) ajoute une 
    heure à dtmTime et attribue cette valeur à la variable dtmLater 
     dtmDiff = DateDiff("h",Now,#1/1/2000#) 
    calcule la différence entre l'heure actuelle et le 1er Janvier 2000
    
    
    Il y a maintenant des valeurs pouvant être affichées. Cela se fait par 
    la commande  <% Response.Write( text) %> 
     
    À la ligne 9, le bloc de script se referme.
    De la ligne 10 à la ligne 14, on a le code Html en intégrant les 
    variables dtmTime et dtmLater.
    Le contenu varie en fonction de l'heure et de la date du serveur.
    On retrouve l'instructions conditionnelle  If ... Then ... 
    ElseIF ... Then ... Else ... End If.
     Rmq : 
    La fonction Abs inscrit la valeur absolue de dtmDiff sur 
    la page.
    L'instruction Response.Write(text) n'est pas capable d'ajouter 
    automatiquement un retour à la ligne dans le texte, ou dans le code 
    Html.
    On utilise alors la balise <br> ou, si on souhaite insérer un 
    retour à la ligne directement dans le code Html, on utilise la commande 
    VBScript VbCrLf.
    
 
 
-  Les instructions conditionnelles  
 
    -  If 
 If  condition  Then  instructions  ( Else  
    autresinstructions )
 
    - If Hour(Now) < 12 Then 
-   Response.Write "Good morning"
- ElseIf Hour(Now) >= 18 Then  
-   Response.Write "Good evening"
- Else
-  Response.Write "Good afternoon"
- End If
 le script
 
 
-  Select Case 
 
     -    Select Case Hour(Now)
-      Case 0,1,2,3,4,5,6,7,8,9,10,11
- 	 Response.Write "Good morning"
-        Case 12,13,14,15,16,17
- 	 Response.Write "Good afternoon"
-        Case Else
- 	 Response.Write "Good evening"
-         End Select	 
 le script
 
 
 
 
 
-  Les boucles 
 
    -  For
 
        - For i=0 to 5
-  Response.Write "Bonjour !"
- Next
 
-  While .. Wend
 
        - i=0
- While i <=5 
-    Response.Write "Bonjour !"
-    i = i+1
- Wend
 
-  Do .. Loop 
 
        - i = 1
- Do
- Response.Write "Bonjour !"
-  i = i+1
- Loop Until i > 5
 On peut remplacer la dernière ligne par
    - Loop While i<=5
 
-  For ... Each 
 
        -  For each item in Request.Form
-  Response.Write Request.Form(item)
-  Next
 
 On peut quitter une boucle sans tenir compte d'autres conditions:
-  For i = 1 to 90
-  ...
-  if temp > 60 then exit for 
-  ... 
-  next 
 On peut également utiliser l'instruction  exit do  
pour quitter une boucle do ... loop.
 
 
-  Les procédures 
Il existe deux types de procédures:  sub  et  function. 
 function  retourne une valeur, et  sub  non.
 
 Un exemple de procédure  sub  :
    -  Sub DisBonjour()
-  response.Write "Bonjour !"
-  End Sub
 
 Les parenthèses qui suivent la procédure ne sont pas obligatoires, car il 
n'y a aucun paramètre supplémentaire.
On continue néanmoins à les mettre, pour la cohérence du code.
 Il faut également remarquer que le code n'est pas exécuté. Quelque part 
dans la page ASP, il faudra appeler la procédure pour 
l'exécuter:
 
 Disbonjour
 Quand on appelle une procédure sub dans la page, il faut omettre les 
parenthèses (erreur courante).
À l'inverse, une procédure function devra toujours être appelée avec  
ses parenthèses pour lui passer des paramètres.
 
 Un exemple de procédure  function  :
 
    -  <% 
-  Function DisBonjour(nFois)
-  For i=1 to nFois
-  strTemp = strTemp & "Bonjour ! <br> "
-  Next
-  DisBonjour = strTemp 
-  End Function
-  
-  strHello = DisBonjour(10)
-  Response.Write strHello 
-  %> 
 le script
 
 La procédure DisBonjour se déroule de la ligne 2 jusqu'à la 7. Elle prend 
un paramètre intitulé nFois qui indique le nombre de fois où la chaine 
 Bonjour !  doit s'afficher. Le résultat de chaque passage de la 
boucle constitue la valeur de retour de la fonction.
Pour l'obtenir, il suffit d'assigner cette chaine de caractères au nom de 
la fonction (ligne 6):
 
 DisBonjour = strTemp
 La chaine temporaire est générée à partir de la boucle For, 
déjà vue.
Chaque fois que vous ajoutez une valeur dans une variable, vous devez 
l'additionner tout en conservant la (les) valeur(s) précédente(s) qu'elle 
contient.
Dans l'exemple, ca donne
 
 strTemp = strTemp & "Bonjour ! <br> "
 La dernière instruction sert à appeler la fonction. 
Pour cela, il faut passer une information entre les parenthèses.
Cela donne
 
 strHello = DisBonjour(10)
 Cette ligne génère une chaine de caractères contenant dix 
fois  la ligne Bonjour !.
  
    
-   Objets / Propriétés  
 ASP héberge un certain nombre objets incorporés, destinés au 
 programmeur. Ces objets peuvent être appelés depuis le code, sans syntaxe 
 spéciale. Chaque objet a différentes propriétes, et différentes méthodes. 
 On a notamment
     -  L'objet Session
 Contient les données relatives à un utilisateur. Si l'utilisateur 
     ne fait rien pendant 20 mn, les données sont supprimées.
         -  Session.SessionID  renvoie le numéro d'ID de la 
         session en cours
-   Session.Pause règle ou renvoie la durée de la 
         session en minutes. La valeur par défaut est de 20mn.
 
-  L'objet Request 
 Contient les réponses de l'utilisateur à certaines requêtes. 
         -   Request.Form contient les réponses au formulaire 
         présent sur la page. 
-   Request.QueryString contient les données transmises 
         en tant que partie d'un hyperlien.
-   Request.ServerVariables contient les variables 
         d'environnement du serveur. 
-    
 
-  L'objet Response 
 Gère le contenu retourné par ASP à un explorateur. 
          -   Response.Write écrit la sortie dans la page HTML. On 
          se sert du signe = comme abréviation.
-   Response.Expires  définit le laps de temps qui doit 
         s'écouler avant qu'une page mise en cache n'expire. 
-   Response.ExpiresAbsolute définit une date et une 
          heure pour l'expiration d'une page mise en cache 
          (Responses.ExpiresAbsolute= #date# ). 
-   Response.Buffer détermine si la page en sortie est 
         placée en tampon (True/False). 
-   Response.Redirect demande au client de se connecter 
         à une URL différente (Response.Redirect URL) 
 
-  L'objet Server 
  
        -   Server.ScriptTimeout définit la duré pendant laquelle 
        un script peut s'éxécuter avant qu'un message ne s'affiche. 
        (Server.ScriptTimeout = ... ). 
-   Server.HTMLEncode  fournit le code HTML pour une 
        chaine donnée. 
-   Server.URLEncode  fournit un codage URL pour une 
        chaine donnée.
 
   
 
-  ASP et d'autres applications 
 
 
- ASP et Word 
  On peut forcer le client à démarrer une application telle que le 
  traitement de texte Microsoft Word pour afficher un document.
 
  
  
- <% @LANGUAGE = VBScript %>
- <%
- Response.ContentType = "application/msword"
- Response.Expires = 0
- %>
- Bonjour,
- Ce message s'affiche avec Microsoft Word.
- Notez que les balises Html, <br> par exemple, ne sont pas interprétées.
 le script
 
 Si le navigateur est  Internet Explorer, il lance automatiquement 
l'environnement d'édition du traitement de texte Microsoft Word.
 Si le navigateur est  Netscape , il y a plusieurs possibilités, 
suivant la configuration du programme:
    -  Un message d'alerte apparait demandant si vous souhaitez ouvrir le 
    fichier ou le sauvegarder sur votre disque dur. Le pplus simple est de 
    l'ouvrir immédiatement pour le consulter
-  La boite de dialogue Enregistrer sous  s'ouvre et il ne 
    reste plus qu'à indiquer un emplacement sur le disque dur pour 
    transférer le fichier.
-  Microsoft Word démarre automatiquement et affiche le contenu du 
    fichier
 
 
 
 
-  ASP et Excel 
 On peut également demander l'affichage données d'un fichier 
Excel:
 
 
- <%@ LANGUAGE="VBSCRIPT"%>
- <html><head><title>Lire dans un fichier Excel</title></head>
- <body>
- <% 
 
 On déclare le langage et l'en-tête de la page Html
 
 
- ' FUNCTIONS
- ' =========
- Function Nblignes(max)
- i=1
- if (max<0) then max=999 end if
- while ((sheet.Cells(i,1).Value <> "") AND (i<=max))
- i=i+1
- wend
- Nblignes = i - 1
- End Function
- Function Nbcolonnes(max)
- i=1
- if (max<0) then max=999 end if
- while ((sheet.Cells(1,i).Value <> "") AND (i<=max))
- i=i+1
- wend
- Nbcolonnes = i - 1
- End Function
 
 Deux fonctions permettant de calculer le nombre de lignes et de colonnes 
non vides dans le fichier (il n'y a pas de .EOF dans un fichier Excel).  
On propose de rentrer une valeur maximale. de lignes ou colonnes 
considérées. Par défaut, on 
considérera au plus 999 lignes et 999 colonnes.
 
 
- ' CORPS DU SCRIPT
- ' ================
- fichier = "c:\Inetpub\wwwroot\AnneFredet\CoursASP\essaiexcel\Classeur1.xls"
 
 On donne l'emplacement du fichier Excel cible (ici on considère le fichier 
sur le site publié)
 
 
- 'ouvrir excel et fichier
- Set monexcel = CreateObject("Excel.Application")
- monexcel.Workbooks.Open fichier
- Set sheet = monexcel.ActiveWorkbook.Sheets(1)
 
 On déclare la connection avec le fichier
 
 
- maxlignes = 100
- maxcolonnes = 100
- sline = Nblignes(maxlignes)
- scol = Nbcolonnes(maxcolonnes)
- %>
 
 On calcule le nombre de lignes et de colonnes du fichier, avec un maximum 
situé à 100.
 
 
- Le fichier est ouvert.<br><br>
- <% If sline < maxlignes then       %>
- Il contient <%=sline %> lignes (avant la première case vide dans la colonne 1)  <br>
- <%   Else    %>
- Ce fichier contient au moins <%= maxlignes %> lignes et nous n'allons 
afficher que les <%=maxlignes %> premières.
- <br>
- <%   End If   %>
- <%  If scol < maxcolonnes then   %>
- Il contient <%=scol %> colonnes (avant la première case vide dans la ligne 1) <br><br>
- <%   Else   %>
- Ce fichier contient au moins <%= maxcolonnes %> colonnes et nous 
n'allons afficher que les <%=maxcolonnes %> premières
- <br><br>
- <%   End If    %>
 
 On informe le client du nombre de lignes et de colonnes qui vont être 
affichées.
 
 
 
- <table border=2>
- <tr>
- <th> 1ère colonne </th>
- <th> 2ème colonne </th>
- </tr>
- <%   For i =1 to sline   %>
- <tr>
- <%   For j = 1 to scol   %>
- <td>
- <%   Response.Write sheet.Cells(i,j)   %>
- </td>
- <%   Next   %>
- </tr>
- <%   Next   %>
- </table>
- <br> <br> <br> On a affiché le contenu de la base<br> <br>
 
 On affiche les données du fichier
 
 
- <%	
- 'monexcel.ActiveWorkbook.Save
- monexcel.ActiveWorkbook.Close
- monexcel.Application.Quit
- Set monexcel = Nothing
- %>
- Le fichier est maintenant fermé.
- </body> 
- </html> 
 On ferme tout (connection et page Html)
 
 le script
 
 
  
 
-  Se renseigner sur l'utilisateur 
 
   
 
-  Récupérer des données sur l'utilisateur 
 On peut récupérer de nombreuses données sur une personne qui se connecte 
 a votre site web:
     -  L'adresse IP du visiteur
 <% IP = request.servervariables("REMOTE_ADDR")%>  -
     Pour l'afficher: <% response.write(IP) %>
 <% IP = request.servervariables("REMOTE_ADDR")%>
     par exemple:votre numéro IP est  
      <% response.write(IP) %>
-  le type de navigateur et sa version 
 <%navigateur=request.servervariables("HTTP_USER_AGENT") %>   - 
     Pour l'afficher: <% response.write(navigateur) %>
 <%navigateur=request.servervariables("HTTP_USER_AGENT") %>
     par exemple: votre navigateur est :  <% response.write(navigateur) %>
-   l'URL de provenance du visiteur
 <% origine=request.servervariables("HTTP_REFERER")%>  -
     Pour l'afficher: <% response.write(origine) %>
 <% origine=request.servervariables("HTTP_REFERER")%>
     par exemple: votre URL de provenance est : <% response.write(origine) %>
-   Le nom de login si l'utilisateur est identifié sur le 
     réseau  
 <% user   = Session("LOGON_USER")   %>
      <% userbis = Request.ServerVariables("LOGON_USER") %>
 <% user   = Session("LOGON_USER")   %>
      <% userbis = Request.ServerVariables("LOGON_USER") %>
     par exemple:Vous êtes  <%response.write(user) %>  ou encore  
     <%response.write(userbis) %>
 
  
 
- Interagir avec l'utilisateur : Les formulaires 
 Une page ASP eut contenir deux pages HTML: la première contenant un 
formulaire, la deuxième tenant compte des réponses données au  formulaire .
 
 Voici un premier exemple:
 
 
-  <% @LANGUAGE = VBScript %> 
-   <% 
-   Option Explicit 
-   Response.Expires = 0 
 
 Ces lignes ont déjà été expliquées.
 
 
-  If (Request.ServerVariables("CONTENT_LENGTH") >0 ) Then 
-  %>
 
 C'est ici que se fait le choix entre les deux pages html possibles.
 L'objet  Request.ServerVariables contient variables du serveur
(et donc entre autres les réponses aux questionnaires).
 On calcule la longueur de son contenu (par la commande 
 "CONTENT_LENGTH"). 
Si cette longueur est positive, cela signifie que l'objet  
Request.ServerVariables contient des données, et donc que le formulaire 
a été rempli.
Dans ce cas, on affiche la page de résultat:
 
 
-  <html>
-  <head>
-  <title> Page résultat </title>
-  </head>
 
 On déclare la page web
 
 
-  <body  bgcolor= <%= Request.Form("ecran") %>>
-  <font color=<%= Request.Form("ecrit") %>>
-  <center>
-  Bonjour <%= Request.Form("prenom") %>  <%= Request.Form("nom") %>
-  <br> <br>
-  </center>
-  </font>
-  <%
 
 On utilise les données recueillies dans le formulaire. On verra plus loin 
qu'on demande le nom et le prénom de l'utilisateur, dans des cases nommés 
nom (!) et prenom (sans accent). Pour utiliser ces données, on utilise la 
l'objet  Request.Form  qui contient les résultat 
du formulaire, en précisant le nom de la variable qui nous intéresse:  Request.Form("nom de la 
variable")
 
 
-  </html>
-  <%
 
 On clôture la première page html.
 
 On peut maintenant s'intéresser à la page html contenant le formulaire:
 
 
-  Else
-  %>
-  <html>
-  <title> Page de questions </title >
-  </font>
-  <br><br>
-  Quelques questions pour mieux se connaitre
-  <form action= "<% Request.ServerVariables("essai") %>" method="post"> 
 
 L'action du formulaire est de garder les réponses comme étant des 
variables du serveur.
 On peut maintenant questionner le visiteur:
 
 
-  Comment t'appelles tu ? <br>
-  Nom : <input type="Text" name="nom"> <br> 
-  Prénom : <input type="Text" name="prenom"> 
-  <br><br>
-  De quelle couleur souhaites-tu que j'écrive ?
-  <br>
-  <input type="radio" name="ecrit" value="red"> 
-  <font color="red"> en rouge </font> <br>
-  <input type="radio" name="ecrit" value="blue" > 
-  <font color="blue"> en bleu </font> <br>
-  <input type="radio" name="ecrit" value="green" > 
-  <font color="green"> en vert</font> <br>
-  <input type="radio" name="ecrit" value="yellow" > 
-  <font color="yellow"> en jaune</font> <br>
-  <input type="radio" name="ecrit" value="black" > 
-  <font color="black"> en noir</font> <br>
-  <br> <br>
-  De quelle couleur veux tu le fond d'écran ?
-  <br>
-  <input type="radio" name="ecran" value="red"> 
-  <font color="red"> en rouge </font> <br>
-  <input type="radio" name="ecran" value="blue" > 
-  <font color="blue"> en bleu </font> <br>
-  <input type="radio" name="ecran" value="green" > 
-  <font color="green"> en vert</font> <br>
-  <input type="radio" name="ecran" value="yellow" > 
-  <font color="yellow"> en jaune</font> <br>
-  <input type="radio" name="ecran" value="black" > 
-  <font color="black"> en noir</font> <br>
-  <br><br>
-  <input type="submit" value="j'ai fini" />
-  <input type="reset" value="je veux recommencer" />
-   </form> 
-  </body>
-  </html> 
 
 On clôture la page html à la fin du formulaire.
 
 
-  <%
-  End If
-  %>
 On clôture la page asp en finissant la condition (si le formulaire est 
 rempli alors ... sinon ...)
   
-  Les cookies 
Les cookies permettent d'identifier les utilisateurs ou de personnaliser 
des pages. Ils sont à utiliser avec précaution, et sont parfois refuser 
par le navigateur du client.
 Ce sont des petits paquets de données enregistrés par le navigateur dans 
un emplacement spécifique. Ils sont transmis par un serveur dans l'en-tête 
d'une page et sont enregistrés par le navigateur.
Chaque cookie enregistre une information concernant le serveur, 
c'est-à-dire son adresse (URL) et le chemin d'accès au script qui l'a 
généré. Ils possèdent également un nom et une valeur. Leur nombre et leur 
quantité sont limités.
 Les cookies sont ransférés de deux manières entre le serveur et le 
navigateur. Dans le sens serveur vers navigateur, il s'agit d'une réponse 
du serveur à une demande du navigateur, utilisant l'objet 
Response.
Dans l'autre direction, les données sont simplement lues par le 
navigateur, en utilisant l'objet Request.
-  <%
-  Response.Cookies("UserPref") = "bgcolor=red"
-  %>
-  <html>
-  <body <% = Request.Cookies("UserPref") %> >
-  Le cookie possède la valeur suivante: <% = 
Request.Cookies("UserPref") %>
-  </body>
-  </html>
 En appelant ce script deux fois, l'arrière-plan du navigateur se colore en 
rouge. Lors du premier appel, le cookie est placé. Lors du second appel, le 
navigateur identifie le serveur et renvoie le cookie.
 
 Un cookie peut contenir plusieurs valeurs. Par exemple
- <% 
- Response.Cookies("UserPrefx")("bgcolor") ="red"
- Response.Cookies("UserPrefx")("color") ="yellow"
- Response.Cookies("UserPrefx")("size") ="2"
- %>
- <html>
- <body bgcolor=<% = Request.Cookies("UserPrefx")("bgcolor") %> >
- <h<% = Request.Cookies("UserPrefx")("size") %>>
- <font color="<% = Request.Cookies("UserPrefx")("color") %>">
- Le cookie possède les valeurs suivantes : <% = 
- Request.Cookies("UserPrefx") %>
- </font>
- </h<% = Request.Cookies("UserPrefx")("size") %>>
- </body>
- </html>
 le script
 
 Les cookies sont effacés à la fin de la session. Lorsque le navigateur ne 
dispose plus de connexion avec le serveur, il efface le cookie de sa 
mémoire. Pour éviter cela, on peut indiquer la date à laquelle l'effacement 
du cookie devra être réalisé. En réalité le cookie n'est pas effacé mais 
le serveur ne peut plus y accèder.
-  Response.Cookie("ReturneCheck").Expires="31/12/2002"
 On peut également créer un cookie d'une heure:
-  Response.Cookie("ReturneCheck").Expires=dateadd("h",1,now())
 
 
 On peut utiliser les cookies pour personnaliser une page web:
- <% @LANGUAGE=VBScript %>
- <%
- Response.Write("Preferences")("bgcolor") = Request.Form("bgcolor")
- Response.Write("Preferences")("color") = Request.Form("color")
- Response.Write("Preferences")("face") = Request.Form("face")
- Response.Write("Preferences")("name") = Request.Form("name")
- Response.Write("Preferences").Expires = date("yyyy",1,now)
- %>
- <html>
- <body <% = Request.Cookie("Preference")("bgcolor") %>>
- <font face="<% = Request.Cookie("Preference")("face") %>" color="<% = 
Request.Cookie("Preference")("color") %>">
- <h3> Page de personnalisation </h3>
- <h4> Bienvenue <% = Request.Cookie("Preference")("name") %> ! </h4>
- <br><br>
- Vous pouvez enregistrer vos paramètres personnels:<br>
- Choisissez<br>
- <form method="post" action="cookiesbis.asp">
- La couleur des caractères:
- <select id=select1 name=color size=1>
- <option selected value=black> Noir </option>
- <option selected value=blue>Bleu</option>
- <option selected value=gray> Gris</option>
- <option selected value=darkgreen>Vert</option>
- </select>
- <br><br>
- La couleur d'arrière-plan
- <select id=select2 name=bgcolor size=1>
- <option selected value=white>Blanc  </option>
- <option selected value=yellow>Jaune</option>
- <option selected value=Teal> Beige</option>
- <option selected value=Silver>Argent</option>
- </select>
- <br><br>
- La police de caractère:
- <select id=select3 name=face size=1>
- <option selected value=Arial> Arial </option>
- <option selected value=Tahoma>Tahoma</option>
- <option selected value=Verdana> Verdana</option>
- <option selected value=Times>Times Roman</option>
- </select>
- <br><br>
- Votre nom: <input type=text size=30 name=name>
- <br>
- <input type="submit">
- </form>
- </font>
- </body>
- </html>
 le script
 
  
 
-  Les bases de données 
 
   
 
-  Lire dans une base de données 
 Il peut être intéressant d'afficher le contenu d'une base de données 
 (entièrement ou partiellement) sur une page web.
 
 Cet exemple est fait sur une base de données ACCESS, appelée essaisql et 
contenant une table nommée Rendez-Vous, contenant trois champs 
(numérique = clé, nom, heure).
À chaque fois, il faut d'abord établir une connection avec la base,
ouvrir la partie qui nous intéresse (ici la table Rendez-Vous),  lire les 
données, fermer la table puis couper la connection.
      
     
-   Déclarer une base de données dans un site web 
     FrontPage
 Il faut d'abord rajouter les fichiers  401LogonUser.inc et  
ADOVBS.INC disponibles dans le répertoire de ce cours, version 
non-publiée (Athenas1/Au Bonheur Des 
Dames/MatiereInfo/Internet/Cours ASP). Ces fichiers contiennent des scripts permettant d'établir une 
relation avec la base de données et de récupérer des informations sur la 
personne qui se connecte (login,..).
 Il faut également placer le fichier contenant la base de données dans le 
répertoire du site web
        -  Ouvrez votre site web avec FrontPage. Vérifiez que la base de 
        données que vous venez de créer existe bien dans le 
        répertoire
        
-  Dans le menu  Outils , choisir  
        Paramètres du site web . Cliquez sur l'onglet  Base de 
        données .
        Choisir d' Ajouter  une connexion. Choisir le fichier de 
        votre base de données (en cliquant sur parcourir ).
        La liaison est ainsi créee. Il reste à  vérifier  qu'elle 
        est bonne. Ensuite on  applique  tout ca et tout est  OK 
         (un fichier global.asa  a du faire son apparition dans 
        votre site web)
        
-  Profitez en pour vériferi que dans les  
        Paramètres du site web ,  Options avancées c'est 
        bien  VBScript  et non pas JavaScript qui est choisit. 
 
 
     
-   Lire toute la base
 
- <% @LANGUAGE = VBScript %> 
 On déclare la langage de script
-  <% 
- Option Explicit 
 On demande de vérifier que toutes les variables utilisées sont 
explicitement déclarées
- Response.Expires = 0 
 On demande à ce qu'aucune donnée ne soit gardée dans le cache, 
et qu'à chaque appel, la page soit remise à jour.
- Dim objconn, objrs 
- Dim strOut 
 On déclare les variables utilisées dans la suite du programme
 
 
- Set objconn =  Server.CreateObject("ADODB.Connection") 
- Set objrs = Server.CreateObject("ADODB.Recordset") 
- objConn.Open Application("essaisql_ConnectionString") 
- objrs.Open "RendezVous", objconn  
 ADO (= ActiveX Data Objects ) est un objet d'accès aux données de niveau 
applicatif. Il fournit l'interface nécessaire entre les bases de données 
et les pages ASP. Voici deux objets ADO que nous utiliserons principalement:
    -   Connection  représente la connexion à une source de 
    données 
-   Recordset se compose d'enregistrements renvoyés par une 
    requête de base de données et d'un curseur sur ces enregistrements 
 On crée une connexion (ADODB= ADO Data Base ) à la base de données, et un objet  
Recordset  donnant accès aux champs de données.
On établit ensuite la connexion et on ouvre l'objet  Recordset , 
permettant ainsi l'accès aux données.
 
 
- While Not objrs.EOF 
- strOut = objrs("numero") & ":" & objrs("nom") 
- strOut = strOut & " " & objrs("heure") 
- Response.Write Server.HTMLEncode(strOut) & "<br>" 
- objrs.MoveNext 
- Wend 
 On écrit le contenu de l'objet Recordset  (i.e. les champs numéro, nom et 
heure de chaque ligne de la base)
 Lorsqu'un objet Recordset est ouvert, le curseur de ligne 
pointe automatiquement sur la première ligne renvoyée. La boucle  
 While   s'interrompt quand le curseur point sur la fin du 
Recordset (EOF = End Of File = Fin du fichier). Ne pas oublier la commande 
MoveNext qui indique qu'il faut 
avancer d'un grand à chaque fois sinon cette boucle sera sans fin.
 On note l'instruction   HTMLEncode   qui permet de 
mettre les données au format Html, afin qu'elles soient affichées sur la 
page web.
 
 Rmq:  On peut également utiliser les commandes  
MoveFirst,  MoveLast  
et  
MovePrevious   pour gérer les déplacements du curseur (en le 
placant respectivement au début, de l'enregistrement à la fin 
de l'enregistrement et à l'enregistrement 
précédent).
 Si on parcourt la table en sens inverse, on quitte la boucle lorsque la 
propriété BOF (= Begin Of File = Début du fichier) est vraie.
 Avant de demander au curseur de bouger, il faut parfois vérifier qu'il y a 
des enregistrements dans la table. On utilise pour cela la 
commandeRecordCount (par exemple, if objrs.RecordCount=0 then Response.Write "il n'y a 
pas d'enregistrements")
 
 
- objrs.Close 
- objconn.Close 
- Set objrs = nothing 
- Set objconn = nothing 
- %> 
 On ferme ensuite la table et la connexion.
On ré-initialise les variables à rien.
 
 le script
 
 On peut mélanger ASP et HTML pour présenter les données dans un tableau:
-  %> 
-  <table> 
-  <%
- While Not objrs.EOF 
- %> 
-  <tr> 
-  <td> <% Response.Write Server.HTMLEncode(objrs("numero")) %> </td>
-  <td> <% Response.Write Server.HTMLEncode(objrs("nom")) %> </td>
-  </tr> 
- <% 
-  objrs.MoveNext 
- Wend 
-  </table> 
  
     
-  Lire une partie de la base
 Il suffit de remplacer une ligne dans le script précédent, lui disant 
     non plus d'ouvrir la base toute entière mais juste une 
     partie (sur cet exemple, on ne consultera que les lignes dans 
     lesquelles le nom est fredet)
 
 
-  objrs.Open "SELECT * FROM RendezVous WHERE nom='fredet';", objconn 
 le script
 
 On peut combiner plusieurs conditions, en utilisant des opérateurs 
 logiques:
-  objrs.Open "SELECT * FROM RendezVous WHERE nom='fredet' OR nom='toto';", objconn 
 le script
 
 Rmq: On peut également décider de ne consulter que certains 
 champs, en remplacant * par la liste des champs qui nous 
 intéresse.
 
 
 
 
  
 
-  Ajouter des données  
 Il est nécessaire de pouvoir ajouter des données dans une table de données.
 Cela peut se faire de deux manière:
 - de manière fixe: on sait à l'avance quelles valeurs vont 
 être rentrées 
- de manière interactive: on demande à l'utilisateur quelles valeurs 
 rentrer
 Par défaut, les données sont ajoutées à la fin de la table.
     
       
     
-  Ajouter des données statiques  
 
- <% @LANGUAGE = VBScript %>
- <%
- Option Explicit
- Dim objconn, objrs, strQ
- Set objconn =  Server.CreateObject("ADODB.Connection")
- Set objrs = Server.CreateObject("ADODB.Recordset")
- objconn.Open Application("essaisql_ConnectionString")
- objrs.Open "RendezVous", objconn
 Cette partie est expliquée dans les scripts précédents.
 
 
- strQ= "INSERT INTO RendezVous (nom, heure) VALUES "
- strQ = strQ & "('Fredet','16:40:00')"
- objconn.Execute strQ
 On trouve ici une instruction  SQL  (langage de programmation utilisé par 
Access):   Insert  . Il faut préciser dans quelle 
table ajouter les valeurs, et bien sûr, donner ces valeurs.
Ensuite, on demande que l'ajout soit effectif (  Execute).
 
 
- While Not objrs.EOF
- Response.Write objrs("nom") & ": "
- Response.Write objrs("heure") & "<br>"
- objrs.MoveNext
- Wend
 Il faut reéxécuter le script pour lire la nouvelle ligne, car les données 
ont été envoyées avant l'ajout.
On aurait pu ouvrir l'objet Recordset ( objrs) plus tard, après 
l'ajout de la nouvelle ligne.
 
 
- objrs.Close
- objconn.Close
- Set objrs=nothing
- Set objconn = nothing
- %>
 le script
  
     
-  Ajouter des données dynamiques  
 Il est rare que l'on sache à l'avance quelles données vont être 
     ajoutées. En général, on demande à l'utilisateur de remplir un 
     formulaire, et ce sont ses réponses qui sont ajoutées à la base de 
     données.
 
 
- <% @LANGUAGE = VBScript %>
- <%
- Option Explicit
- Response.Expires = 0
- %>
 
 
- <%	
- Dim objconn, objrs, strQ
- Dim strCN, strPh, lngRdv, strOut	
- Set objconn =  Server.CreateObject("ADODB.Connection")
- Set objrs = Server.CreateObject("ADODB.Recordset")
- objconn.Open Application("essaisql_ConnectionString")
 Cette partie a déja été rencontrée dans les scripts précédents.
 
-  objrs.CursorType = adOpenKeySet
-  objrs.LockType = adLockOptimistic
- objrs.Open "RendezVous", objconn, , , adCmdTable   
 On utilise maintenant quelques propriétés supplémentaires de l'objet 
Recordset:
    -  CursorType
 Cela permet de spécifier le type de curseur utilisé. Il en existe quatre 
    sortes: avance  ( adOpenForwardOnly ),  statique 
    (adOpenStatic), dynamique ( adOpenDynamic ) et par 
    clés. ( adOpenKeySet ).
 Un curseur avance permet uniquement de parcourir la base de données en 
    avançant. Cela économise des ressources, mais interdit l'utilisation de 
    certaines propriétes (le comptage par exemple).
 Un curseur statique permet de se déplacer dans les deux directions.
 Ces deux curseurs fournissent une copie "statique" de l'objet 
    Recordset, et ne reflètent pas les modifications apportées par d'autres 
    utilisateurs.
    Comme il est impossible de mettre à jour une page web lorsqu'elle a 
    été envoyée au client, ce sont les seuls que nous utiliserons.
 
-  LockType 
 Cela indique comment effectuer les enregistrements (ou le verrouillage).
    Si un enregistrement est verrouillé, il ne peut être modifier par 
    aucun utilisateur ( adLockReadOnly ).
     adLockPessimistic  indique qu'il faut verrouiller les 
    enregistrements de données à la source immédiatement.
     adLockOptimistic  ne verrouille les enregistrements qu'à 
    l'appel de la commande   Update  .
 Ce choix est fait en fonction de la qualité de la liaison.
 La commande  objrs.Open "RendezVous", objconn, , , adCmdTable  
 indique comme précédemment qu'il faut ouvrir l'objet Recordset nommé 
 objrs .
Les deux espaces laissés blancs peuvent être utilisés pour définir les 
propriétés de CursorType et LockType, mais cela a été fait juste avant de 
manière indépendante.
La commande   adCmdTable   est facultative, et indique 
le type de source.
 
 
- If (Request.ServerVariables("CONTENT_LENGTH") >0 ) Then
 Quand l'utilisateur envoie le formulaire, qui est transmis au client aux 
lignes 54 à 58, la ligne 16 est évaluée à VRAI, et les lignes 17 à 37 sont 
éxécutées.
 
 
-    strCN = trim(Request.Form("nom"))
 On attribue la valeur du champ "nom" à la variable strCN, en 
éliminant les éventuels espaces superflus du début (  trim  
).
 
 
-    strCN = Left(strCN,40)
 Cette instruction permet de ne prendre que les 40 premiers caractères (en 
partant de la gauche).
 
 
    
-    If Len(strCN) > 0 Then
-     objrs.AddNew
-      objrs("nom") = strCN
-      strPh = trim(Request.Form("heure"))
-      strPh = Left(strPh,24)
-      If Len(strPh) > 0 Then
-        objrs("heure") = strPh
-     End If
-       objrs.Update
 On vérifie qu'un nom a été rentré ( If Len(strCN) > 
0   ). Si ce n'est pas le cas, le script continue jusqu'à la ligne 
33, et envoie une demande de nom.
Si une valeur est saisie, , on crée un nouvel enregistrement, avec la 
commande  AddNew .
Ce nouvel enregistrement est rempli aux lignes 21 à 27 (en vérifiant 
qu'une heure a bien été proposée, sinon la case correspondante reste vide).
À la ligne 28, toutes les données sont enregistrées d'un coup..
Une fois que l'enregistrement a été fait, le numéro de ce nouvel 
enregistrement est rendu (il est généré automatiquement par la base).
 
 
-      lngRdv=objrs("numero")
-      Response.Write "Le nouvel enregistrement a le numero"
-      Response.Write lngRdv & " . <br><br>"     
-  
-   Else
-      Response.Write "veuillez indiquez un nom ! <br><br>"
-   End If   
- End If
- %>
 Dans le cas où la case de nom n'aurait pas été remplie .
 
 
- <html>
- <body>
- Rappel: A la première utilisation, ce script lit
-  les données de la table RendezVous dans la base essaiSQL. 
-  Il permet ensuite d'ajouter des données 
- <%
- While Not objrs.EOF
-    strOut = objrs("numero") & ":" & objrs("nom")
-    strOut = strOut & " " & objrs("heure")
- Response.Write Server.HTMLEncode(strOut) & "<br>"
- objrs.MoveNext
- Wend
- objrs.Close
- objconn.Close
- Set objrs = nothing
- Set objconn = nothing
- %>
 On demande une lecture de la table, puis on ferme la connexion.
 
 
- <form action = "<% Request.ServerVariables("essail") %>" 
method="POST">
- Nom : <input type="Text" name="nom"> <br>
- Heure: <input type="DATETIME " name="Heure"> <br>
- <input type="Submit">
- </form>
 Le formulaire permettant d'ajouter des données.
 
 
- </body>
- </html>
 le script
 
 Il est à noter que l'on ouvre la connexion dès le début.
On aurait gagné en efficacité en n'ouvrant la connexion qu'après le 
remplissage du formulaire (apres  If Len(strCN) > 0   ).
     
 
-  Modifier des données  de manière interactive 
 À dire vrai, la table RendezVous de la base de données essaisql ne 
 contient pas trois mais quatre colonnes: numéro, nom, heure et  login.
 Il est fréquent que l'on veuille faire varier l'affichage en fonction de 
 la personne qui consulte.
 Le script suivant permet à chacun d'avoir accès aux rendez vous le 
 concernant (son login est dans la colonne), et de les modifier.
 
 
- <% @LANGUAGE = VBScript %> 
-   <%  
-  Option Explicit  
-  Response.Expires = 0  
-  %>  
-  <!-- #include file="adovbs.inc" -->  
-  <!--#include virtual="/401LogonUser.inc"-->  
 On a besoin d'un fichier supplémentaire, permettant de récupérer le nom de 
login, le fichier /401LogonUser.inc . On inclut également le 
fichier adovbs.inc  qui contient quelques routines bien pratiques.
 
 
-  <%	  
-  Dim objconn, objrs  
-  Dim user, userbis  
-  Dim strOut  
 
 
 
-  user   = Session("LOGON_USER")  
-  userbis = Request.ServerVariables("LOGON_USER")  
 On récupère le nom de login (2 formats différents, l'un contenant le 
domaine, l'autre non)
 
 
-  Set objconn =  Server.CreateObject("ADODB.Connection")  
-  Set objrs = Server.CreateObject("ADODB.Recordset")  
-  objConn.Open Application("essaisql_ConnectionString")  
-  objrs.CursorType = adOpenStatic  
-  objrs.LockType = adLockOptimistic  
 Ces lignes ont déja été expliquées.
 
 
-  objrs.Open "SELECT * From RendezVous WHERE login LIKE '" & "%" & user & "%'", objconn    
 On ne consulte que lignes dont la valeur dans la colonne login correspond 
au login de l'utilisateur (en fait, ici on vérifie que la valeur de la 
colonne contient le login - pratique pour certains ayant deux login, par 
exemple fredet et AnneFredet . Logée en tant que fredet, il sera possible 
de consulter les lignes correspondants aux deux).
 
 
-  If (Request.ServerVariables("CONTENT_LENGTH") =0 ) Then  
 Si le questionnaire n'a pas été rempli, on lit la base, sinon on passe à 
la ligne 43.
 
 
-  If objrs.EOF = true Then  
-  Response.Write("rien trouvé")  
 S'il n'y a aucune ligne correspondante, on en informe l'utilisateur.
 
 
-  Else  
-  %>  
-  <form action = "<% Request.ServerVariables("essail") %>" 
method="POST">  
-  <% While Not objrs.EOF  
-  strOut = objrs("numero") & ":" & objrs("nom")  
-  strOut = strOut & " " & objrs("heure")  
-  %>  
-  <input type="radio" name="Rad1" value="<% =objrs("numero") %>" >   
-  <%    Response.Write Server.HTMLEncode(strOut) & "<br>"  
-  objrs.MoveNext  
-  Wend  
-  %>  
-  Pour modifier une ligne <br>  
-  * Cochez la case correspondante <br>  
-  * Entrez les nouvelles données dans le formulaire <br>  
-  Nom : <input type="Text" name="patronyme"> <br>  
-  Heure: <input type="DATETIME " name="Heure"> <br>  
-  <input type="Submit">  
-  </form>	  
-  <% End If  
 On crée le formulaire.
On déclare les boutons radio de manière active, en fonction des données 
trouvées dans la table (un bouton par ligne trouvée).
L'utilisateur peut ainsi choisir quelle ligne il veut modifier et entrer 
les nouvelles valeurs à mémoriser.
Pour éviter de confondre avec la colonne "nom" de la base de données, la 
case demandant le nom s'appelle "patronyme".
 
 
-  Else   
-  %>  
-  Vous avez demandé à modifier la ligne   
-  <%Response.Write(Request.Form("Rad1"))  
-  While Not objrs.EOF  
-  If CINT(objrs("numero")) = CINT(Request.Form("Rad1"))  Then  
-  If Len(trim(Request.Form("patronyme"))) >0 Then  
-  objrs("nom") = Request.Form("patronyme")  
-  Response.Write "Le nom de " & Request.Form("Rad1") & " est devenu " & objrs("nom") & "."  
-  End If  
-  If Len(trim(Request.Form("Heure"))) >0 Then  
-  objrs("heure") = Request.Form("Heure")  
-  Response.Write "L'heure de " & Request.Form("Rad1") & " est devenue " & objrs("heure") & "."  
-  End If  
-  objrs.Update  
-  End If  
-  objrs.MoveNext  
-  Wend  
-  End If  
-  %>  
 Si le questionnaire a déja été rempli, on modifie les données.
On parcourt l'objet Recordset pour trouver la ligne à modifier (on utilise 
la commande CINT, qui convertit les données au format numérique, afin que 
le numéro de la ligne et celui du bouton radio aient le même format).
Lorsque l'on a trouvé la bonne ligne, on ne change que ce qui est 
nécessaire  (on vérifie que l'utilisateur a entré de nouvelles données 
pour la valeur avant de la remplacer). Pour cela, il suffit de vérifier si 
la réponse contient autre chose que des espaces (les espaces superflus à 
gauche sont éliminés avec la commande   trim  )
 
 
-  L'utilisateur est <b><% = user %></b> ou, en plus complet <% = userbis %>  
 On peut récupérer le nom de login sous plusieurs formats.
 
 
-  <%  
-  objrs.Close  
-  objconn.Close  
-  Set objrs = nothing  
-  Set objconn = nothing  
-  %>  
 Ne pas oublier de fermer la connexion.
 
 le script
 
 Si l'objet Recordset est grand, on gagne en efficacité en la refermant, et en 
n'ouvrant ensuite que la ligne que l'on veut modifier, plutôt que de 
parcourir toute la base pour trouver cette ligne.
   
 Références  
    -  Livres 
 
    -   Active Server Pages 2  par  Christoph Wille / Christian 
    Koller, collection   CampusPress   
-   Accesss 2000  par  Craig Eddy / Timothy Buchanan , 
    collection   Tout en poche   
-   Accesss 2000 - Programmation  par  Helena  Spona, 
    collection   PC Technique   
-   HTML  par  Dick Oliver , 
    collection   Tout en poche   
 
-  Sites web 
 
   
 
 Premiers TP  
    
    -  Créer une base de données avec Access, en rentrant 
    quelques données
    
        -  Lancer le logiciel Microsoft Access ( Démarrer  puis 
         Programmes ) 
-  Choisir de créer une nouvelle base de données, sans assistant
-  L'enregistrer dans votre site web sur Place Vendome
-  Choisir de créer une table en mode création
-  Entrée des noms de champs (au moins 2) avec un type de 
        données classique (par exemple texte)
-  Enregistrez la table, ne créez pas de clé primaire.
-  Rentrer quelques données dans la table
-  enregistrez le tout et fermer Access (rappelez vous bien du 
        nom de la base, et de celui de la table)
 
-  Utiliser une base de données dans le site web
Il faut d'abord rajouter les fichiers  401LogonUser.inc et  
ADOVBS.INC disponibles dans le répertoire de ce cours, version 
non-publiée (Athenas1/Au Bonheur Des 
Dames/MatiereInfo/Internet/Cours ASP). Ces fichiers contiennent des scripts permettant d'établir une 
relation avec la base de données et de récupérer des informations sur la 
personne qui se connecte (login,..) 
-  Déclarer la base de données dans le site web
    
        -  Ouvrez votre site web avec FrontPage. Vérifiez que la base de 
        données que vous venez de créer existe bien 
        
-  Dans le menu  Outils , choisir  
        Paramètres du site web . Cliquez sur l'onglet  Base de 
        données .
        Choisir d' Ajouter  une connexion. Choisir le fichier de 
        votre base de données (en cliquant sur parcourir ).
        La liaison est ainsi créee. Il reste à  vérifier  qu'elle 
        est bonne. Ensuite on  applique  tout ca et tout est  OK 
         (un fichier global.asa  a du faire son apparition dans 
        votre site web)
        
-  Profitez en pour vériferi que dans les  
        Paramètres du site web ,  Options avancées c'est 
        bien  VBScript  et non pas JavaScript qui est choisit. 
 
-  Ecrire une page permettant d'ouvrir la base, de lire les données 
    puis de fermer la page (ca doit ressembler à  
ça )
    Il faut pour cela créer une nouvelle page dans FrontPage, et choisir la 
    version Html. On peut alors taper les instructions.
    Il faut ensuite publier le site web, et regarder le site publique pour 
    pouvoir lire les données (là, on voit bien la différence entre site 
    publique et site privé).
Il faut ensuite passer me voir que j'aille faire un  Barbatruc sur 
le serveur.
    
    
    Voilà, vous avez un vrai site web, que d'autres peuvent consulter ... 
    avec les avantages et les inconvénients que cela présente.