her har du hele koden:
<%
Response.ContentType = "text/html"
Response.CharSet = "UTF-8"
<!-- #include file="dbconnect.asp" -->
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/ (...)
<html xmlns="
http://www.w3.org/ (...)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Demo af dynamisk SQL-søgningsopbygning</title>
</head>
<body>
<%
if request.servervariables("request_method") = "POST" then
dim searchSpecified
dim searchCriteriaFields
dim fieldInfo
dim formFieldName
dim dbFieldName
dim fld
dim sql
dim params
params = array()
' Benyttes til at indikere om der er specificeret nogle parametre
searchSpecified = false
' Benyttes til at beskrive hvilke felter i formularen der skal
' betragtes som kriteriefelter og hvilke felter de skal oversættes
' til i databasen. Disse oplysninger er adskilt med pipe (|).
' Kommer der flere kriterier i formularen, tilføjes disse blot
' i nedenstående liste på samme måde som de to eksisterende...
searchCriteriaFields = array("farve|haarid","skat|gruppeid")
sql = "SELECT * FROM bruger WHERE "
' Gennemløb formfelter i det postede og opbyg SQL-sætningen
' på grundlag af det, med formfeltets navn, matchede databasefelt.
' NB: Alle valgte kriterier skal matche for at brugeren medtages!
for each fld in searchCriteriaFields
fieldInfo = split(fld,"|")
formFieldName = fieldInfo(0)
dbFieldName = fieldInfo(1)
if Request.Form(formFieldName) & "" <> "" then
' Hvis der er mindst én parameter i forvejen, skal der
' indsættes AND mellem denne og den forrige parameter
' eller skal searchSpecified sættes til at indikere at der nu
' er angivet mindst én parameter...
if searchSpecified then
sql = sql & "AND "
else
searchSpecified = true
end if
sql = sql & dbFieldName & "=? "
call addParam(params, Request.Form(formFieldName))
end if
next
' Hvis der var mindst et kriterium specificeret, så akal
' opslaget i databasen udføres, eller ikke...
if searchSpecified then
Response.Write "SQL:<br>" & sql & "<br>"
Response.Write "Params:<br>" & join(params,",") & "<br>"
'set cmd = createCommand(sql)
set rs = cmd.Execute(, params)
' if not rs.eof then
do while not rs.eof%>
<a href="index.asp?mycase=showseachs&id=<%=rs("ID")%>"><%=rs("brugernavn")%></a><br /><br />
<%rs.movenext
loop
else
Response.Write "Der var ingen brugere som matchede dine kriterier"
end if
rs.Close
else
Response.Write "Der var ikke specificeret nogle kriterier"
end if
Response.Write "<br><br>"
%>
<form method="post" action="?mycase=searchres">
<select name="skat" style="border:1px solid #000000;">
<option selected="selected" value="">Vælg Landsdel</option>
<option value="1">Nord</option>
<option value="2">Øst</option>
<option value="3">Syd</option>
<option value="4">Vest</option>
</select>
<select name="farve" style="border:1px solid #000000;">
<option selected="selected" value="">Vælg Hårfarve</option>
<option value="1">Blond</option>
<option value="2">Brun</option>
<option value="3">Sort</option>
</select><br /> <br />
<input type="submit" name="ok" value="Search" />
</form>
</body>
</html>
<%
' Tilføjer et element i parameterlisten (som er et array)
sub addParam(byref arr, byval val)
redim preserve arr(ubound(arr) + 1)
arr(ubound(arr)) = val
end sub
' Opretter og returnerer et commandobjekt som er forbundet til din connection
function createCommand(sql)
dim cmd
set cmd = Server.CreateObject("ADODB.Command")
set cmd.ActiveConnection = Conn
cmd.CommandType = adCmdtext
cmd.ComandText = sql
set createCommand = cmd
end function
%>