---
title: "flera dropdown vid sokning"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/108332-flera-dropdown-vid-sokning"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Gimbo"
published: "2004-08-01T18:36:25.000Z"
updated: "2004-08-03T06:39:45.000Z"
replies: 16
views: 410
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/108332-flera-dropdown-vid-sokning"
---

# flera dropdown vid sokning

## #1 — Gimbo, 2004-08-01T18:36Z

har gjort en sokfunktion, dar det finns 7st dropdown listor som man valjer och nar man sedan valjer search sa vill jag att den listar den specifika kombinationen av det jag valt, just nu ar dfet sa att de listar alla poster som den hittar ur varje dropdown...

```
call OpenDb()
Period = request.form("period")
PriceRange = request.form("PriceRange")
Bedrooms = request.form("Bedrooms")
Bathrooms = request.form("Bathrooms")
Furnished = request.form("Furnished")
Parking = request.form("Parking")
Pet = request.form("Pet")

'SQL="SELECT Top 20 * FROM sublets WHERE Status = TRUE"

SQL="SELECT * FROM sublets WHERE Period LIKE '%" & Period & "%' OR Price LIKE '%" & PriceRange & "%' " &_
	 "OR Bedrooms LIKE '%" & Bedrooms & "%' OR Bathrooms LIKE '%" & Bathrooms & "%' OR Furnished LIKE '%" & Furnished & "%' " &_
	 "OR Parking LIKE '%" & Parking & "%' OR Pet LIKE '%" & Pet & "%' AND status = TRUE "
```

jag testade att andra OR till and men de blir det som sa att den hittar den specifika posten, men om man bara valjer att soka m h a en dropdown sa funkar det inte, vill alltsa att man skall kunna soka med samtliga dropdowns OCH med en dropdown om man sa vill

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

## #2 — Peeer, 2004-08-01T19:11Z

Du får bygga upp sql-satsen successivt beroende på vilka select-listor som är använda.

```
Period = request.form("period")
PriceRange = request.form("PriceRange")
Bedrooms = request.form("Bedrooms")
Bathrooms = request.form("Bathrooms")
Furnished = request.form("Furnished")
Parking = request.form("Parking")
Pet = request.form("Pet")

SQL="SELECT * FROM sublets WHERE '1' = '1'"

if Period <> "defaultvärde" then
	SQL = SQL & " and Period LIKE '%" & Period & "%'"
end if

if PriceRange <> "defaultvärde" then
	SQL = SQL & " and Price LIKE '%" & PriceRange & "%'"
end if

'osv..
```

Där "defaultvärde" är det som står i selectlistorna om de inte ändras.

Ingen snygg lösning kanske, men den fungerar :O

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

## #3 — Melea, 2004-08-01T19:26Z

Ser krångligt ut Peeer.

Såhär hade jag gjort i PHP:

```
$data = "";
foreach ($_GET as $key => $value) {
  if (substr($key, 0, 1) != "S")
	continue;
  $key = substr($key, 1); // Tar bort S.
  $data .= "AND $key LIKE '%$value%' ";
}

$data = substr($data, 4); // Tar bort det första AND om det inte ska vara något annat villkor först.
$SQL = mysql_query("SELECT * FROM tabell WHERE $data") or die (mysql_error());
```

Där alla fält har ett prefix, i det här fallet S.

Ex.

```
<form action="" method="get">
<p>
Namn: <input type="text" name="Snamn">
<input type="submit" value="Sök">
</p>
</form>
```

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

## #4 — Fraggel, 2004-08-01T21:35Z

eh!!!
PhP i ASP, VBScript forum???

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

## #5 — Peeer, 2004-08-01T21:39Z

> **Fraggel skrev:**
>
> eh!!!
> PhP i ASP, VBScript forum???

Finns inget som hindrar dig från att översätta om du vill. Principen förstår man ju i alla fall. Meleas lösning är helt klart både smidigare och snyggare än mitt taffliga (men fungerande :P) försök.

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

## #6 — Gimbo, 2004-08-02T02:06Z

uhhh fatta 0 av den dar PHP koden??? kan ngn oversatta till asp???

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

## #7 — MAge, 2004-08-02T13:33Z

Utan någon större möjlighet att testa men.

```
Period = request.form("SPeriod")
PriceRange = request.form("SPriceRange")
Bedrooms = request.form("SBedrooms")
Bathrooms = request.form("SBathrooms")
Furnished = request.form("SFurnished")
Parking = request.form("SParking")
Pet = request.form("SPet")

strSQL = "SELECT * FROM sublets WHERE "
For Each Item In Request.Form
  If Left(Item,1) = "S" AND Not Request.Form(Item) = "" Then
    strSQL = strSQL & LCase(Right(Item,Len(Item)-1)) & " LIKE '%" & LCase(Right(Item,Len(Item)-1)) & "%' AND "
  End If
Next
strSQL = strSQL & "Status = True"
```

