webForumDet fria alternativet

Sökning

10 svar · 337 visningar · startad av SteveP

StevePMedlem sedan mars 2003772 inlägg
#1

Jag ska bygga en sökfunktion där man ska kunna söka mha 3 - 5 olika saker. Man ska kunna kombinera en sökning genom att söka på namn och sammtidigt klient. Så att den visar alla poster med Namnet man sökte på samt klienten.

Skulle nån kunna beskriva ett bra tillvägagångssett där sökningsdelen är "Flexibel"... man ska alltså kunna söka enbart på klient, enbart på person, enbart på serialnummer eller kombinera alla 3 eller kombiner 2 av dom..osv

InsiderMedlem sedan jan. 2000978 inlägg
#2

OBS! Detta funkar inte om vissa fält i tabellen är tomma.
Ingen perfekt lösning kanske, men ganska enkel att jobba med.

Lägg bara in innehållet i sökfälten där det står SÖKORD. Det spelar ingen roll om det är en tom sträng.

SELECT falt1, falt2, falt3, falt4, falt5
FROM TABELL
WHERE (((falt1) Like '*SÖKORD*') 
AND ((falt2) Like '*SÖKORD*') 
AND ((falt3) Like '*SÖKORD*') 
AND ((falt4) Like '*SÖKORD*') 
AND ((falt5) Like '*SÖKORD*'))
mozillaMedlem sedan juli 20011 084 inlägg
#3

där blev det lite fel väl, menar du inte %

SELECT falt1 FROM TABELL WHERE falt1 LIKE '%[red]"& sokord &"[/red]%'
InsiderMedlem sedan jan. 2000978 inlägg
#4

Satt just och klurade på det.

Det funkar med * i Access. Koden du skrev blir fel. Men fråga mig inte varför. Eller ska det vara % när man använder ASP??

mozillaMedlem sedan juli 20011 084 inlägg
#5

Förövrigt använder jag följande kod som kanske kan fungera för ditt ändamål

For each item in Request.QueryString
	if(Trim(Request.QueryString(item)) <> "" AND Len(Trim(Request.QueryString(item))) => 3) Then
		strWhere = strWhere & item &" LIKE '%"& Request.QueryString(item) &"%' AND "
	end if
Next

strWhere = Left(strWhere,Len(strWhere)-5)

Det förutsätter att input textfälten heter samma sak som i databasen, samt att sökorden är längre än 3 tecken, och att du bara har sökorden i querystringen.

StevePMedlem sedan mars 2003772 inlägg
#6

Men om man bara fyller i 1 fält i din mozilla? Skriver den inte ut ett "AND" förmycket då ?

StevePMedlem sedan mars 2003772 inlägg
#7

Jo men din kod är ju inte flexibel insider.. man måste ju fylla i alla 5 fälten för att den ska returnera rätt data? Jag vill kunna fylla i 1-5 fält. Fyller jag inte i det sista fältet tex så kommer den ju försöka matcha nåt som är tomt. Om man ej fyllt i det sista fältet så ska den inte ens söka på det fältet.

mozillaMedlem sedan juli 20011 084 inlägg
#8

Nej det gör den inte SteveP, för i slutet tar den bort det sista AND. Testa koden så kan du enkelt se hur den fungerar.

InsiderMedlem sedan jan. 2000978 inlägg
#9

Det ska visst funka att utelämna ett eller flera fält.
Det är därför det står en * i SQL-satsen.

Jag har alltså testat den där frågan i Access och då fungerade det. (förutom i de fall då nåt av fälten är tomma)

StevePMedlem sedan mars 2003772 inlägg
#10

Ah funkar primar Mozilla.. cheers!

GladhMedlem sedan maj 20012 812 inlägg
#11

....

- M

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