webForumDet fria alternativet

Sök användare

ASP

6 svar · 241 visningar · startad av Wiklund!!

Medlem sedan juli 2002549 inlägg
Frågan#1

Har gjort en sökfunktion till mitt community. Man anger kön, land, status och hur man ska sortera posterna (efter användarnamn, kön osv) samt i stigande eller fallande form för att få fram de användare man vill.

Det vart lite väl mkt kod när jag skulle få fram sql satsen. Här är en liten bit av koden för att öppna sql satsen:

If Request.QueryString("country") = "" and Request.QueryString("gender") <> "" and Request.QueryString("status") <> "" and Request.QueryString("sport") <> "" Then
Add = "SELECT * FROM users WHERE username Like '%" & Request.QueryString("username") & "%' and gender = '"& Request.QueryString("gender") &"' and status = '"& Request.QueryString("status") &"' and interesstedin = '"& Request.QueryString("sport") &"' ORDER by "& Request.QueryString("order") &" "& Request.QueryString("desc") &", username ASC"
RecSet.Open Add, Connect, adOpenStatic, adLockOptimistic

ElseIf Request.QueryString("country") <> "" and Request.QueryString("gender") = "" and Request.QueryString("status") <> "" and Request.QueryString("sport") <> "" Then
Add = "SELECT * FROM users WHERE username Like '%" & Request.QueryString("username") & "%' and country = '"& Request.QueryString("coutry") &"' and status = '"& Request.QueryString("status") &"' and interesstedin = '"& Request.QueryString("sport") &"' ORDER by "& Request.QueryString("order") &" "& Request.QueryString("desc") &", username ASC"
RecSet.Open Add, Connect, adOpenStatic, adLockOptimistic

ElseIf Request.QueryString("country") <> "" and Request.QueryString("gender") <> "" and Request.QueryString("status") = "" and Request.QueryString("sport") <> "" Then
Add = "SELECT * FROM users WHERE username Like '%" & Request.QueryString("username") & "%' and country = '"& Request.QueryString("country") &"' and gender = '"& Request.QueryString("gender") &"' and interesstedin = '"& Request.QueryString("sport") &"' ORDER by "& Request.QueryString("order") &" "& Request.QueryString("desc") &", username ASC"
RecSet.Open Add, Connect, adOpenStatic, adLockOptimistic

ElseIf Request.QueryString("country") <> "" and Request.QueryString("gender") <> "" and Request.QueryString("status") <> "" and Request.QueryString("sport") = "" Then
Add = "SELECT * FROM users WHERE username Like '%" & Request.QueryString("username") & "%' and country = '"& Request.QueryString("country") &"' and gender = '"& Request.QueryString("gender") &"' and status = '"& Request.QueryString("status") &"' ORDER by "& Request.QueryString("order") &" "& Request.QueryString("desc") &", username ASC"
RecSet.Open Add, Connect, adOpenStatic, adLockOptimistic

ElseIf Request.QueryString("country") = "" and Request.QueryString("gender") = "" and Request.QueryString("status") <> "" and Request.QueryString("sport") <> "" Then
Add = "SELECT * FROM users WHERE username Like '%" & Request.QueryString("username") & "%' and status = '"& Request.QueryString("status") &"' and interesstedin = '"& Request.QueryString("sport") &"' ORDER by "& Request.QueryString("order") &" "& Request.QueryString("desc") &", username ASC"
RecSet.Open Add, Connect, adOpenStatic, adLockOptimistic

Min fråga är om det finns något enklare sätt att få fram sql satsen?

Medlem sedan dec. 200012 464 inlägg
#2

Jo

Add = "SELECT * FROM users WHERE 1=1 "
if request.querystring("username") <> "" then
add = add & "and username like '%" & _
replace(request.querystring("username"),"'","''") & "%'"
end if
'nästa villkor

'sortering
Medlem sedan juli 2002549 inlägg
#3

Vet inte riktigt hur man ska sätta in de andra villkoren. Får inte till det. Har gjort så här men det blir ju inte rätt:

Add = "SELECT * FROM users WHERE 1=1 "
if request.querystring("username") <> "" then
add = add & "and username like '%" & _
replace(request.querystring("username"),"'","''") & "%'"
end if
if request.querystring("country") <> "" then
add = add & "and country =" & _
request.querystring("country") &""
end if
if request.querystring("gender") <> "" then
add = add & "and gender =" & _
request.querystring("gender") &""
end if
'sortering
RecSet.Open Add, Connect, adOpenStatic, adLockOptimistic
Medlem sedan dec. 200012 464 inlägg
#4

Det saknas lite apostrofer

Add = "SELECT * FROM users WHERE 1=1 "
if request.querystring("username") <> "" then
add = add & "and username like '%" & _
replace(request.querystring("username"),"'","''") & "%'"
end if
if request.querystring("country") <> "" then
add = add & "and country ='" & _
request.querystring("country") &"'"
end if
if request.querystring("gender") <> "" then
add = add & "and gender ='" & _
request.querystring("gender") &"'"
end if
'sortering
RecSet.Open Add, Connect, adOpenStatic, adLockOptimistic

Vad får du för fel?

Medlem sedan juli 2002549 inlägg
#5

Så nu har jag fått till det mesta. Bara ORDER BY delen som inte fungerar. Testade att göra så här:

add = add & "ORDER by '"& Request.QueryString("order") &"'"
add = add & "'"& Request.QueryString("desc") &"'"
add = add & ",username ASC"

Får inget felmeddelande, bara det att posterna sorteras efter användarnamnet även fast man valt att de ska sorteras efter åldern.

Måste lära mig lite mer om sql satser tror jag!

Medlem sedan juni 200032 967 inlägg
#6

Du ska inte ha apostrofer runt fältnamn och sorteringsordning.

add = add & "ORDER by "& Request.QueryString("order") 
add = add & " "& Request.QueryString("desc")
add = add & ", username ASC"

mvh

Medlem sedan juli 2002549 inlägg
#7

Tack LarsG och @nders fungerar bra nu. Känndes lite onödigt med 150 raders koden jag hade gjort tidigare, visste att det fanns något enklare sätt!

270 ms totalt · 3 externa anrop · v20260731065814-full.a4a6ad0e
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)