---
title: "Sökoptions"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/9855-sökoptions"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Lazerzubb"
published: "2001-06-03T15:38:00.000Z"
updated: "2001-06-03T18:16:00.000Z"
replies: 2
views: 289
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/9855-sökoptions"
---

# Sökoptions

## #1 — Lazerzubb, 2001-06-03T15:38Z

Säg att du vill söka med 3 fält
första fältet du fyller i är skriver man Land, Province, Stad andra fältet ska vara där man fyller i Priset Typ BETWEEN  1000:-Kr / 100000:-Kr och tredje fältet ska vara exakt man fyller i hur många Platser man ska ha.

Permalänk: https://www.webforum.nu/p/9855

## #2 — jepsO, 2001-06-03T15:45Z

Du får nog precisera dig lite.

Fält 1: Ska man skriva alla tre, dvs "Sverige, Uppland, Uppsala", eller endast någon av Land, Provins, Stad, t.ex. "Borås"?

Fält 2: Hur vill du att man ska skriva? "1000-10000", eller två separata fält med min-pris och max-pris?

Fält 3: Platser? Är det hela tänkt för en resebyrå, dvs hur många flygstolar man vill ha?

Som sagt, precisera dig lite.

Permalänk: https://www.webforum.nu/p/270799

## #3 — Lazerzubb, 2001-06-03T18:16Z

2\. Ja
3\. Nä jag tog det bara som exempel men det ska vara en fast siffra.
dim i,j,mQuery,mQueryArr,mAndArr,mNotArr,mOrArr,mSQL,mWhere
'grunddelarna i frågan
mSQL="SELECT \* FROM search1 WHERE " 
mWhere="(country LIKE '%%') OR (province LIKE '%%') OR (city LIKE '%%')"
'sökfältets värde
mQuery=request.form("fsearch")
'loopa igenom allt och ersätt mellanslag inom citattecken med chr(1). 
'Denna bit går att göra med reguljära uttryck också
for i=1 to len(mQuery)
mAsc=asc(mid(mQuery,i,1))
if mAsc=34 then
mCount=mCount+1
blnInQ=not blnInQ
else
if blnInQ and mAsc=32 then
mQuery=left(mQuery,i-1) & chr(1) & mid(mQuery,i+1)
end if
end if

next

'om antalet citattecken är ojämnt ignoreras de helt
if mCount mod 2 \<\> 0 then
mQuery=replace(mQuery,chr(1)," ")
end if

'ta bort citattecknen
mQuery=replace(mQuery,chr(34),"")

'ersätt mellanslag med chr(0) och mellanslag
mQuery=chr(0) & replace(mQuery," "," " & chr(0))

'splitta upp i en array
mQueryArr=split(mQuery," ")

'skapa arrayer för AND, AND NOT och OR. 
'chr(0) gör det nu möjligt att matcha endast början på strängarna
mAndArr=filter(mQueryArr,chr(0) & "+",true)
mQueryArr=filter(mQueryArr,chr(0) & "+",false)
mNotArr=filter(mQueryArr,chr(0) & "-",true)
mQueryArr=filter(mQueryArr,chr(0) & "-",false)

'återskapa strängarna (ersätt chr(1) med mellanslag) och
'skapa WHERE-satser i arrayerna
for i=0 to ubound(mAndArr)
mAndArr(i)=replace(mAndArr(i),chr(1)," ")
mAndArr(i)=replace(mWhere,"%%","%" & mid(mAndArr(i),3) & "%")
next
for i=0 to ubound(mNotArr)
mNotArr(i)=replace(mNotArr(i),chr(1)," ")
mNotArr(i)=replace(mWhere,"%%","%" & mid(mNotArr(i),3) & "%")
next
for i=0 to ubound(mQueryArr)
mQueryArr(i)=replace(mQueryArr(i),chr(1)," ")
mQueryArr(i)=replace(mWhere,"%%","%" & mid(mQueryArr(i),2) & "%")
next

'tejpa ihop en färdig fråga
mQuery=join(mQueryArr," OR ")
if mQuery\<\>"" then 
mQuery="(" & mQuery & ")"
if ubound(mAndArr) \> -1 then mQuery=mQuery & " AND "
end if
mQuery=mQuery & join(mAndArr," AND ")
if mQuery\<\>"" and ubound(mNotArr) \> -1 then mQuery=mQuery & " AND NOT "
mQuery=mSQL & mQuery & join(mNotArr," AND NOT ")

set rs=Connection.execute (mQuery)

%\>

Permalänk: https://www.webforum.nu/p/270800

---

Tråden på webben: https://www.webforum.nu/amne/asp/9855-sökoptions
