webForumDet fria alternativet

Sökmotor (till hattrick)

ASP

26 svar · 763 visningar · startad av Calevan · sida 2 av 2

Frågan, av Calevan

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?

Läs frågan i sin helhet →
Medlem sedan juni 200032 967 inlägg
#21

Calevan skrev:

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?

i ---> fältnamnet
request.form(i) ---> värdet

Vad hänger du inte med på?

- - - - -

Request.Form har inget med FSO att göra.

Medlem sedan maj 20031 173 inlägg
#22

okey! jag såg någon liknande kod en gång och då hade det med FSO att göra, men jag ser ju nu att jag är ute och cyklar. nu fattar jag vad du menar! ska testa det.

Medlem sedan okt. 20023 030 inlägg
#23

@nders skrev:

i ---> fältnamnet
request.form(i) ---> värdet

Isåfall skiljer sig Request.Form från en vanlig array för om man kör For Each på en vanlig array får man:

i ---> värdet

Iaf i VB men borde ju vara samma i ASP kan man tycka. :)

Medlem sedan mars 20015 287 inlägg
#24

Nexus86:
När du loopar For Each i In Request.Form så är det alla formulärnamn som du får ut, inte värdena i själva formen.

Medlem sedan okt. 20023 030 inlägg
#25

Okej. Då ger jag mig. Visste inte att det betedde sig annorlunda. :)

Medlem sedan maj 2002560 inlägg
#26

Sry... Klippte in koden från en for loop där jag loopar ut namnet på fälten i ett recordset.

Men jag vill försvara mig med att jag faktiskt skrev att inget av kodexemplen var provade. ; P

Medlem sedan maj 20031 173 inlägg
#27

såhär blev min kod tillslut. den fungerar så som jag ville ha det. ni är välkommna att testa. Tack till er som hjälpte till!

    For Each i In Request.Form
      If Trim(Request.Form(i)) >= "1" Then
        sql = sql & " and "& i &" >= " ' 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
	  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) - 24) 'ta bort det sista "," det vill vi inte heller ha där. tar även bort submit grejen som skickas via formuläret
    
    sql = Replace(sql, "1 >", " <")
      
    sql = "SELECT * FROM wing WHERE "& sql & " ORDER BY id DESC"
         
    Set RecSet = Connect.Execute(SQL)
264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)