---
title: "Sökmotor (till hattrick)"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/87430-sökmotor-till-hattrick"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Calevan"
published: "2003-10-01T20:30:03.000Z"
updated: "2003-10-05T13:51:16.000Z"
replies: 26
views: 776
page: 1
pages: 2
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/87430-sökmotor-till-hattrick"
---

# Sökmotor (till hattrick)

_Sida 1 av 2._

## #1 — Calevan, 2003-10-01T20:30Z

Har en sida där man ska kunna söka på många egenskaper. Se denna sida: <http://w3.chs.chalmers.se/kommitteer/pyrot/fredrik/hattrick/sokwing.asp>

Det är ju så att man inte behöver fylla i värden i alla och då ska den bara söka på det man fyllt i. Hur ska jag bygga upp en sådan sökfunktion?

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

## #2 — sebbz, 2003-10-01T20:31Z

Bara att kolla om du fått input "-INGET-" eller "" från något fält, och anpassa databasfrågan efter detta.

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

## #3 — Calevan, 2003-10-02T15:54Z

> **sebbz skrev:**
>
> Bara att kolla om du fått input "-INGET-" eller "" från något fält, och anpassa databasfrågan efter detta.

go, det var det jag hade tänkt (har satt värdet på "-INGET-" till 0, men hur bygger jag upp SQL satsen? Med ifsatser? och hur ska de ser ut då?

tack!

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

## #4 — Dryden, 2003-10-02T16:07Z

Jag vet inte men...

> **Hattrick skrev:**
>
> 2003-09-29  Scanning
> En liten påminnelse:
> 
> Det är strängeligen förbjudet att skapa, använda eller sprida program som automatiserar delar av spelet eller scannar in information, såvida programmet inte är godkänt av utvecklingsteamet.
> 
> Du får heller inte automatiskt inkludera ngn form av material från Hattrick på andra webtjänster utan tillstånd.

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

## #5 — Calevan, 2003-10-02T20:08Z

> **Dryden skrev:**
>
> Jag vet inte men...
>
> > **Hattrick skrev:**
> >
> > 2003-09-29  Scanning
> > En liten påminnelse:
> > 
> > Det är strängeligen förbjudet att skapa, använda eller sprida program som automatiserar delar av spelet eller scannar in information, såvida programmet inte är godkänt av utvecklingsteamet.
> > 
> > Du får heller inte automatiskt inkludera ngn form av material från Hattrick på andra webtjänster utan tillstånd.

synd för dig att jag inte ska skanna hattricks sidor då, utan en egen databas som jag själv har gjort.

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

## #6 — Calevan, 2003-10-02T21:40Z

frågan är alltså:

hur ändrar man en SQL fråga så att den tar hänsyn just till de parametrar som en användare vill?

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

## #7 — LR^evil.sid, 2003-10-03T04:37Z

```
sql = "select * from tabell where fält = '"&sträng&"'"
"If Trim(Request.Form("lalala")) <> "" then sql = sql & " and fält = "&Trim(Request.Form("lalala"))
```

Borde väl räcka?

Eventuellt

```
For Each i In Request.Form
	If Trim(Request.Form(i)) <> "" Then sql = sql & " and "&i.name&" = "
	If IsNumeric(Trim(Request.Form(i))) Then
	   sql = sql & Trim(Request.Form(i))","
	'AccessDatabas
	'ElseIf IsDate(Trim(Request.Form(i))) Then
	'   sql = sql & "#"&Trim(Request.Form(i))&"#,"
	Else
	   sql = sql & "'"&Trim(Request.Form(i))&"',"
	End If
Next
If Left(sql, 5) = " and " Then sql = Right(sql, (Len(sql) - 5))
sql = Left(sql, Len(sql) - 1)
sql = "select * from tabell where "& sql
```

Inget av kodexemplen är kontrollerade...

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

## #8 — Calevan, 2003-10-04T18:43Z

Den ska ju kolla alla fälten, så då verkar ju kodsnutt två bra. fast tyvärr så förstår jag den inte riktigt... kan du förklara vad den gör och vad de olika ifsatserna igentligen kollar?

tack!

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

## #9 — Dryden, 2003-10-04T19:05Z

> **Calevan skrev:**
>
> synd för dig att jag inte ska skanna hattricks sidor då, utan en egen databas som jag själv har gjort.

Dåså. Kör hårt. ;)

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

## #10 — LR^evil.sid, 2003-10-04T19:24Z

```
For Each i In Request.Form
	If Trim(Request.Form(i)) <> "" Then sql = sql & " and "&i.name&" = " ' om i innehåller data så bygger vi upp sqlsatsen med requestens namn
	If IsNumeric(Trim(Request.Form(i))) Then ' om värdet är numeriskt
	   sql = sql & Trim(Request.Form(i))"," ' formatera sqlfrågan för numeriska fält
	'AccessDatabas
	'ElseIf IsDate(Trim(Request.Form(i))) Then 'om värdet är av datum-tidtyp och databasen är access så "avkommenterar" du denna rad och raden under
	'   sql = sql & "#"&Trim(Request.Form(i))&"#," ' formatera sqlfrågan för fält av datumtyp
	Else ' annars är det vanliga textfält
	   sql = sql & "'"&Trim(Request.Form(i))&"'," ' formatera sqlfrågan för textfält
	End If
Next
If Left(sql, 5) = " and " Then sql = Right(sql, (Len(sql) - 5)) ' ta bort det första "and" ur sqlsatsen, det vill vi inte ha där
sql = Left(sql, Len(sql) - 1) ta bort det sista "," det vill vi inte heller ha där
sql = "select * from tabell where "& sql
```

i ditt formulär sätter du dina fälts namn till fälten i databasen. Tror det vara allt

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

## #11 — Calevan, 2003-10-05T09:25Z

Jag har ju två fält som är kopplade till samma post i databasen (det ser du om du kollar på sidan, en min och en max) hur löser jag det? Är inte så bra på sådana här FSO, fick detta felmedelande:

Microsoft VBScript runtime error '800a01a8' 

Object required: 'i' 

men det kanske beror på att alla fält inte heter som i databasen?

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

## #12 — Calevan, 2003-10-05T09:38Z

Microsoft VBScript runtime error '800a01a8' 

Object required: 'alder' 

fick jag nu. vet inte riktigt vad jag lyckades ändra. tror inte något...

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

## #13 — @nders, 2003-10-05T09:40Z

Visa koden du använder.

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

## #14 — Calevan, 2003-10-05T09:55Z

precis den föreslagna koden!

```
    For Each i In Request.Form
      If Trim(Request.Form(i)) <> "" Then sql = sql & " and "&i.name&" = " ' om i innehåller data så bygger vi upp sqlsatsen med requestens namn
        If IsNumeric(Trim(Request.Form(i))) Then ' om värdet är numeriskt
          sql = sql & Trim(Request.Form(i))&"," ' formatera sqlfrågan för numeriska fält
          
          'AccessDatabas
          'ElseIf IsDate(Trim(Request.Form(i))) Then 'om värdet är av datum-tidtyp och databasen är access så "avkommenterar" du denna rad och raden under 
          'sql = sql & "#"&Trim(Request.Form(i))&"#," ' formatera sqlfrågan för fält av datumtyp
        Else ' annars är det vanliga textfält
	    sql = sql & "'"&Trim(Request.Form(i))&"'," ' formatera sqlfrågan för textfält
	  End If
    Next
    
    Response.Write sql
```

 

kolla länken i första posten för att se sidan och testa den. bara att trycka på sök där så ser du.

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

## #15 — @nders, 2003-10-05T10:14Z

Prova att byta **i.name** till bara i, till att börja med.

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

## #16 — Calevan, 2003-10-05T10:42Z

> **@nders skrev:**
>
> Prova att byta **i.name** till bara i, till att börja med.

innehåller inte bara i värdet? jag vill ju ha namnet på värdet i SQL satsen oxå. fick något svar, men jag vet inte riktigt hur. testa sidan om du vill.

kan du förklara varför jag skulle ta bort .name? tack!

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

## #17 — @nders, 2003-10-05T10:54Z

i innehåller fältnamnet, request.form(i) följdaktligen värdet.

Du får också lägga till en if-sats, eftersom submit-knappen inte ska vara med i SQL-frågan.

\- - - - 

Dock tycker jag inte att det är rätt approach med en for-loop här. Är det inte så att spelaregenskaperna borde sökas mellan 1 och 4 till exempel? Du har väl inte fälten *spelupplagg* och *spelupplagg1* i tabellen, utan det är endast fältet spelupplagg som ska ha mellan 1 och 4 om jag gör en sökning mellan katastrofal och hyfsad?

Du får nog skriva om allt och göra det manuellt för varje fält.

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

## #18 — @nders, 2003-10-05T10:56Z

> **Calevan skrev:**
>
> kan du förklara varför jag skulle ta bort .name? tack!

Kan du förklara varför du skulle ha kvar name? Jag har aldrig hört talas om en sådan metod i request.form, och jag antar att det var därför du fick felmeddelandet. Mina fem cent, men jag kan ha fel...

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

## #19 — Nexus86, 2003-10-05T10:59Z

Du kan även byta ut alla **Trim(Request.Form(i))** mot **Trim(i)** eftersom i får värdet och inte indexet iom att du använder For Each.

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

## #20 — Calevan, 2003-10-05T11:00Z

> **@nders skrev:**
>
> > **Calevan skrev:**
> >
> > kan du förklara varför jag skulle ta bort .name? tack!
>
> Kan du förklara varför du skulle ha kvar name? Jag har aldrig hört talas om en sådan metod i request.form, och jag antar att det var därför du fick felmeddelandet. Mina fem cent, men jag kan ha fel...

Trodde det hade med For Each i In Request.Form att göra. dvs någon form av FSO.

jag vill ju inte bara ha värdet på "i" i SQL satsen utan även vilket fält det är som har det värdet, dvs i's namn. hur kan jag lösa det på annat sätt?

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/87430-sökmotor-till-hattrick  
Nästa sida: https://www.webforum.nu/amne/asp/87430-sökmotor-till-hattrick/page2.md
