Dernière mise à jour :2008-10-14

informatique

Introduction au bases de données avec ASP

Depuis 1995, l'Internet a bien changé. Les technologies de programmation ont évolué, les usagés disposent de connexions web plus rapide. Les sites web dinamiques ont donc pu se multiplier et se retrouve maintenant en nombre considérable. Pour faire la réalisation de tels sites, il faut utiliser des langages plus évolués que le simple HTML. Parmi ces différents langages, l'un des plus populaire est le ASP (Active Server Pages).

Celui-ci permet de créer des sites web dynamiques solides et efficaces. L'un des principals besoin auquel répond cette technologie est l'accèes aux données. En effet, le défi d'un bon site dynamique tourne souvent autour des méthodes d'accès aux données. Certain sites peuvent épprouver le besoin de se servir de plus d'une source de données. Il est donc important d'utiliser un langage qui permet d'accéder à une grande variété de sources de données (MS-Access, ORACLE, fichiers XML etc..). Le langage ASP répond à ce besoin car il permet d'implémenter la stratégie d'accès universel aux données (UDA) à travers OLE DB et ADO. Le nom UDA a été donné par Microsoft dans le but de décrire un regroupement de technologies qui visent à permettre, comme le nom l'indique, l'accès universel aux données. Cette nouvelle stratégie dépasse la pensé ODBC centrée uniquement sur l'accès à diverses base de données pour permettre maintenant l'accès à une multitude de sources diverses tel les bases de données elles-même mais encore, des regroupements de fichiers XML, des systèmes de messageries etc...

L'article suivant propose de présenter un exemple de base d'utilisation de ASP pour chercher et afficher des données provenant d'une petite base de données MS-ACCESS.

Imaginons simplement une compagnie comprenant divers employés. Le président vous donne comme mandat de présenter la liste des employés permanent sur le site web de la compagnie par ordre alphabétique. Sachant que la compagnie dispose déjà d'un système de gestion créé en MS-ACCES et que la base de données renferme la liste des employés à jour, vous vous servirez donc des informations qu'elle contient pour le site web. Les informations contenu dans la table employés sont illustrés ci-dessous:

TABLE Employes
Champs
Nom
Prenom
Statut

Note : Le champ Statut peut avoir trois valeurs différentes soit : 'temps plein', 'permanent' et 'temps partiel'.

Sachant celà, nous sommes pret à débuter le projet.

Phase 1 - Requête SQL

La première phase sera la conception de la requête SQL permettant de donner les directives pour l'intérogation de la base de données de façon à faire ressortir les données désirées. La requête qui sera utilisée dans notre exemple est illustrée ci-dessous.

1. SELECT Nom, Prenom
2. FROM Employes
3. WHERE Statut = 'permanent'
4. ORDER BY Nom, Prenom;

Pour ceux d'entre vous qui avez déjà de l'expérience en langage SQL, vous aurez reconnu une requête très simple. Si tel est votre cas, vous pouvez donc passer tout de suite à la phase 2 de l'article.

Description de la requête :

La première partie de la requête est la clause SELECT qui permet d'indiquer le nom des champs de la / les table(s) voulus. Sur la seconde ligne, on trouve la clause FROM dont le but est de déterminer de quel table les champs seront tirés. À la troisième ligne, la clause WHERE nous permet d'ajouter une condition à la requête. En effet, nous indiquons à celle-ci de choisir uniquement les enregistrements dont le champ "statut" est égal à la chaine de caractère "permanent". Finalement, ont se sert de la clause ORDER BY qui comme son nom l'indique, nous permet de trier le résultat en ordre ascendant du nom de famille de l'employé et pour le cas ou plusieurs employés auraient le même nom de famille, nous ajoutons en second paramètre de tri le prénom se qui permettra de trier par ordre de prénom dans ce cas précis.

Phase 2 - Le code HTML

Après avoir fait la conception de notre requête SQL, nous en sommes rendu à songer au code HTML de la page. Puisque le code ASP s'exécute du côté serveur et que celui-ci ne retourne que du code HTML dans le navigateur du client, il convient donc de définir à l'avance ce à quoi le résultat au format HTML ressemblera. Dans cet exemple, nous afficherons une liste de noms et prénoms. Nous choisirons donc un tableau composé de deux colonnes comme élément de présentation principal.

Voici ce à quoi le code renvoyé par le résultat de l'interprétation du code ASP devra ressembler

Listing 1.0 Code HTML du résultat
1.  <HTML>
2.  <HEAD>
3.  <TITLE>Affichage des employés permanents</TITLE>
4.  </HEAD>
5.  <BODY BGCOLOR="#FFFFFF">
6.  <TABLE BORDER="1" WIDTH="90%">
7.  <TR>
8.  <TD COLSPAN="2">
9.  Liste des employés permanents
10.  </TD>
11.  </TR>
12.  <TR>
13.  <TD>Nom 1</TD>
14.  <TD>Prenom 1</TD>
15.  </TR>
16.  <TR>
17.  <TD>Nom 2</TD>
18.  <TD>Prenom 2</TD>
19.  </TR>
20.  </TABLE>
21.  </BODY>
22.  <HTML>

Phase 3 - Création du code ASP

Nous en sommes maintenant rendu au volet principal de cet article soit la conception du code ASP qui permettra d'accéder aux données recherchées. Ce qui nous préocupe donc c'est l'accès à une base de donnée de type Microsoft Access et de pouvoir ensuite effectuer une tâche précise avec les enregistrements retournés. Plus haut dans cette article, il était question d'ADO et d'OLE-DB qui sont les technologies utilisés pas Microsoft pour l'accès aux sources de données.

ADO signifit ActiveX Data Objects. ADO est un rassemblement d'objets qui ont pour but commum, l'accès aux sources de données via un 'Provider' OLE-DB. Les trois principaux objets fournis par ADO sont les suivant : Connection, Recordset et Command. Pour notre exemple, nous n'aurons besoin que de l'un de ceux-ci c'est à dire l'object Recordset. Les lignes suivantes montrent comment vous pouvez faire la création de cet object en ASP.

Listing 2.0 Création du Recordset
1. Dim objRs
2. Set objRs = Server.CreateObject("ADODB.Recordset")

Nous allons maintenant associer certaine valeurs à quelques propriétés de notre objet Recordset pour permettre l'ouverture de la connection ainsi que la recherche des données cibles. Nous aurons besoin pour celà de notre requête SQL ainsi que d'une connection à la base de données. Pour créer cette connection, nous aurions pu utiliser un objet Connection mais puisqu'il n'y a qu'un Recordset utilisé dans notre page, nous pouvons placer une chaine de connection directement dans la propriété ActiveConnection de l'objet. Ainsi, la connection s'effectuera d'elle même à l'ouverture du Recordset. Voici donc le code en question.

Listing 2.1 Ouverture du Recordset
1. With(objRs)
2.  .ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=adresse_physique_de_la_base_de_données;"
3.  .Source = "SELECT Nom, Prenom FROM Employes WHERE Statut = 'permanent' ORDER BY Nom, Prenom;"
4.  .Open
5. End With

Les lignes 1 et 5 spécifit qu'entre ces lignes, chaque fois que le processeur ASP rencontrera un ".", il le remplacera par "objRs". Cette spécification permet de ne pas réécrire plusieurs fois le nom d'un objet dans un bloque de code dans lequel celui-ci est utilisé fréquemment. La ligne deux indique qu'une connection à la base de données devra être créé. Deux paramètres sont décris dans la chaine de connection soit : le Provider et la source de données. Le provider utilisé pour l'ouverture de base de données Access, Paradox, dBASE, Excel et FoxPro est le "Microsoft OLE DB Provider for Microsoft Jet" c'est pour cette raison que nous spécifions celui-ci. Dans le paramètre "Data Source", nous devons spécifier le chemin d'accès physique (donc sur le disque du serveur) à la base de donnée. Si la base de données se trouverait dans un dossier "data" situé dans le lecteur c du disque dur du serveur et que la base de données se nommerait "bd.mbd", la chaine à placé dans le paramètre serait:c:\data\db.mdb.

La ligne 3 vient nous permet de placer notre requête SQL dans la propriété Source de l'objet Recordset. Finalement, les principales propriété étant spécifier, nous utilisons la méthode Open à la ligne 4 pour ouvrir le Recordset.

Si l'ouverture de celui-ci se déroule comme prévu, tous les enregistrements recueillis dans la table selon les critères de notre requête seront placé dans notre objet, pret à être manipulé par celui-ci.

Nous pouvons maintenant passer à la phase d'affichage des données. Pour celà, nous utiliserons l'instruction 'While , Wend' qui nous permettra d'exécuter une boucle dans tous les enregistrements de notre objet. Voici le code d'affichage:

Listing 2.2 Affichage des données
1. If (objRs.EOF = True AND objRs.BOF = True) Then
2.  Response.Write "Aucun employés permanent."
3. Else
4.  While Not objRs.EOF
5.   Response.Write "<TR><TD>" & objRs("Nom") & "</TD><TD>" & objRs("Prenom") & "</TD></TR>"
6.   objRs.MoveNext
7.  Wend
8. End IF

En ligne 1, une instruction conditionnelle vérifie si le Recordset contient des enregistrements en vérifiant les propriétés EOF (End Of File) et BOF (Begin Of File). Si tel est le cas, le recordset est vide et l'instruction de la ligne 2 est exécuté. Celle-ci utilise l'instruction Write de l'objet Response qui dit au processeur ASP d'écrire une chaine de caractère. Si le Recordset est peuplé, notre boucle s'exécute (lignes 4 à 7). Lorsque la propriété EOF de l'objet Recordset sera rencontré, la boucle se terminera. La ligne 6 permet de passer de l'enregistrement courant vers le prochain enregistrement. Vous aurez deviné que sans cette instruction, la boucle tournerais sans arrêt puisque le dernier enregistrement ne serait jamais rencontré. La ligne la plus importante pour l'affichage est la ligne 5. Celle-ci permet d'écrire le code HTML permettant de décrire les cellules du tableau ainsi que d'inscrire les noms et prénoms.

Nous avons presque terminé avec le code ASP. Il ne reste plus qu'à fermer l'objet Recordset que nous avions précédemment ouvert ainsi qu'à détruire celui-ci pour libérer la mémoire utilisé sur le serveur. Le court listing ci-dessous présente les deux instructions en question.

Listing 2.3 Destruction de l'objet
1. objRs.Close
2. Set objRs = Nothing

Le listing ci-dessous présente ce à quoi le fichier ASP final devrait ressembler

Listing 3.0 Listing final
1.  <HTML>
2.  <HEAD>
3.  <TITLE>Affichage des employés permanents</TITLE>
4.  </HEAD>
5.  <BODY BGCOLOR="#FFFFFF">
6.  <TABLE BORDER="1" WIDTH="90%">
7.  <TR>
8.  <TD COLSPAN="2">
9.  Liste des employés permanents
10.  </TD>
11.  </TR>
12. <%Dim objRs
13. Set objRs = Server.CreateObject("ADODB.Recordset")
14. With(objRs)
15.  .ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=adresse_physique_de_la_base_de_données;"
16.  .Source = "SELECT Nom, Prenom FROM Employes WHERE Statut = 'permanent' ORDER BY Nom, Prenom;"
17.  .Open
18. End With
19. If (objRs.EOF = True AND objRs.BOF = True) Then
20.  Response.Write "Aucun employés permanent."
21. Else
22.  While Not objRs.EOF
23.   Response.Write "<TR><TD>" & objRs("Nom") & "</TD><TD>" & objRs("Prenom") & "</TD></TR>"
24.   objRs.MoveNext
25.  Wend
26. End IF
27. objRs.Close
28. Set objRs = Nothing%>
29.  </TABLE>
30.  </BODY>
31.  <HTML>

Après avoir effectué cet atelier, vous aurez pratiqué les bases des principes d'accès aux données à l'aide du langage ASP. Vous aurez aussi apris les base de ADO et fait un survol du langage SQL.

Auteur : Sylvain Bilodeau

Date de mise en ligne : 2002-02-19

Aucun commentaire pour l'instant.