Nu borde strSQL se ut som nåt liknande din hårdkodade SQL-sats fast dom droplists som inte har nåt värde står inte med.
Men jag reserverar mig för eventuella felaktigheter pga att jag inte kan testa ;)

/MAge

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

## #8 — Gimbo, 2004-08-02T17:12Z

for foljande felmeddelande:

```
Microsoft JET Database Engine error '80040e0c' 

Command text was not set for the command object. 

/sublets.asp, line 246
```

den klagar pa sql satsen,

jag andrade alla selecttaggars namn till s i borjan, sa att variabeln skulle fa ett varde men fick ovanstaende felmeddelande

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

## #9 — Peeer, 2004-08-02T20:48Z

Du skulle även byta namn på alla selectlistor så att de har samma namn som kolumnen i din tabell (fast med ett inledande "s"). Om du provar att skriva ut sql-satsen istället för att exekvera den, hur ser den ut då?

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

## #10 — MAge, 2004-08-03T00:03Z

S är en mindre bra bokstav att välja eftersom du har oftast har "Send", "Skicka", "Search" på din submit-knapp så Q, Z eller X är ett bättre val

/MAge

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

## #11 — Gimbo, 2004-08-03T04:30Z

detta e vad SQL satsen skriver ut:

```
SELECT * FROM sublets WHERE period LIKE '%period%' AND pricerange LIKE '%pricerange%' AND bedrooms LIKE '%bedrooms%' AND bathrooms LIKE '%bathrooms%' AND furnished LIKE '%furnished%' AND parking LIKE '%parking%' AND pet LIKE '%pet%' AND Status = True 
Microsoft JET Database Engine error '80040e0c' 

Command text was not set for the command object. 

/sublets.asp, line 246
```

har andrat s mot x, det verkar som att den inte far in ett varde i sql fragan, jag satte bathrooms till 2, men i sql fragan star det bathrooms, och nar jag skriver ut request.form bathrroms sa far jag vardet 2, sa??

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

## #12 — MAge, 2004-08-03T05:19Z

Låt oss säja att din dropdown ser ut så här

```
&#9484;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9516;&#9472;&#9488;
&#9474;         &#9474;&#9660;&#9474;
&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9532;&#9472;&#9496;
&#9474; default &#9474;
&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508;
&#9474; värde 1 &#9474;
&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508;
&#9474; värde 2 &#9474;
&#9500;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9508;
&#9474; värde 3 &#9474;
&#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9496;
```

då måste du ändra

```
  If Left(Item,1) = "X" AND Not Request.Form(Item) = "" Then
```

till

```
  If Left(Item,1) = "X" AND Not Request.Form(Item) = "default" Then
```

Men har du nu defaultvärdet till samma som namnet på dropdownen (utan X'et) så kan du skriva

```
  If Left(Item,1) = "X" AND Not Request.Form(Item) = "LCase(Right(Item,Len(Item)-1))" Then
```

/MAge

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

## #13 — MAge, 2004-08-03T05:28Z

Får du det inte att funka kan du byta ut

```
strSQL = strSQL & LCase(Right(Item,Len(Item)-1)) & " LIKE '%" & LCase(Right(Item,Len(Item)-1)) & "%' AND "
```

mot

```
strSQL = strSQL & LCase(Right(Item,Len(Item)-1)) & " LIKE '%" & Request.Form(Item) & "%' AND "
```

och då behöver du inte dom 7 variablerna du deklarerar innan. Men det är kanske inte att föredra om du använder dom på fler ställen.

/MAge

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

## #14 — Gimbo, 2004-08-03T05:47Z

det forsta du namnde funkade inte sa jag valde att byta ut sql fragan mot den andra du postade, da fick jag detta:

```
SELECT * FROM sublets WHERE period LIKE '%Select Period%' AND pricerange LIKE '%Select Range%' AND bedrooms LIKE '%1%' AND bathrooms LIKE '%Bathrooms%' AND furnished LIKE '%Select Option%' AND parking LIKE '%Select Option%' AND pet LIKE '%Select Option%' AND Status = True 
Microsoft JET Database Engine error '80040e0c' 

Command text was not set for the command object. 

/sublets.asp, line 253
```

nu fick den i a f in ett varde i bedrooms men vart kommer felmeddelandet ifran??

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

## #15 — MAge, 2004-08-03T05:53Z

va jag kan se får du fortfarande med defaultvärdet. kolla detta [exemplet](http://sandstrom.no-ip.org/search.asp) så får du se hur SQL-satsen borde se ut

De som man kan/får lägga till sen är en koll ifall ingen dropdown är vald. Annars får man ut allt från databasen

/MAge

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

## #16 — @nders, 2004-08-03T05:56Z

Felmeddelandet betyder att du försöker exekvera något som inte är en SQL-fråga. Du kallar din variabel med frågan för strSQL, jag kan ge mig på att det inte är den du försöker köra med Execute.

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

## #17 — Gimbo, 2004-08-03T06:39Z

DU e grym Mage!! fan va schysst! o anders d stamde det som du sa angaende felmeddelandet

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/108332-flera-dropdown-vid-sokning
