hur fel är denna kod!!! (ska tilläggas att den funkar)
sub checkform
dim strsql_check, rs_check, req_categorytype
req_categoryname = request.form("categoryname")
req_categorytype = request.form("categorytype")
errors = 0
if Ltrim(server.htmlencode(req_categoryname)) = "" then
errors = 1
else
call connopen(objconn)
strsql_check = "select name from " & req_categorytype & " where name = '" & req_categoryname & "' "
set rs_check = objConn.execute(strsql_check)
if not rs_check.eof then
errors = 2
end if
call connclose(objconn)
end if
end sub
innan jag börjar använda samt bygga ut den här koden ville jag bara kolla om det saker som bör göras om:
är det en sub man använder eller ska den göras till en function (jag lär mig aldrig!)?
är det vettigt att öppna databasen med en sub (connopen(objconn)) när den redan ligger i en sub?
annat som är galet?
hacka på nu bara för nu har ni chansen! (ta inte i för mycket bara)
PaceMedlem sedan juni 20019 024 inlägg En sub utför enbart saker, medan en funktion samtidigt kan retunera något, t.ex. ett objekt eller liknande!
sub checkform
dim strsql_check, rs_check, req_categorytype
req_categoryname = request.form("categoryname")
req_categorytype = request.form("categorytype")
errors = 0
if Ltrim(server.htmlencode(req_categoryname)) = "" then
errors = 1
else
call connopen(objconn)
strsql_check = "select name from " & req_categorytype & " where name = '" & req_categoryname & "' "
set rs_check = objConn.execute(strsql_check)
if not rs_check.eof then
errors = 2
end if
call connclose(objconn)
end if
end sub
1. Börja med indentering så att det går att läsa koden.
2. "Call connopen" kunde lika gärna göras till en funktion Set bojConn = Connopen().
En sub utför enbart saker, medan en funktion samtidigt kan retunera något, t.ex. ett objekt eller liknande!...
...har jag aldrig riktigt hajjat!
eftersom jag dimmar errors utanför subben får jag ju fram ett värde.(har en känsla av att ni kommer att skrika rakt ut nu, jag har för mig att man INTE ska dimma så, eller?)
jag använder i alla fall variabeln errors längre ner på min sida så ska jag alltså göra om koden till en function istället för som nu då, eller?
Call connopen" kunde lika gärna göras till en funktion Set bojConn = Connopen().
subben connopen och connclose använder jag på flera andra sidor så jag tyckte det var enklast att använda den här också, eftersom det funka.
men det är kanske inte "rätt" att göra så?
PaceMedlem sedan juni 20019 024 inlägg
eftersom jag dimmar errors utanför subben får jag ju fram ett värde.(har en känsla av att ni kommer att skrika rakt ut nu, jag har för mig att man INTE ska dimma så, eller?)
jag använder i alla fall variabeln errors längre ner på min sida så ska jag alltså göra om koden till en function istället för som nu då, eller?
Då skulle det vara perfekt att göra en funktion av "errors" istället för att använda globala variabler.
Dim errors
errors = CheckFormForErrors()
[i]' nu kan du ju använda errors som retuneras från funktionen[/i]
Function CheckFormForErrors()
Dim intErrors
...
CheckFormForErrors = intErrors
End Function
subben connopen och connclose använder jag på flera andra sidor så jag tyckte det var enklast att använda den här också, eftersom det funka.
men det är kanske inte "rätt" att göra så?
Jo det fungerar bra i just detta scriptet. Men låt säga att du vill använda en ny databas ... då måste du skriva en ny sub som gör samma arbete. I så fall är det bättre att använda en funktion för detta. Då slipper du även att göra en funktion för varje ny typ av koppling.
LarsGMedlem sedan dec. 200012 464 inlägg "select name from " & req_categorytype & " where name = '" & req_categoryname & "' "
Du har alltså flera tabeller med samma struktur?
ja, det finns ett val mellan ex. huvudkategori och underkategori i formuläret, jag har dock byggt om koden, nu ser den ut så här:
function:
dim strvalue, errors
'strtext är texten från request.form........................................................
function checkform_text(strtext)
strvalue = Ltrim(server.htmlencode(strtext))
if strvalue = "" then
errors = 1
end if
checkform_text = strvalue
end function
'strtext är texten från request.form, mysql är sqlsträngen som texten ska jämföras med.......
function checkform_data(strtext, mysql)
dim strsql_check, rs_check
Set objConn = F_connopen
strsql_check = mysql
set rs_check = objConn.execute(strsql_check)
if not rs_check.eof then
errors = 2
end if
Set objConn = F_connclose
checkform_data = strvalue
end function
och själva sidan:
req_categoryname = checkform_data(checkform_text(request.form("categoryname")),"select name from categories_head "&_
"where name = '" & strvalue & "' ")
if errors = 0 then
strsql = "insert into categories_head (name, regdate) values ('" & req_categoryname & "', '" & now() & "' ) "
Call mySql
response.redirect "view.asp?info=create"
end if
kom gärna med kommentarer och tips, hoppas ni förstår vad koden gör, typ! :)