Avatar billede forcedesigner Nybegynder
08. august 2002 - 19:50 Der er 20 kommentarer og
1 løsning

Rullemenu skal søge med....

Jeg har en søgemaskine, som søger i en database med Hardware og Software nyheder. Søgemaskinen virker fint.

Nu har jeg så fået sat en rullemenu med 2 menu: 1. Hardware  2. Software

Hvis jeg skriver noget i tekstboksen og vælger hardware ved rullemenuen skal den hente kun hardware posterne. Hvordan gøre jeg det?

Halvdelen af opgaven er løst, for den virker hvis man ikke bruger rullemenuen.

Her er Søge koden:

<%
If Request.Form("search") <> "" then
    Set DB = Server.CreateObject("ADODB.Connection")
    DBSti = "DBQ=" & Server.Mappath("nyheder.mdb")
    DB.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBSti
    SQL = "select * from nyheder where overskrift like '%" & Request.Form("search") & "%' order by dato desc"
    Set rs = db.Execute (SQL)
    If not rs.eof then
        Response.Write "<table>"
        Response.Write "<tr><td><font face=verdana size=1><b>Dato</b></font></td><td width=30></td><td><font face=verdana size=1><b>Overskrift</b></font></td><td width=30></td><td><font face=verdana size=1><b>Forfatter</b></font></td></tr>"
        Do until rs.eof
      url = rs("overskrift")
            Response.Write "<tr><td><font face=verdana size=1>" & rs("dato") & "</font></td><td width=30></td><td><font face=verdana size=1><a href='vis_nyhed.asp?id="&rs("id")&"'>" & url & "</a></font></td><td width=30></td><td><font face=verdana size=1>" & rs("forfatter") & "</font></td></tr>"
            rs.movenext
        Loop
        Response.Write "</table>"
    Else
        Response.Write "<FONT FACE=Verdana SIZE=1 COLOR=#FF0000><B><center>Nyheden findes ikke i databasen!</center></B></FONT>"
    End if
End if
%>

hjælp mig venner...
Avatar billede a1a1 Novice
08. august 2002 - 19:59 #1
du skal ændre din sql til kun at medtage hardware nyheder

If Request.Form("dinselect") <> "" Then
SQL = "select * from nyheder where overskrift like '%" & Request.Form("search") & "%' AND <det felt der angiver type>=" & Request.Form("dinselect") & " order by dato desc"

Else
SQL = "select * from nyheder where overskrift like '%" & Request.Form("search") & "%' order by dato desc"
End If

;)

Jeg går udfra at du har en kategori i tabellen der angiver typen?
Avatar billede a1a1 Novice
08. august 2002 - 20:00 #2
som er et tal :)
Avatar billede forcedesigner Nybegynder
08. august 2002 - 20:06 #3
Min dinselect hedder valg

jeg forståd ik' rigtig hvad du mener kan du laver hele koden?
Avatar billede forcedesigner Nybegynder
08. august 2002 - 20:07 #4
<det felt der angiver type> det er det jeg ik' forstå
Avatar billede a1a1 Novice
08. august 2002 - 20:17 #5
?
nej, jeg vil ikke lave det hele men jeg vil godt hjælpe dig :)

i databasen der er vel et felt der angiver om det er software eller hardware nyhed ?
(ellers kan du ikke sortere dem)
Avatar billede forcedesigner Nybegynder
08. august 2002 - 20:19 #6
Ja den hedder "nyhed"

Og jeg har prøvet din løsning og der kommer Fejl.
Avatar billede forcedesigner Nybegynder
08. august 2002 - 20:21 #7
Hvor skal det her ligge:
Else
SQL = "select * from nyheder where overskrift like '%" & Request.Form("search") & "%' order by dato desc"
End If

Det kan være jeg har lagt i et forkert sted.
Avatar billede a1a1 Novice
08. august 2002 - 20:24 #8
<%
If Request.Form("search") <> "" then
    Set DB = Server.CreateObject("ADODB.Connection")
    DBSti = "DBQ=" & Server.Mappath("nyheder.mdb")
    DB.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBSti
' her start 

If Request.Form("dinselect") <> "" Then
SQL = "select * from nyheder where overskrift like '%" & Request.Form("search") & "%' AND nyhed=" & Request.Form("dinselect") & " order by dato desc"

