webForumDet fria alternativet

Söka med olika kategorier?

ASP

14 svar · 404 visningar · startad av crisse6

Medlem sedan dec. 20002 526 inlägg
Frågan#1

Heeeej!

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"
%>

????

Medlem sedan dec. 19996 522 inlägg
#2

Ä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

Medlem sedan dec. 20002 526 inlägg
#3

hmm??? kan du ge exempel?

Medlem sedan aug. 2002733 inlägg
#4

kanske?

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 ;)

Medlem sedan dec. 20002 526 inlägg
#5

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?

Medlem sedan dec. 20002 526 inlägg
#6

PEOPLE!

Medlem sedan mars 20021 889 inlägg
#7

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

Kankse hjälper?

:)

Medlem sedan dec. 20002 526 inlägg
#8

hmmm. vet inte riktigt, vill bara ha det så här:

search.jpg
Medlem sedan dec. 20002 526 inlägg
#9

någon borde väl kunna detta???? sen kan det bli ett skript av det hela!!! tror nog flera är fundersamma över en lite mer avancerad sökfunktion...

Medlem sedan dec. 19996 522 inlägg
#10

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

Medlem sedan aug. 2002733 inlägg
#11

crisse6: Min kod fungerar ju då!

Medlem sedan dec. 20002 526 inlägg
#12

jag vet, förlåt att jag inte sa det!!! Men tack min vän!

Medlem sedan dec. 20002 526 inlägg
#13

Okej, ett litet problem!!!

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?

Medlem sedan mars 20021 889 inlägg
#14

Du får väl skicka med sqlsträngen du genererat i ett hidden-fält eller något.
Det beror ju egentligen helt på hur din kod ser ut.

Medlem sedan dec. 20002 526 inlägg
#15

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!

264 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)