---
title: "Avancerad sökning"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/10692-avancerad-sökning"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Addeladde"
published: "2001-07-19T12:50:00.000Z"
updated: "2001-07-20T15:24:00.000Z"
replies: 18
views: 330
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/10692-avancerad-sökning"
---

# Avancerad sökning

## #1 — Addeladde, 2001-07-19T12:50Z

Jag håller på att bygga en sökfunktion för produkter. Den ska söka efter produktnamnet. Jag har redan gjort en sökfunktion som fungerar hyffsat.

```
Set prodRS = Server.CreateObject( "ADODB.Recordset" )
prodRS.ActiveConnection = Con
prodRS.CursorType = adOpenStatic
prodRS.Pagesize = 6

sqlString = "SELECT produkt_id, produkt_bild_liten, produkt_namn, produkt_pris, produkt_info_liten " &_
  "FROM Produkter " &_
  "WHERE produkt_namn LIKE '%" & sokProdukt & "%' " &_
  "AND produkt_status=1 " &_
  "ORDER BY produkt_namn"
prodRS.Open sqlString
prodRS.AbsolutePage = pg
```

Om man skriver två ord i sökformuläret så söker den bara efter det första ordet.

Exempel om en produkt finns inlaggd i databasen med namnet "Compaq Ipaq"

så söker man efter "Handator Ipaq" då hittar den inget.

Hur gör man OBS jag använder SQL-Server

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

## #2 — PatrikB, 2001-07-19T12:56Z

Du kan ju splitta upp söksträngen till en array, dvs att varje ord som ges i sökfältet kommer att få en egen position i arrayen.

Sedan loopar du igenom arrayen och bygger sql-frågans where sats dynamiskt

cya,
PatrikB

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

## #3 — Addeladde, 2001-07-19T13:06Z

Okej det svaret känner man igen använd array. Något jag måste ta mig tid att lära mig lite bättre.

Men jag har lite bråtom just nu så det vore jätte schyst om du kunde hjälpa mig med koden.

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

## #4 — PatrikB, 2001-07-19T14:03Z

ok, ngt liknande:

```
sqlString = "SELECT produkt_id, produkt_bild_liten, produkt_namn, produkt_pris, produkt_info_liten " &_
	"FROM Produkter " & _
	"WHERE ("

arrSokProdukt = Split(sokProdukt)

For I = 0 To UBound(sokProdukt)

	If I > 0 Then
		sqlString = sqlString & "OR produkt_namn LIKE '%" & sokProdukt & "%' "
	Else
		sqlString = sqlString & " produkt_namn LIKE '%" & sokProdukt & "%' "
	End If
Next	

sqlString = sqlString & ") AND produkt_status=1 ORDER BY produkt_namn"
```

kom ihåg ... otestad kod \*ler\*

cya,
PatrikB

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

## #5 — Addeladde, 2001-07-19T14:34Z

Nu får jag felmeddelande:

Inkompatibla typer: 'UBound'

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

## #6 — LarsG, 2001-07-19T14:38Z

```
For I = 0 To UBound(arrsokProdukt)
```

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

## #7 — Addeladde, 2001-07-19T14:40Z

Ändrade

```
For I = 0 To UBound(sokProdukt)
```

till

```
For I = 0 To UBound(arrsokProdukt)
```

men den hittar inte efter två ord

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

## #8 — LarsG, 2001-07-19T14:50Z

```
If I > 0 Then
sqlString = sqlString & "OR produkt_namn LIKE '%" & arrsokProdukt(i) & "%' "
Else
sqlString = sqlString & " produkt_namn LIKE '%" & arrsokProdukt(i) & "%' "
End If
```

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

## #9 — Addeladde, 2001-07-19T14:55Z

Tack nu fungerar det bra.

Måste lära mig array. verkar ju gå att lösa mycket med det.

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

## #10 — PatrikB, 2001-07-19T16:25Z

som sagt ... sa juuu att det var otestad kod .... kilpp och klister ....

fast va bra att det ordnade sig till slut \*ler o skäms\*

cya,
PatrikB

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

## #11 — PatrikB, 2001-07-19T16:49Z

För att göra den mer avancerad så kan man ju fixa till så att om en användare lägger till ett - före ett ord så ska inga poster med det ordet sökas eller om ett + är satt framför ett ord så måste det ordet följa med i alla sökningar.

cya,
PatrikB

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

## #12 — Herman, 2001-07-19T17:18Z

precis och sedan kanska man vill söka på just: "Compaq Ipaq" 
och inte: Compaq ELLER Ipaq
och inte: Compaq OCH Ipaq

Vore snyggt om någon kunde lägga upp ett sådant script här på webforum :)

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

## #13 — Addeladde, 2001-07-19T17:43Z

Var kan man hitta information om det.

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

## #14 — PatrikB, 2001-07-19T18:01Z

Att söka efter den exakta frasen är en lätt grej att göra med tex en checkbox som får klickas i om sökningen ska mathca exakt det som står i sökfältet.

Bara att kolla om den är iklickad eller inte. Är den iklickad skippar man spliten till arrayen.

cya,
PatrikB

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

## #15 — Herman, 2001-07-19T18:09Z

dä förståss. Men jag tänkte mer en altavista funktion där man kan använda både + å - å frassökning.

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

## #16 — emission, 2001-07-19T23:13Z

<http://cgi.webforum.nu/wf/Forum11/HTML/000405.html> 

Ska snygga upp den koden nu under semestern... :)

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

## #17 — RDL, 2001-07-19T23:24Z

Skulle inte orginalet sett ut så här?? hehe =)

busted!!

\<%
sqlString = "SELECT product_id, product_picture, product_name, product_briefDesc " &\_
  "FROM Products " &\_
  "WHERE product_status = 1 " &\_
  "AND ( product_name LIKE '%" & searchFor & "%' " &\_
  "OR product_briefDesc LIKE '%" & searchFor & "%')  " &\_
  "ORDER BY product_name "

SET RS = Con.Execute( sqlString )
IF NOT RS.EOF AND searchFor \<\> "" THEN
%\>

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

## #18 — Herman, 2001-07-19T23:35Z

Snyggt emission!
Ska flukta lite på koden innan jag gömmer mig för natten :)

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

## #19 — Addeladde, 2001-07-20T15:24Z

Vad menar du RDL

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/10692-avancerad-sökning