Else
SQL = "select * from nyheder where overskrift like '%" & Request.Form("search") & "%' order by dato desc"
End If

' her slut
    Set rs = db.Execute (SQL)
    If not rs.eof then
        Response.Write "<table>"
        Response.Write "<tr><td><font face=verdana size=1><b>Dato</b></font></td><td width=30></td><td><font face=verdana size=1><b>Overskrift</b></font></td><td width=30></td><td><font face=verdana size=1><b>Forfatter</b></font></td></tr>"
        Do until rs.eof
      url = rs("overskrift")
            Response.Write "<tr><td><font face=verdana size=1>" & rs("dato") & "</font></td><td width=30></td><td><font face=verdana size=1><a href='vis_nyhed.asp?id="&rs("id")&"'>" & url & "</a></font></td><td width=30></td><td><font face=verdana size=1>" & rs("forfatter") & "</font></td></tr>"
            rs.movenext
        Loop
        Response.Write "</table>"
    Else
        Response.Write "<FONT FACE=Verdana SIZE=1 COLOR=#FF0000><B><center>Nyheden findes ikke i databasen!</center></B></FONT>"
    End if
End if
%>


Er feltet nyhed et tal?
Avatar billede forcedesigner Nybegynder
08. august 2002 - 20:33 #9
Der kommer denne Fejl:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access-driver] Der er for få parametre. Der var ventet 1.
Avatar billede forcedesigner Nybegynder
08. august 2002 - 20:34 #10
Nej ikke tal, den er text.
Avatar billede a1a1 Novice
08. august 2002 - 20:38 #11
prøv med det her

' her start 

If Request.Form("valg") <> "" Then
SQL = "select * from nyheder where overskrift like '%" & Request.Form("search") & "%' AND nyhed='" & Request.Form("valg") & "' order by dato desc"

Else
SQL = "select * from nyheder where overskrift like '%" & Request.Form("search") & "%' order by dato desc"
End If

' her slut

valuen i selectboxen skal jo så indeholde software og hardware...:)
Avatar billede forcedesigner Nybegynder
08. august 2002 - 20:38 #12
Fejlen er i koden her: Set rs = db.Execute (SQL)
Avatar billede a1a1 Novice
08. august 2002 - 20:42 #13
ja det er fordi der er fejl i SQL en
Avatar billede forcedesigner Nybegynder
08. august 2002 - 20:53 #14
Ok tak, det virker nu.

bare lige det sidste a1, jeg har en ny menu i min rullemenu den hedder alle og det siger sig selv hvad den skal lave.

Elseif Request.Form("valg") = alle Then
SQL = "select * from nyheder where overskrift like '%" & Request.Form("search") & "%' AND nyhed='" & Request.Form("valg") & "' order by dato desc"

Men det virker ik'
Avatar billede a1a1 Novice
08. august 2002 - 20:55 #15
du skal bare lave en tom select value

<option value="">Alle nyheder</option>

:)

den checker allerede om den er tom, og hvis den er bruger den bare din "gamle" SQL

:o)
Avatar billede forcedesigner Nybegynder
08. august 2002 - 20:57 #16
Elseif Request.Form("valg") = alle Then
SQL = "select * from nyheder where overskrift like '%" & Request.Form("search") & "%' order by dato desc"
End if

virker heller ik'
Avatar billede forcedesigner Nybegynder
08. august 2002 - 21:02 #17
>du skal bare lave en tom select value

virker ik'
Avatar billede a1a1 Novice
08. august 2002 - 21:03 #18
? det skal det

hvordan ser din kode ud nu?
Avatar billede a1a1 Novice
08. august 2002 - 21:05 #19
ellers skift denne linie

If Request.Form("valg") <> "" Then
til
If Trim(Request.Form("valg")) <> "" Then

trim sørger for at der ikke er nogle spaces (foran og bagved)
Avatar billede forcedesigner Nybegynder
08. august 2002 - 21:06 #20
Ok nu er jeg med og den virker fint tak A1
Avatar billede a1a1 Novice
08. august 2002 - 21:07 #21
det var da godt, tak for points.:)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester