13. juli 2005 - 13:09Der er
14 kommentarer og 2 løsninger
Tage værdi med fra link og søg i database
Hej
Jeg tager en værdi med fra et link og bruger det i en databasesøgning. Desværre får jeg denne fejl: Microsoft VBScript runtime error '800a000d' Type mismatch: 'CInt' /links.asp, line 63
Her er linket: <a href="links.asp?catagory=Diverse">Diverse</a><br>
Her er min asp code på links.asp <% id = CInt(request.querystring("catagory")) if id <> "" then strSQL = "SELECT * FROM links WHERE catagory = 'id'" %> <a href="loadlink.asp?link=<%=links("link")%>"><%=links("text")%></a> <br>" <% else response.write "Ingen links!" End If
Her er min asp code på links.asp <% id = Request.querystring("catagory") if id <> "" then strSQL = "SELECT * FROM links WHERE catagory = '" & id & "'" 'Her skal du lave en execute til det objekt du har oprettet, som bruges til at opret forbindelse til databasen. Der må mangle noget af din kode. Derefter skal en løkke laves for at smide linksne ud. %> <a href="loadlink.asp?link=<%=links("link")%>"><%=links("text")%></a> <br>" <% else response.write "Ingen links!" End If
Jeg har min connect tidligere: <% Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../DB/database.mdb") Conn.Open DSN %
Jeg har prøvet med dette, men det virker stadig ikke: <% id = Request.querystring("catagory") if id <> "" then strSQL = "SELECT * FROM links WHERE catagory = '" & id & "'" set links = Conn.Execute(strSQL) do while not links.eof%> <a href="loadlink.asp?link=<%=links("link")%>"><%=links("text")%></a> <br> <% links.MoveNext loop %>
id = Request.QueryString("catagory") if id <> "" then strSQL = "SELECT * FROM links WHERE catagory = '" & id & "'" set links = Conn.Execute(strSQL) do while not links.eof %> <a href="loadlink.asp?link=<%=links("link")%>"><%=links("text")%></a> <br> <% links.MoveNext loop
hostgirl >> hvis id er tom så søger man jo på catagory = '' og finder ingen. Omvendt kan man risikere søge på et ord som ikke eksisterer. Så mon ikke denne her er "fiksere" ? ;o) --- <% Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../DB/database.mdb") Conn.Open DSN
Dim id
cat = Request.QueryString("catagory") strSQL = "SELECT * FROM links WHERE catagory = '" & cat & "'" set links = Conn.Execute(strSQL) if not links.eof then do while not links.eof %> <a href="loadlink.asp?link=<%=links("link")%>"><%=links("text")%></a> <br> <% links.MoveNext loop else response.write "Ingen links!" End If
Fedt :) På den side jeg får linkene frem på sorter jeg dem alfabetisk. Jeg ville godt kunne lave et link til en ny side, hvor de i stedet blev sorteret ud fra hits. Desværre taber jeg værdien når jeg linker til en ny side - Er der en måde at "gemme/sende" den på? /kim
kategoriværdien? Den kan du jo sende med i et link <a href="nyside.asp?catagory="&request.querystring("catagory")>nyt link</a> Du kan også have flere querystrings efter hinanden hvis det er det du ønsker <a href="nyside.asp?link=7&vejret=solskin&catagory="&request.querystring("catagory")>nyt link</a> Altså hvor de er sepereret af "&" En anden mulighed er at gemme værdien i en session. En session er unik for hver besøgende og serveren holder selv styr på at gemme denne indtil den besøgende forlader siden Hvis du siger Session("catagory") = request.querystring("catagory") Så kan du på alle dine sider herefter referere til Session("catagory") :o)
Det er snedigt med session - kan man have mange af dem så længe de har forskelligt navn? Skal Session("catagory") = request.querystring("catagory") ligge på side 2 hvor jeg selektere/viser data ud første gang?
I princippet har man kun eet session object men i det kan du lægge alle de navne du ønsker, så ja til det første :o) Du skal sætte din session der hvor du har behov for det. Der hvor brugeren vælger kategorien kan du passende sætte sessionen Så bliver den også rettet hvis brugeren retter kategorien jo :o) På alle sider derefter vil sessionen blive husket Men bemærk den skal sættes først Så hvis brugeren går ind på en side uden at have valgt en kategori hvor du regner med der er valgt en kategori så bør du nok tjekke for dette altså -- if session("catagory") <> "" then response.write "du har valgt kategorien: "&session("catagory") else response.write "du har ikke valgt nogen kategori endnu" end if
Tak for hjælpen begge - jeg tog den nemme løsning med at sende værdi'en i linket, da jeg bruger session i mit log in script. Bange for at der går rod i det. Jeg ved ikke om koden kan renses: <% Response.Write "Kategori: "&Request.Querystring("catagory")& " sorteret alfabetisk"%> <a href="links_hits.asp?catagory=<%=request.querystring("catagory")%>"> (sorter efter hits</a> <img border="0" src="images/pil_f.gif"><img border="0" src="images/pil_f.gif">)<br><br> <% Dim id
cat = Request.QueryString("catagory") strSQL = "SELECT * FROM links WHERE catagory = '" & cat & "'" set links = Conn.Execute(strSQL) if not links.eof then do while not links.eof %> <a href="loadlink.asp?link=<%=links("link")%>"><%=links("text")%></a> <br> <% links.MoveNext loop else response.write "Ingen links!" End If%>
bare en bemærkning, Der kan ikke gå ged i dit login script med mindre du benytter samme navn Session("brugernavn") vil altid være lig brugernavnet selvom du sætter en session("hullabulla") Men det er jo dit valg :o) -- koden ser fin nok ud...du får lige et svar hvis du har kunne bruge noget af det :o)
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.