Dans cette fiche...

<Retour ASP>

Début de page Principe

La base de données "Sites Internet" a été créée, renseignée, et installée comme source de données ODBC. Reste à afficher une liste simple des sites, pour interroger la base via un navigateur web.
Cliquez sur l'icône ci-contre pour tester le code ASP.

Début de page Listing de la page ASP

<%@ LANGUAGE="VBSCRIPT" %>
<HTML>

<HEAD>
<TITLE>Exemple</TITLE>
</HEAD>

<BODY>
<%
	dim objConnect
	dim objRecordset

	set objConnect = Server.CreateObject("ADODB.Connection")
	objConnect.Open "WebDB"
	set objRecordset = Server.CreateObject("ADODB.Recordset")
	objRecordset.Open "SELECT * FROM tblSites;", objConnect
%>

<P><FONT FACE="Verdana" COLOR="#004080"><BIG><BIG><STRONG>
Liste des sites
</STRONG></BIG></BIG></FONT></P>
<FONT FACE="Verdana" SIZE="3">
Voici la liste des sites, par ordre d'inscription...
</FONT>

<P>
<FONT FACE="Verdana" SIZE="2">
<%
	Do While not objRecordset.eof
			Response.Write(objRecordset("NomSite"))
			Response.Write("<BR>")

			objRecordset.MoveNext
	loop

	set objRecordset=nothing
	set objConnect=nothing
%>
</FONT>
</P>
</BODY>
</HTML>

Début de page Le listing en détail...

Seules les nouveautés sont commentées.
Les codes entre < et > concernent l'affichage par HTML classique.

dim objConnect
dim objRecordset
Deux variables sont déclarées ici, pour usage ultérieur. La 1ère désignera un objet Connexion, la 2ème un objet Recordset.
  • L'objet Connexion va permettre d'établir une connexion avec la base de données.
  • L'objet Recordset va servir à interroger la base de données et à en ramener des données. Un Recordset (jeu d'enregistrement) est comparable au résultat d'une requête classique, mais non affiché. Comme une requête, il est possible d'avancer de ligne en ligne, de modifier une ligne, de supprimer une ligne. Comme rien n'est affiché, la gestion doit se faire de façon virtuelle !
 
set objConnect = Server.CreateObject("ADODB.Connection")
Cette ligne permet de créer l'objet Connexion (objConnect), en lui affectant une valeur.
Si vous êtes habitué à la notion de variable, notez qu'on n'écrit pas :
objConnect = Server.CreateObject("ADODB.Connection")
mais
set objConnect = Server.CreateObject("ADODB.Connection")
parce qu'il s'agit ici de faire référence à un objet, non à une valeur simple.
 
objConnect.Open "WebDB"
Maintenant que l'objet Connexion objConnect existe, on peut utiliser une de ses méthodes (comprenez "actions"), qui consiste à ouvrir une base de données précise. Le nom WebDB désigne la base de données référencée comme source ODBC.

Si la base de données avait nécessité un nom d'utilisateur et un mot de passe, vous auriez écrit :
objConnect.Open "WebDB", "utilisateur", "mot de passe"

 
set objRecordset = Server.CreateObject("ADODB.Recordset")
De même qu'on a créé un objet Connexion, on créé ici l'objet Recordset objRecordset. La syntaxe est à reproduire mécaniquement.
 
objRecordset.Open "SELECT * FROM tblSites;", objConnect
Après avoir créé la requête (l'objet Recordset), il faut définir la table concernée.
On fait pour ça appel à la chaîne SQL suivante : SELECT * FROM tblSites; (qui liste tous les champs et tous les enregistrements de la table tblSites).

Notez que la méthode Open doit également recevoir une 2ème valeur, qui est la connexion concernée (ici objConnect).

 
Do While not objRecordset.eof
	...
loop
La boucle Do While/Loop est une variante de While/Wend. EOF signifie End Of File (fin de fichier).
Traduisez en français : boucler tant qu'on n'a pas atteint la fin  du jeu d'enregistrements (donc la dernière ligne de la requête, en allant vers le bas).

Entre le Do While et le Loop vont figurer toutes les instructions qui concernent l'affichage d'une ligne du Recordset (un site, en clair).

 
Response.Write(objRecordset("NomSite"))
Response.Write("<BR>")
Dans les pages précédentes, vous avez vu que Response.Write() permet d'écrire dans la page HTML.
Dans cet exemple, on écrit donc 2 informations :
  • La valeur du champ NomSite de la table (ou du Recordset). De la même manière, chaque champ serait utilisable via objRecordset("Nom du champ").
  • Un code HTML <BR> qui désigne un retour à la ligne.

On aurait d'ailleurs pu raccourcir en : Response.Write(objRecordset("NomSite") & "<BR>")

 
objRecordset.MoveNext
Ne pas oublier de passer à l'enregistrement suivant dans la table. D'où le MoveNext
On traite ainsi chaque ligne de la requête jusqu'à atteindre la dernière ligne des données.
 
set objRecordset=nothing
set objConnect=nothing
Le programme est terminé. Il faut penser à libérer les 2 objets, en leur attribuant la valeur Nothing.
Là encore, comme on manipule des objets, il faut démarrer la ligne par un Set.