23. juni 2005 - 17:22Der er
43 kommentarer og 1 løsning
Søgefunktion med flere valg ?
Sidder lige og bixer med en søgefunktion, og jeg har INGEN idé om hvor jeg skal begynde. Det ser sådan her ud grafisk: [url]http://manhunter.users.whitehat.dk/Soeg.JPG[/url]
Det skal være sådan at man kan søge på alle 3 ting, og så sådan så man også kan søge f.eks kun på 1 ting eller 2 ting. Kort sagt, lige meget hvad man søger på skal den finde ud af det Koden jeg har indtil videre er:
<% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open server.MapPath("CarTraders.mdb") %>
set rs=Server.CreateObject("ADODB.recordset") rs.Open "Select * from Salg where maerke = '" & maerke & "'", conn if maerke = "" Then else do until rs.eof
If Brugercount>0 then firstbruger=request.form("HEN")(1) SQLtemp = "(brugernavn='" & firstbruger & "'" for counter=2 to brugercount whichBruger=request.form("HEN")(counter) SQLtemp = SQLtemp & " or Brugernavn='" & whichbruger & "' " next SQLtemp = SQLtemp & ")" BrugerPresent=" AND " end if if request.form("txtbruger")>"" then SQLtemp = SQLtemp & BrugerPresent & "Brugernavn like '%" & request.form("txtbruger") & "%'" BrugerPresent=" AND " end if if request.form("txtpw")>"" then SQLtemp = SQLtemp & BrugerPresent & "pasord like '%" & request.form("txtpw") & "%'" BrugerPresent=" AND " end if if request.form("txtfn")>"" then SQLtemp = SQLtemp & BrugerPresent & "Fulde_navn like '%" & request.form("txtfn") & "%'" BrugerPresent=" AND " end if If PWcount>0 then firstPW=request.form("HEN2")(1) SQLtemp = SQLtemp & BrugerPresent & "(pasord='" & firstPW & "'" for counter=2 to PWcount whichPW=request.form("HEN2")(counter) SQLtemp = SQLtemp & " or pasord='" & whichPW & "' " next SQLtemp = SQLtemp & ")" BrugerPresent=" AND " end if
If FNcount>0 then firstFN=request.form("HEN1")(1) SQLtemp = SQLtemp & BrugerPresent & "(Fulde_navn='" & firstFN & "'" for counter=2 to FNcount whichFN=request.form("HEN1")(counter) SQLtemp = SQLtemp & " or Fulde_navn='" & whichFN & "' " next SQLtemp = SQLtemp & ")" BrugerPresent=" AND " end if
If BrugerNiv>0 then SQLtemp = SQLtemp & BrugerPresent & "(userlevel=" & BrugerNiv & ")" BrugerPresent=" AND "
end if
If datostart>"" and isdate(datostart) then datostart= Cdate(datostart) datostart= CLng(datostart) if BrugerPresent>"" then SQLtemp = SQLtemp & BrugerPresent & "([OprettelsesDato] >=" & datostart & ")" else SQLtemp = "([OprettelsesDato] >=" & datostart & ")" end if end if
If datoslut>"" and isdate(datoslut) then datoslut= Cdate(datoslut) datoslut= CLng(datoslut) if BrugerPresent>"" then SQLtemp = SQLtemp & BrugerPresent & "([OprettelsesDato] <=" & datoslut & ")" else SQLtemp = "([OprettelsesDato] <=" & datoslut & ")" end if end if %> <font color="crimson"><%
if SQLTemp="" then SQLTemp=SQLStart & "true" & sqlsort else SQLTemp=SQLStart & SQLTemp & sqlsort end if response.write SQLtemp%></font></p>
if maerke <> "" then SQL = SQL & "maerke='" & maerke &"' AND " end if
if txtsoegbil <> "" then SQL = SQL & "txtsoegbil LIKE '%" & txtsoegbil &"%' AND " end if
if aargang <> "" then SQL = SQL & "aargang='" & aargang &"' AND " end if
if right(SQL,4) = "AND " then SQL = left(SQL, len(SQL)-4) end if
set rs=Server.CreateObject("ADODB.recordset") rs.Open "Select * from Salg where " & SQL, conn if rs.eof Then response.write "Ingen fundet" else do until rs.eof
Ovenstånde er baseret på, at dine felter i databasen hedder det samme som dine søgestrenge og at alle er at typen tekst.
if right(SQL,4) = "AND " then SQL = left(SQL, len(SQL)-4) end if
Så gør den det, at den ser efter om SQL strengen ender på "AND " og hvis den gør, så skal den fjerne det ellers vil der komme en fejl i forespørgelsen.
Aha, fandt lige ud af noget, Hvis man søger kun på årgang finder den intet, men hvis jeg søger på f.eks M5 i model så vil den godt finde annoncen, altså både Årgang og Model søgefeltet skal være rigtige før det virker (Skal jo helst ikke være sådan)
Har postet forespørgslen på dem, og der sagde den jo: Der er ikke angivet nogen værdi for en eller flere krævede parametre.
Uha vi nærmer os ! :D Den kunne ikke gå i ged nu, men man SKULLE vælge en årgang, så kan man ikke lige lave det om så man kan fravælge af søge på det ?
Det med if aargang <> "År" then SQL = SQL & "Aargang=" & aargang &" AND " end if
Virkede ikke, der siger den
Fejltype: Microsoft JET Database Engine (0x80040E14) Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "Maerke='' AND Aargang=". /Soeg.asp, line 109
Og henviser igen til: set rs=conn.execute(SQLstmt)
Godt gået her på årets hotteste aften. Jeg toror blot ikke manhunter forstod potentialet i mit script oplæg med mulighed for multiselect af årgang, bil etc eller også havde han mere brug for en pakkeløsning ;-) God sommer
Hav en god varm weekend. En tager til westerhaushytten om få timer.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.