Avatar billede Slettet bruger
24. februar 2001 - 15:15 Der er 8 kommentarer og
1 løsning

Hente data fra databasen...*newbie spørgsmål*

Hejsa...

Jeg har fået et freescript fra netcoders.dk hvor du kan tilføje dit eget link på min website... i kender jo alle den slags asp, men jeg kan ikke finde ud af at hente data fra databasen... (access)

Koden ser sådan ud:

<%
strMode = Request.Querystring(\"mode\")
select case strMode
case \"id\"

Response.Buffer = True

\' Her opdateres hits når brugeren bliver sendt til et link
Set myConn = Server.CreateObject(\"ADODB.Connection\")
myConn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"links.mdb\")
If Request.QueryString(\"id\") <> \"\" Then
    Set rs = Server.CreateObject(\"ADODB.RecordSet\")
    strSQL = \"SELECT * FROM links WHERE (ID = \" & Request.QueryString(\"id\") & \")\"
    rs.Open strSQL, myConn, 1, 3
    If Not (rs.BOF Or rs.EOF) Then
        rs(\"Hits\") = rs(\"Hits\") + 1
        strURL = rs(\"URL\")
        rs.Update
        rs.Close
        myConn.Close
        Set rs = Nothing
        Set myConn = Nothing
        Response.Clear
        Response.Redirect(strURL)
    End If
End If
%>
<table border=0 cellpadding=5 cellspacing=0 height=\"107\" width=526>
  <tbody>
  <tr align=left valign=top>
    <td height=344 width=\"516\"> <% case \"search\"
\' Siden med søgeresultater

\' Database connection
Set myConn = Server.CreateObject(\"ADODB.Connection\")
myConn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & Server.MapPath(\"links.mdb\")
\' Henter søgeorden fra formularen
strKeyword = Trim(Request.Form(\"søgeord\"))

If Len(strKeyword) = 0 Then
\' Hvis der ikke er skrevet i formularen sendes brugeren tilbage
    Response.Clear
    Response.Redirect (\"links.asp?mode=søg\")
Else
    strKeyword = Replace(strKeyword,\"\'\",\"\'\'\")
End If

\' Opbygger en dynamisk SQL streng
strSQL = \"SELECT id, navn, url, beskrivelse, hits, søgeord  FROM links WHERE\"
strSQL = strSQL & \" (id LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (navn LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (url LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (beskrivelse LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (hits LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (søgeord LIKE \'%\" & strKeyword & \"%\')\"


\' Skaber et recordset udfra SQL strengen
Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
\' Hvis søgningen gav resultat
    Response.Write \"<table width=\'500\' cellspacing=1 cellpadding=1 style=\'border-bottom: 1 solid #C0C0C0\'>\"
        Response.Write \"<tr><td align=center width=\'100%\' colspan=2><font size=2><b>Søgeresultater for \" & strKeyword & \"</b></font></td></tr>\"
    Do While Not rs.EOF
        Response.Write \"<tr><td valign=top width=\'100%\' colspan=2 bgcolor=99CCFF><font size=2><b><a href=links.asp?mode=id&id=\" & rs(\"ID\") & \">&nbsp;\" & rs(\"Navn\") & \"</b></font></a></td></tr>\"
        Response.Write \"<tr><td valign=top width=\'80%\' bgcolor=99CCFF><font size=2>\" & rs(\"Beskrivelse\") & \"</font></a></td>\"
        Response.Write \"<td valign=top width=\'20%\' bgcolor=99CCFF><font size=2>&nbsp;Hits: \" & rs(\"Hits\") & \"</font></td></tr>\"
        Response.Write \"<tr><td width=\'100%\' colspan=2 bgcolor=99CCFF>&nbsp;</td></tr>\"
        rs.MoveNext
    Loop
    Response.Write \"<tr><td width=\'100%\' colspan=2 align=right style=\'border-top: 1 solid #C0C0C0\'><font size=\'2\'><a href=\'links.asp\'>Links</a> | <a href=\'links.asp?mode=søg\'>Søg igen</a> | <a href=\'links.asp?mode=add\'>Tilføj links</a></font></td></tr>\"
    Response.Write \"</table><br><br>\"
Else
\' Hvis ingen poster passede på søgordene
    Response.Write \"<table width=\'500\' cellspacing=1 cellpadding=1 style=\'border-bottom: 1 solid #C0C0C0\'>\"
        Response.Write \"<tr><td align=center width=\'100%\'><font size=2>Søgeresultater for \" & strKeyword & \"</font></td></tr>\"
        Response.Write \"<tr><td align=center width=\'100%\' bgcolor=99CCFF><font size=2>Ingen sider passede på søgeordet</font></a></td></tr>\"
    Response.Write \"<tr><td width=\'100%\' colspan=2 align=right style=\'border-top: 1 solid #C0C0C0\'><font size=\'2\'><a href=\'links.asp\'>Links</a> | <a href=\'links.asp?mode=søg\'>Søg igen</a> | <a href=\'links.asp?mode=add\'>Tilføj links</a></font></td></tr></table><br><br>\"
End If %> <% case \"søg\"
\' Søgeformularen
Response.write \"<table width=\'500\' style=\'border-bottom: 1 solid #C0C0C0\'><tr><td><font size=\'2\'><b>Søg</b></font></td></tr>\"
Response.write \"<tr><td><form method=POST action=links.asp?mode=search><input type=text name=søgeord size=30></td></tr>\"
Response.write \"<tr><td><input type=submit value=\'  søg  \' name=send>&nbsp;<input type=button onclick=\'history.go(-1)\' value=tilbage name=tilbage></td></tr>\"
Response.Write \"<tr><td width=\'100%\' align=right style=\'border-top: 1 solid #C0C0C0\'><font size=\'2\'><a href=\'links.asp\'>Links</a> | <a href=\'links.asp?mode=add\'>Tilføj links</a></font></td></tr></table></form>\"
%> <% case \"update\"
\' Sender resultaterne fra tilføj links til databasen
\' Database connection
Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\" & server.MapPath(\"links.mdb\")
\' Opbygger SQL streng
SQLstmt = \"INSERT INTO links (navn,url,beskrivelse,hits,søgeord)\"
SQLstmt = SQLstmt & \" VALUES (\'\" & request.form(\"navn\") & \"\',\'\" & request.form(\"url\") & \"\',\'\" & request.form(\"beskrivelse\") & \"\',\'\" & request.form(\"hits\") & \"\',\'\" & request.form(\"søgeord\") & \"\')\"

response.write sqlstmt

Conn.Execute (SQLstmt)

conn.Close
Set conn = nothing
Set SQLstmt = nothing

\' Sender brugeren tilbage til links når databasen er opdateret
response.redirect (\"links.asp\")
%> <% case \"add\"
\' tilføj links
%>
      <form method=\"POST\" action=\"links.asp?mode=update\">
        <table border=\"0\" width=\"500\" cellpadding=\"0\" style=\'border-bottom: 1 solid #C0C0C0\'>
        <tr>
            <td colspan=\"2\"><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"-2\">Add
              your link:</font><font face=\"verdana\" size=\"2\"></font></td>
          </tr>
            <tr>
             
            <td width=\"35%\"><font face=\"Verdana\" size=\"2\"><b>Name</b></font></td>
              <td width=\"65%\">
                  <p><input type=\"text\" name=\"navn\" size=\"32\"></p>
              </td>
            </tr>
            <tr>
              <td width=\"35%\"><font face=\"Verdana\" size=\"2\"><b>url</b></font></td>
              <td width=\"65%\"><input type=\"text\" name=\"url\" value=\"http://\" size=\"32\"></td>
            </tr>
            <tr>
             
            <td width=\"35%\" valign=\"top\"><font face=\"Verdana\" size=\"2\"><b>description</b></font></td>
              <td width=\"65%\"><textarea name=\"beskrivelse\" cols=\"32\"></textarea></td>
            </tr>
            <tr>
             
            <td width=\"35%\" valign=\"top\" height=\"36\"><font face=\"Verdana\" size=\"2\"><b>Search-words</b><br>
              Seperated with comma.</font></td>
             
            <td width=\"65%\" height=\"36\">
<input type=\"text\" name=\"søgeord\" size=\"32\"></td>
            </tr>
            <tr>
              <td width=\"100%\" colspan=\"2\"><input type=\"hidden\" value=\"0\" name=\"hits\"><input type=\"submit\" value=\"Send\" name=\"send\">
                <input type=\"reset\" value=\"Annuller\" name=\"anuller\"> <input type=\"button\" onclick=\"history.go(-1)\" value=\"Tilbage\" name=\"Tilbage\"></td>
            </tr>
<tr>
            <td width=\'100%\' colspan=2 align=right style=\'border-top: 1 solid #C0C0C0\'><font size=\'2\'><a href=\'links.asp\'>Links</a>
              | <a href=\'links.asp?mode=s%F8g\'>Søg i links</a></font></td>
          </tr></table>
</form>
<% case \"advertise\"
\' Database connection
Set rs = Server.CreateObject(\"ADODB.RecordSet\")
strSQL = \"SELECT * FROM links ORDER BY navn\"
strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"links.mdb\")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
  rs.PageSize = 25
  rs.AbsolutePage = intPage
  intRecCount = rs.PageSize
  intPageCount = rs.PageCount
    Response.Write \"<table width=\'500\' cellspacing=\'2\' cellpadding=\'0\'>\"
  Do While Not rs.EOF And intRecCount > 0
        Response.Write \"<tr><td valign=top width=\'100%\' colspan=2 bgcolor=99CCFF><font face=verdana size=-2><b><a href=links.asp?mode=id&id=\" & rs(\"ID\") & \">\" & rs(\"Navn\") & \"</a></b></font></td></tr>\"
  intRecCount = intRecCount - 1
  rs.MoveNext
  Loop
End If
    Response.Write \"</table>\"
rs.Close
Set rs = Nothing
%>

<% case else
\' Hvis der ikke er valgt noget mode vises alle links

\' Paging
intPage = Request(\"page\")
If isNumeric(intPage) = False Or intPage < 1 Then
  intPage = 1
End If

\' Database connection
Set rs = Server.CreateObject(\"ADODB.RecordSet\")
strSQL = \"SELECT * FROM links ORDER BY navn\"
strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"links.mdb\")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
  rs.PageSize = 25
  rs.AbsolutePage = intPage
  intRecCount = rs.PageSize
  intPageCount = rs.PageCount
    Response.Write \"<table width=\'500\' cellspacing=\'2\' cellpadding=\'0\'>\"
  Do While Not rs.EOF And intRecCount > 0
        Response.Write \"<tr><td valign=top width=\'100%\' colspan=2 bgcolor=99CCFF><font size=2><b><a href=links.asp?mode=id&id=\" & rs(\"ID\") & \">\" & rs(\"Navn\") & \"</a></b></font></td></tr>\"
        Response.Write \"<tr><td valign=top width=\'80%\' bgcolor=99CCFF><font size=2>\" & rs(\"Beskrivelse\") & \"</font></a></td>\"
        Response.Write \"<td valign=top width=\'20%\' bgcolor=99CCFF><font size=2>&nbsp;Hits: \" & rs(\"Hits\") & \"</font></td></tr>\"
        Response.Write \"<tr><td width=\'100%\' colspan=2 bgcolor=99CCFF>&nbsp;</td></tr>\"
  intRecCount = intRecCount - 1
  rs.MoveNext
  Loop
End If
    Response.Write \"</table>\"
rs.Close
Set rs = Nothing

\' Navigering mellem siderne med paging
Response.Write \"<table width=\'500\' style=\'border-top: 1 solid #C0C0C0;border-bottom: 1 solid #C0C0C0\'><tr>\"
If Clng(intPage) > 1 Then
  Response.Write \"<td><font size=\'2\'><a href=links.asp?page=\" & intPage - 1 & \" class=paging>[<<]</a></td>\"
Else
  Response.Write \"<td></td>\"
End If

Response.Write \"\"
For intNum = 1 To intPageCount
  Response.Write \"<td valign=\'top\'><font size=\'2\'><a href=links.asp?page=\" & intNum & \">\" & intNum & \"</a></font></td> \"
Next

If Clng(intPage) < Clng(intPageCount) Then
  Response.Write \"<td><font size=\'2\'><a href=links.asp?page=\" & intPage + 1 & \" class=paging>[>>]</a></td>\"
Else
  Response.Write \"<td></td>\"
End If

Response.write \"<td><font size=\'2\'>Side <b>\" & intPage & \"</b> af \" & intPageCount & \"</font></td><td><p align=\'right\'><font size=\'2\'><a href=\'links.asp?mode=søg\'>Søg i links</a> | <a href=\'links.asp?mode=add\'>Tilføj links</a></font></p></td></tr></table>\"

end select %> </td>
  </tr>
  </tbody>
</table>

læg mærke til \'case \"advertise\"\'  ..
Det er meningen at den kun skal kalde linket, og ikke beskrivelse og hits, og samtidig lave fonten 2 px mindre... men istedet kommer den med en fejl, når jeg prøver at køre links.asp?mode=advertise

Jeg kan ikke finde/forstå fejlen... nogen der kan hjælpe?
Avatar billede wermelin Nybegynder
24. februar 2001 - 16:02 #1
Database filen (links.mdb) har du selvfølgelig liggende i samme bibliotek som asp-filerne ikke??
Avatar billede eagleeye Praktikant
24. februar 2001 - 23:44 #2
Helt præsic hvilken fejl kommer den med?
Avatar billede Slettet bruger
25. februar 2001 - 14:01 #3
wermelin> Jo sæfølli...
eagleeye> Der står:
ADODB.Recordset error \'800a0bb9\'

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

/ie/xindex/addlink_db/links.asp, line 189

Desværre kan jeg ikke finde line 189, da den ikke tæller HTML koden med... hmmm..
Avatar billede wermelin Nybegynder
26. februar 2001 - 17:17 #4
Når jeg sætter den ind for at finde fejl-linien, så er det denne linie:
Do While Not rs.EOF And intRecCount > 0

Men jeg kan ikke lige gennemskue hvad fejlen kan være....
Avatar billede Slettet bruger
26. februar 2001 - 21:29 #5
Skummelt... har du prøvet at \"exekvere\" links.asp?mode=advertise
?

Jeg fatter det ikke...
Avatar billede sbm Nybegynder
04. marts 2001 - 10:03 #6
Har du downloadet .mdb filen, eller har du selv bygget den op på nogle angivelser af hvilke felter der skulle være?
Hvis det sidste er tilfældet har du måske lavet et af felterne af en forkert type...?

Alternativt, har du prøvet at skrive værdien intRecCount ud til browseren lige efter at den er sat? Giver værdien mening, eller er den af en eller anden grund sat til NULL? Jeg har selv haft nogle spøjse fejl, fordi der på serveren ikke var installeret nogle bestemte dele af ASP.

Jeg ved godt det er nogle lidt vage forslag, men det må være muligt at debugge sig frem til problemet.
Avatar billede jackpower Nybegynder
30. marts 2001 - 17:33 #7
Hejsa ....

Fejlen er at du skal lige ha\' dette med i case \"advertise\"

\' Paging
intPage = Request(\"page\")
If isNumeric(intPage) = False Or intPage < 1 Then
  intPage = 1
End If

Så den kommer til at se sådan her ud i det afsnit.

case \"advertise\"

\' Paging
intPage = Request(\"page\")
If isNumeric(intPage) = False Or intPage < 1 Then
  intPage = 1
End If
\' Database connection
Set rs = Server.CreateObject(\"ADODB.RecordSet\")
strSQL = \"SELECT * FROM links ORDER BY navn\"
strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"links.mdb\")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then
  rs.PageSize = 25
  rs.AbsolutePage = intPage
  intRecCount = rs.PageSize
  intPageCount = rs.PageCount
    Response.Write \"<table width=\'500\' cellspacing=\'2\' cellpadding=\'0\'>\"
  Do While Not rs.EOF And intRecCount > 0
\'Response.Write rs.AbsolutePage
        Response.Write \"<tr><td valign=top width=\'100%\' colspan=2 bgcolor=99CCFF><font face=verdana size=-2><b><a href=links.asp?mode=id&id=\" & rs(\"ID\") & \">\" & rs(\"Navn\") & \"</a></b></font></td></tr>\"
  intRecCount = intRecCount - 1
  rs.MoveNext
  Loop
End If
    Response.Write \"</table>\"
rs.Close
Set rs = Nothing

Linien du fik fejl i var denne
  rs.AbsolutePage = intPage


Mvh
Jack!!
Avatar billede Slettet bruger
01. april 2001 - 16:01 #8
YAARRRHHH...!

I fuckin\' love ya.
Avatar billede jackpower Nybegynder
01. april 2001 - 17:14 #9
Æhm er det så nu jeg skal være glad?? *griner*
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