Voilà maintenant un moment que je travaille avec l'ASP, et qu'à chaque fois j'écris le même code pour gérer mes bases de données. C'est rébarbatif, et c'est aussi une belle perte de temps.
La solution ?? Elle existe, elle est simple et vous l'utilisez à chaque fois que vous codez en ASP. C'est le VBScript, qui permet de créer des fonctions et des procédures.
Voilà le principe : Vous créez un fichier (par exemple fonctions.asp) qui contiendra différentes fonctions et méthodes pour la gestion des bases de données. Ensuite, il suffit de mettre ce fichier en include à chaque fois que vous en avez besoin.
Je vous montre un exemple (c'est le fichier que j'utilise moi-même).
<% ' **************************************************************************** ' Script réutilisable permettant de simplifier et d'exporter ' au maximum les connexions au bases de données. Permet l'ouverture et ' la fermeture d'une connexion, la création, la destruction d'un recordset, ' la création d'une liste déroulante, l'envoi d'email avec CDONTS, etc... ' ****************************************************************************
' **************************************************************************** ' Manipulation de la base de données ' ' ****************************************************************************
' Déclarations des variables utilisées tout au long du script : ' Dim oConn ' object connexion
' Connexion à la base : ' Sub Connexion() sConn = "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Application("maBase") Set oConn = Server.CreateObject("ADODB.Connection") oConn.Open sConn End Sub
' Execution d'une requête sans attendre de résultat (requêtes d'insertion, de mise à jour, ...) ' Sub Execution(sReq) If sreq <> "" then oConn.Execute(sReq) else response.write("<b>Erreur E001 : Exécution d'une requête</b><br>") response.write("Le paramètre envoyé est vide."<br>") end if End Sub
' Vérification qu'un recordSet n'est pas vide ' Function estVide(ByRef rstReq) If rstReq.eof OR rstReq.bof then estVide = true else rstreq.movefirst estVide = false end if end function
' Ouverture d'un recordset pour le mode page a page : ' Sub Ouverture(sReq, ByRef rstReq, nb) Set rstReq = Server.CreateObject("ADODB.RecordSet") If nb <> "" And nb <> "0" then rstReq.CursorLocation = 3 rstReq.PageSize = CInt(nb) end if rstReq.Open sReq, oConn, 3, 3 End Sub
' Remplissage d'une zone de liste avec un recordset : ' Sub CreeSelect(ByRef rstReq, iVal1, iVal2) If Not estVide(rstReq) Then Do Until rstReq.Eof response.write("<option value='"&rstReq(iVal1)&"'>") response.write(rstReq(iVal2)) response.write("</option>") rstReq.MoveNext Loop Else response.write("<option value='NULL'>Aucune entrée</option>") End If End Sub
' Fermer un recordset : ' Sub Fermeture(ByRef rstReq) if isObject(rstReq) then rstReq.Close Set rstReq = Nothing else response.write("<b>Erreur F001 : Fermeture d'un RecordSet</b><br>") response.write("Le paramètre envoyé à la fonction de fermeture n'esiste pas ou n'est pas un object.<br>") End If End Sub
' Envoyer un e-mail ' sub envoiMail(paramExpediteur, paramDestinataire, paramSujet, paramCorps, paramTypeMail) Set objCDOMail = Server.CreateObject("CDONTS.NewMail")
' Renseignement des propriétés objCDOMail.From = paramExpediteur objCDOMail.To = paramDestinataire objCDOMail.Subject = paramSujet objCDOMail.Importance = 1 '(0=Low, 1=Normal, 2=High) objCDOMail.BodyFormat = paramTypeMail '(HTML or TEXT format) if paramTypeMail = 0 then objCDOMail.MailFormat = 0 '(Mime format) end if
' Corps du message objCDOMail.Body = paramCorps
' Send the message! objCDOMail.Send Set objCDOMail = Nothing end sub
' Déconnexion : ' Sub Deconnexion() oConn.Close Set oConn = Nothing End Sub %>
Bon, c'est pas encore le top. Faudrait rajouter la gestion des erreurs, un mode d'emploi(?) et d'autres fonctions utiles.
Il suffit juste d'initialiser dans le global.asa la variable d'application "mabase" et c'est bon, ça marche partout.
UTILISATION :
Ben c'est facile. On met le fichier en include et après, on appelle les méthodes comme ceci :
<!-- #include file="fonctions.asp"--> <% Dim maRequete, monRecordSet
maRequete = "SELECT * FROM maTable"
Ouverture maRequete, monRecordSet, 0 ' le 0 c pour afficher tous les elt sans page a page
P.S. : J'ai aussi une gestion des variables de type tableau, mais bon, c'est pas encore assez indépendant pour être utilisé partout. Faut que je travaille ca...