Tänkte skapa en sökfunktion där man kan söka efter folk beroende på intressen, klass, hur man bor osv... Men säg att någon bara väljer på en av kategorierna, hur gör man då? Klart man kan sätta value på dom som är valda i droplistan redan te x 0 eller så, men hur blir det i sql satsen då?
<%
strBoende = request.form("boende")
strIntresse = request.form("intresse") <-- I detta fal värdet 0
strSQL = "Select * From t_user Where boende = strBoende AND intresse = strIntresse"
%>
Är det inte lättast att bygga en dynamisk sqlsträng beroende på deras val. Du går igenom alla kategorier en efter en och om den är inte är tom (ej vald) byggs den på din fråga
strSQL = "SELECT * FROM [tabell] WHERE id > 0"
If Not Request.Form("stad") = "" Then
strSQL = strSQL & " AND stad = '" & Request.Form("stad") & "'"
End if
If Not Request.Form("fornamn") = "" Then
strSQL = strSQL & " AND fornamn = '" & Request.Form("fornamn") & "'"
End if
'osv... går man igenom alla fält..
strSQL = strSQL & " ORDER BY fornamn ASC"
SQL-satsen blir alltså strSQL
detta fungerar nog.. man kan ju alltid hoppas iaf ;)
men vadå? om man väljer i flera olika dropdowns? detta blir ju bara en liksom... en utplockning från formuläret eftersom det ligger i en if-sats, eller cyklar jag nu?
Jag vet inte, men jag brukar ha radiobuttons som användaren får klicka i om han vill använda ett sätt att söka på. I detta fallet är XText, XPrice osv. radiobuttons...
dim strSQL
strSQL = ""
'Om användaren vill söka på detta sättet så...
If Request.Form("XText") <> "" then
'Om något skrivits in i formulärrutan så...
If Request.Form("strText") <> "" Then
strSQL = "select P_ID_Products, P_Name from Products where P_Name like '%"&Escape(Request.Form("strText"))&"%' "
End If
End If
'Om användaren vill söka på detta sättet så...
If Request.Form("XPrice") <> "" Then
'Om sql-strängen inte är tom ("") byggs den bara på med and osv...
If strSQL <> "" Then
strSQL = strSQL & "and P_Price <"&Request.Form("intPrice") & " "
'Är den tom måste den byggas från början med select osv.
Else
If NOT Request.Form("intPrice") = "all" Then
strSQL = "select P_ID_Products, P_Name from Products where P_Price < " & Escape(Request.Form("intPrice"))
End If
End If
End If
'Om användaren vill söka på detta sättet så...
If Request.Form("XCat") <> "" Then
If strSQL <> "" Then
strSQL = strSQL & " and P_ID_Category ="& Request.Form("strCat")
Else
strSQL = strSQL & "select P_ID_Products, P_Name from Products where P_ID_Category = "& Escape(Request.Form("strCat"))
End If
End If
'Om sql-strängen innehåller några tecken kör vi den mot databasen.
If Len(strSQL) > 0 Then
Set objRS = objConn.execute(strSQL)
If objRS.EOF Then
Response.Write "Inga träffar."
Else
While NOT objRS.EOF
Response.Write "<a href=""productInfo.asp?intprodID=" &_
objRS("P_ID_Products")&""">" &_
objRS("P_Name") &_
"</a><br />"
objRS.MoveNext
Wend
'Städar upp efter användingen av databas och RecordSet.
End If
Call CleanRS()
'Innehåller den ingenting har användaren inte kryssat för några sätt att söka på.
Else
Response.Write "Din sökning är inte fullständig. Gå tillbaka och ändra den."
End If
Du får väll ha värde = "" på de första alternativen i dropdownerna, så att du kollar om det är valt eller inte. Sen kör du flera if sattser ungefär som asp skrev i sitt inlägg, jag förstår inte riktigt problemet
Använder ju nu paging för sökresultaten. Då blir det ju en siffra där nere som anger pageID, men när jag klickar på den så kommer inte samma resultat upp, utan då listas ALLA medlemmar!!! Vad gör man?
formuläret för sökningen ligger ej på samma sida. results.asp är den som listar ut sökresultaten! här följer koden för den sidan:
[red]
<%
strSQLResults = "SELECT * FROM [t_user] WHERE userID > 0"
If Not Request.Form("style") = "" Then
strSQLResults = strSQLResults & " AND userStyle = '" & Request.Form("style") & "'"
End if
If Not Request.Form("politics") = "" Then
strSQLResults = strSQLResults & " AND userPolitics = '" & Request.Form("politics") & "'"
End if
If Not Request.Form("music") = "" Then
strSQLResults = strSQLResults & " AND userMusic = '" & Request.Form("music") & "'"
End if
If Not Request.Form("personality") = "" Then
strSQLResults = strSQLResults & " AND userPersonality = '" & Request.Form("personality") & "'"
End if
If Not Request.Form("hobbies") = "" Then
strSQLResults = strSQLResults & " AND userHobbies = '" & Request.Form("hobbies") & "'"
End if
If Not Request.Form("home") = "" Then
strSQLResults = strSQLResults & " AND userHome = '" & Request.Form("home") & "'"
End if
If Not Request.Form("subject") = "" Then
strSQLResults = strSQLResults & " AND userSubject = '" & Request.Form("subject") & "'"
End if
If Not Request.Form("class") = "" Then
strSQLResults = strSQLResults & " AND userClass = '" & Request.Form("class") & "'"
End if
If Not Request.Form("quickUsername") = "" Then
strSQLResults = strSQLResults & " AND userName = '" & Request.Form("quickUsername") & "'"
End if
%>
<span class="rubrik">Sökresultat:</span><br><br>
<table cellspacing="2" cellpadding="0" class="brod">
<%
response.write "<tr><td width=""20%"" bgcolor=""#FFFFFF""><b>Användarnamn</b></td>"&_
"<td width=""10%"" bgcolor=""#FFFFFF""><b>Kön</b></td>"&_
"<td width=""10%"" bgcolor=""#FFFFFF""><b>Ålder</b></td>"&_
"<td width=""20%"" bgcolor=""#FFFFFF""><b>Bor</b></td>"&_
"<td width=""20%"" bgcolor=""#FFFFFF""><b>Status</b></td>"&_
"<td width=""10%"" bgcolor=""#FFFFFF""><b>Klass</b></td></tr>"
Set objResults = Server.Createobject("Adodb.Recordset")
strSQLResults = strSQLResults & " ORDER BY userFirstName ASC"
intPageId = request.querystring( "pageid" )
if intPageId = "" then intPageId = 1
with objResults
.cursorlocation = 3
.open strSQLResults, objConn
.pagesize = 20
.absolutepage = intPageId
end with
intPages = cint( objResults.pagecount )
intCurrentPost = 0
do while not objResults.eof and intCurrentPost < objResults.pagesize
if bgcolor3 = "EFEFEF" then
bgcolor3 = "FFFFFF"
else
bgcolor3 = "EFEFEF"
end if
strContents = strContents &_
"<tr><td bgcolor=""#"&bgcolor3&""" width=""20%"">" & objResults( "userName" ) & "</td>" &_
"<td bgcolor=""#"&bgcolor3&""" width=""10%"">" & objResults( "userSex" ) & "</td>"&_
"<td bgcolor=""#"&bgcolor3&""" width=""10%"">"& DateDiff("yyyy", objResults("userAge"), Date())&" år</td>"&_
"<td bgcolor=""#"&bgcolor3&""" width=""20%"">"&objResults("userCity") &"</td>"&_
"<td bgcolor=""#"&bgcolor3&""" width=""20%"">"&objResults("userStatus")&"</td>"&_
"<td bgcolor=""#"&bgcolor3&""" width=""10%"">"&objResults("userYear")&"</td></tr>"
intCurrentPost = intCurrentPost + 1
objResults.movenext
loop
for i = 1 to objResults.pagecount
strNavigation = strNavigation & " <span class=""brod""><a href='?pageid=" & i & "&page=results'>" & i & "</a></span>"
next
response.write strContents & "</table>"
response.write "<table><tr><td><span class=""brod"">Sidor:</span> " & strNavigation & "</td></tr></table>"
%>
Puss heeeeej!
273 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25