Avatar billede sapworld Nybegynder
13. juli 2005 - 13:09 Der 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

%>
Nogen der kan se fejlen?

/Kim
Avatar billede hostgirl Nybegynder
13. juli 2005 - 13:14 #1
Ja, det er forholdvis ligetil, ændre det til:

<a href="links.asp?catagory=Diverse">Diverse</a><br>

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

%>
Avatar billede busschou Praktikant
13. juli 2005 - 13:17 #2
og forklaringen på din fejlmeddelese er at CInt type caster til et integer, et tal. og "Diverse" er jo ikke et tal :o)
Avatar billede sapworld Nybegynder
13. juli 2005 - 13:25 #3
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
%>     



<%
Conn.Close
%>
Avatar billede sapworld Nybegynder
13. juli 2005 - 13:26 #4
Busschou: ahh ok - Det er genbrug af kode ;)
Avatar billede sapworld Nybegynder
13. juli 2005 - 13:29 #5
Nu virker det - slettede denne: if id <> "" then
Avatar billede hostgirl Nybegynder
13. juli 2005 - 13:32 #6
<%
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

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
   
else
  response.write "Ingen links!"
End If

Conn.Close
%>

Prøv dette, evt skriv hvad fejl du får....
Avatar billede busschou Praktikant
13. juli 2005 - 13:38 #7
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

Conn.Close
%>
Avatar billede sapworld Nybegynder
13. juli 2005 - 17:45 #8
Kan man også skrive teksten man hiver med over i søgning på siden?
Nogen i stil med: Du har valgt katagori .......
Avatar billede busschou Praktikant
13. juli 2005 - 20:14 #9
ja ja den ligger jo i din querystring
--
Response.Write "Du har valgt kategorien: "&Request.Querystring("catagory")
Avatar billede sapworld Nybegynder
13. juli 2005 - 20:53 #10
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
Avatar billede busschou Praktikant
14. juli 2005 - 09:32 #11
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)
Avatar billede sapworld Nybegynder
14. juli 2005 - 10:59 #12
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?
Avatar billede busschou Praktikant
14. juli 2005 - 11:04 #13
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
Avatar billede sapworld Nybegynder
14. juli 2005 - 15:59 #14
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%>
Avatar billede busschou Praktikant
14. juli 2005 - 16:04 #15
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)
Avatar billede sapworld Nybegynder
14. juli 2005 - 17:06 #16
Tak for hjælpen :)
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