webForumDet fria alternativet

Sökfunktion i databas - Lite blocket.se över det!

6 svar · 724 visningar · startad av Anton_L

Anton_LMedlem sedan mars 200584 inlägg
#1

Hej!

Jag håller på att göra en enkel kopia av en sökfunktion som ska likna blockets. Jag har ett formulär som innehåller:

Sökord
Kategori
Län

Jag har lyckats så långt att jag kan söka på ord och få upp resultat på min resultatsida, men nu vill jag även kunna nicha sökningarna med län och kategorival!

Min SQL-kod är

SQL = "Select * from annonser Where rubrik LIKE '%" & Request.Form("sokord")& "%'"

Hur ska jag fortsätta för att få in län? AND län=Request.Form("län") osv... ??
Eller kommer detta AND syfta på rubriken??

Min HTML kod med sökformuläret:

		<FORM METHOD="POST" ACTION="sok.asp">
		<input type="text" name="sokord" value="sokord" class="rutan3"> 
		

		<select name="kategori">
					<option value="kategorier">Kategorier</option>
		<option value="Bilar">Bilar</option>
			<option value="Cyklar">Cyklar</option>
				<option value="Skor">Skor</option>
			</select>
<select name="Län">
						<option value="Län">Län</option>
		<option value="Östergötland">Östergötland</option>
			<option value="Norlland">Norrland</option>
				<option value="Skåne">Skåne</option>
		</select>
			<input type="submit" name="submit" value="Sök" class="rutan4">
			</FORM>

Använder ASP som scriptspråk.

Tack :-)

GildebrandMedlem sedan juni 2009920 inlägg
#2

Om jag har förstått dig rätt, så är det precis som du har gjort, men att du lägger till AND län=Request.Form("kategori") i din SQL-fråga, eftersom din DropDownList heter kategori

GildebrandMedlem sedan juni 2009920 inlägg
#3

Tänkte lite fel i mitt förra inlägg, sorry. Funkar det inte såhär?
SQL = "Select * from annonser Where rubrik LIKE '%" & Request.Form("sokord")& "%' AND Län='" & Request.Form("Län") "'"

Kan inte klassisk Asp, men kan inte riktigt se problemet. Sen så ska du inte ha specialtecken i koden, som åäö.

Anton_LMedlem sedan mars 200584 inlägg
#4

Hej!

ÅÄÖ är jag medveten om, ska fixa till det så allt heter som den första variabeln "sok"
Det är säkert inte svårt, jag är bara dum ibland xD Asp:n tror jag nog jag har koll på, var bara själva SQL-frågan jag undra om, men ska testa nu och se vad som händer. Återkommer :)

GildebrandMedlem sedan juni 2009920 inlägg
#5

Tipsar om http://www.w3schools.com/
Jättebra som referens när man undrar nånting :)

Anton_LMedlem sedan mars 200584 inlägg
#6

Hej!

Det funkade med en liten lätt modifiering, slut på programsats & :moose

SQL = "Select * from annonser Where rubrik LIKE '%" & Request.Form("sokord")& "%' AND lan='" & Request.Form("lan") & "'"

Tack för hjälpen där! :)

(Vem behöver w3school när du svarade på 5 minuter med en lösning :p) :bire

newseedMedlem sedan maj 2010117 inlägg
#7

SQL = "Select * from annonser Where rubrik LIKE '%" & Request.Form("sokord")& "%' AND lan='" & Request.Form("lan") & "'"

Jag skulle bara vilja varna dig för att ovanstående kod har svaghet för SQL-injection:
http://en.wikipedia.org/wiki/SQL_injection

Jag föreslår att du tar ut Request.Form("lan") och Request.Form("sokord") i egna variabler och dubbelkollat att den endast innehåller något av de värde du förväntar dig att den skulle innehålla. Ett grundläggande test man bör göra på all indata är att se till att använda escape-tecken framför '.

Om någon söker i din databas på sökordet: "%'; DROP TABLE annonser; --" så har du blivit av med hela din tabell (och även om du skulle ha bra säkerhet i SQL-servern som stoppar detta kan de nog ställa till mycket ofog med radering av annonser).

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