cs_salma
Messages postés1Date d'inscriptionmardi 7 janvier 2003StatutMembreDernière intervention 7 janvier 2003
-
7 janv. 2003 à 15:24
cs_Jackboy
Messages postés757Date d'inscriptionvendredi 7 septembre 2001StatutMembreDernière intervention19 juin 2008
-
8 janv. 2003 à 07:18
Bonjour et bonne annee 2003!
Je suis bien rodee en PHP et voila que je me retrouve face a l'ASP.
On me demande de commenter ce code, et j'ai un peu du mal...
<%
table=request("table")
requete="insertSQL"
set conn = Server.CreateObject("ADODB.Connection")
conn.open session("afriDSN")
set rs = Server.CreateObject("ADODB.recordset")
rs.open "SELECT TOP 1 " & table & ".* FROM " & table,conn
dim champs()
dim typechamps()
redim champs(rs.fields.count)
redim typechamps(rs.fields.count)
for i=0 to rs.fields.count-1
champs(i)=rs(i).name
typechamps(i)=rs(i).type
next
sql = "INSERT INTO " & table & " ("
for i=0 to rs.fields.count-1
if lcase(champs(i))<>"no" and request.form(champs(i))<>"" then
sql = sql & lcase(champs(i)) & ","
end if
next
sql=left(sql,len(sql)-1)
sql = sql & ") "
sql = sql & "SELECT "
for i=0 to rs.fields.count-1
if lcase(champs(i))<>"no" and request.form(champs(i))<>"" then
if lcase(champs(i))="date_mod" then
sql = sql & "{ fn Now() }"
else
select case typechamps(i)
case 8,129,130,200,201,202,203
' type chaine
sql = sql & "'"
sql = sql & replace(request.form(champs(i)),"'","''")
sql = sql & "'"
case 133,134,135
' type date
if session("serveurLoc")="local" then
' moteur jet access
sql = sql & "#"
sql = sql & month(request.form(champs(i)))
sql = sql & "/"
sql = sql & day(request.form(champs(i)))
sql = sql & "/"
sql = sql & year(request.form(champs(i)))
sql = sql & "#"
else
' moteur sql server
sql = sql & "CONVERT(DATETIME, '"
sql = sql & year(request.form(champs(i)))
sql = sql & "-"
sql = sql & month(request.form(champs(i)))
sql = sql & "-"
sql = sql & day(request.form(champs(i)))
sql = sql & "', 102)"
end if
case else
' type num, boolean, ...
sql = sql & replace(request.form(champs(i)),"'","''")
end select
end if
sql = sql & ","
end if
next
sql=left(sql,len(sql)-1)
cs_Mcjo
Messages postés403Date d'inscriptiondimanche 12 août 2001StatutMembreDernière intervention 3 septembre 20122 7 janv. 2003 à 22:25
<%
'recuperation de la variable table (contrairement au php ou la recupe est auto), passer en get ou post
table=request("table")
'affectation de la valeur "insertSQL" a la variable requette
requete="insertSQL"
'creation d'un object serveur ADOB.connection (permet de connecter une bdd
set conn = Server.CreateObject("ADODB.Connection")
'ouverture de la connection dont les parametre on été passer en session le terme session("afriDSN") est une variable de session comme celle qui existe en php
conn.open session("afriDSN")
'declaration de l'objet table
set rs = Server.CreateObject("ADODB.recordset")
'ouverture de la table :
'ouverture simple (2 parametre : chaine sql, nom de la connection a utiliser ici conn
rs.open "SELECT TOP 1 " & table & ".* FROM " & table,conn
'declaration de variable
dim champs()
dim typechamps()
'redimention de variable pour en faire des tableau
'champ est indexé de 0 au nombre de champ ou colonne de la table et typechamp aussi
redim champs(rs.fields.count)
redim typechamps(rs.fields.count)
'on parcour de i à rs.fields.count - 1 les champ etant indexé à partir de 0 donc pour parcourrir tous les champs on va de 0 à nombre de champ - 1
'debut de la boucle
for i=0 to rs.fields.count-1
'on affecter champ(i) (c'est un tableau) le nom du champ i
champs(i)=rs(i).name
'on affecter typechamp(i) (c'est un tableau) le type du champ i (entier, texte, memo, oui/non, ...)
typechamps(i)=rs(i).type
'next signale la fin de boucle
next
'on affecte la chaine de caractere
'"INSERT INTO " et la valeur de table et " (" a la variable sql
sql = "INSERT INTO " & table & " ("
'nouvelle boucle for
for i=0 to rs.fields.count-1
'si la valeur mise en minuscule contenu dans la case i du tableau champ est <> de "no" et que on a recuperer dans le formulaire (request.form) une valeur nom vide pour le ou <select> qui a pour nom la valeur incluse dans la case i de champ
if lcase(champs(i))<>"no" and request.form(champs(i))<>"" then
'alors on sql est egale à sql et la valeur mise en minuscule de la case i de champ
sql = sql & lcase(champs(i)) & ","
'fin si
end if
'fin de la boucle for
next
'bon left tu doit comprendre tout seul et len ca compte le nombre de caractere
sql=left(sql,len(sql)-1)
'bon la aussi
sql = sql & ") "
'la encore
sql = sql & "SELECT "
'couble for
for i=0 to rs.fields.count-1
if lcase(champs(i))<>"no" and request.form(champs(i))<>"" then
if lcase(champs(i))="date_mod" then
sql = sql & "{ fn Now() }"
else
'select case typechamp c commenter
select case typechamps(i)
case 8,129,130,200,201,202,203
' type chaine
sql = sql & "'"
'replace rempleve les ' par des ' ' dans la valeur recuperer du formulaire
sql = sql & replace(request.form(champs(i)),"'","''")
sql = sql & "'"
case 133,134,135
' type date
'ca ca sert a l'ecriture des dates la gestion des dates etant differente entre acces est sqlserver
if session("serveurLoc")="local" then
' moteur jet access
sql = sql & "#"
sql = sql & month(request.form(champs(i)))
sql = sql & "/"
sql = sql & day(request.form(champs(i)))
sql = sql & "/"
sql = sql & year(request.form(champs(i)))
sql = sql & "#"
else
' moteur sql server
sql = sql & "CONVERT(DATETIME, '"
sql = sql & year(request.form(champs(i)))
sql = sql & "-"
sql = sql & month(request.form(champs(i)))
sql = sql & "-"
sql = sql & day(request.form(champs(i)))
sql = sql & "', 102)"
end if
case else
' type num, boolean, ...
sql = sql & replace(request.form(champs(i)),"'","''")
end select
end if
sql = sql & ","
end if
next
sql=left(sql,len(sql)-1)
'fermeture de la table
rs.close
'il manque set rs = nothing pour detruire l'objet
'fermeture de la connection
conn.execute(sql)
'il manque set conn = nothing idem