Ce que fait le code:
1° connexion à la BDD (ODBC mais ça peut être n'importe quoi)
2° création de la requête et du recordset
3° génération du XML à la volée, sur tous les champs de tous les enregistrements.
Personnalisez (osez! tunez!) la connexion ainsi que la requête SQL, et le tour est joué!
En option, il est possible de rajouter un (des) arguments pour filtrer la requête (2eme partie)
En option aussi, l'argument attr qui permet de passer les champs en tant qu'attributs:
<item nom1="valeur1" nom2="val2" /> ...
au lieu de:
<item>
<valeur1>nom1</valeur1>
<val2>nom2</val2>
</item> ...
Source / Exemple :
<%
' connexion ODBC + recordset
Set Conn=Server.createobject("ADODB.Connection")
Conn.open "Data source=nom_ODBC; User Id=nom_utilisateur; PASSWORD="
Set rs=Server.createobject("ADODB.Recordset")
' création de la requête
rs.open "SELECT * FROM nom_de_la_table", Conn
' génération du résultat sous format XML
dim i, j, lstFields(), attr
if isempty(request("attr")) then attr=false else attr=true
Response.ContentType="text/XML"
Response.write("<?xml version=""1.0"" encoding=""ISO-8859-1"" standalone=""yes""?>")
Response.write("<items>")
if rs.eof then
Response.write("<error>Aucun résultat</error>")
else
do until rs.eof
if attr then
Response.write("<item ")
for j = 0 to i
Response.write(lstFields(j) & "=""" & rs(j).value & """ ")
next
Response.write("/>" & vbcr)
else
Response.write("<item>" & vbcr)
for j = 0 to i
Response.write("<" & lstFields(j) & ">" & rs(j).value & "</" & lstFields(j) & ">" & vbcr)
next
Response.write("</item>" & vbcr)
end if
rs.movenext
loop
rs.close
end if
Response.write("</items>")
Set rs=nothing
Set Conn=nothing
%>
<%
' 2eme VERSION : fournir un argument sur l'appel de cette page (?id=55 ...)
' connexion ODBC + recordset
Set Conn=Server.createobject("ADODB.Connection")
Conn.open "Data source=nom_ODBC; User Id=nom_utilisateur; PASSWORD="
Set rs=Server.createobject("ADODB.Recordset")
' création de la requête
if isempty(request("id")) then var_id=0 else var_id=request("id")
rs.open "SELECT * FROM nom_de_la_table WHERE nom_de_la_colonne=" & var_id, Conn
' génération du résultat sous format XML
Response.ContentType="text/XML"
Response.write("<?xml version=""1.0"" encoding=""ISO-8859-1"" standalone=""yes""?>")
Response.write("<items>")
if rs.eof then
Response.write("<error>Aucun résultat</error>")
else
do until rs.eof
Response.write(" <item>")
for each fld in rs.fields
Response.write("<" & fld.name & ">" & fld.value & "</" & fld.name & ">")
next
Response.write(" </item>")
rs.movenext
loop
rs.close
end if
Response.write("</items>")
Set rs=nothing
Set Conn=nothing
%>
Conclusion :
inconvénient: le fichier porte quand même l'extension .asp (sauf à reconfigurer le serveur IIS je suppose que c'est possible mais bon)... à priori c'est réglé: grâce à cette instruction qui permet de reconnaitre le flux comme un XML : Response.ContentType="text/XML"
avantage: mise à jour dynamique d'une liste ou un tableau par exemple...
note: pour le 1er exemple penser à limiter le nombre d'enregistrements: SELECT TOP 30 * FROM ... (par exemple pour les 30 premières lignes) sinon le script renvoie l'intégralité de la table. Limiter aussi le nombre de champs.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.