08. maj 2007 - 18:56Der er
12 kommentarer og 1 løsning
Træk link ud af db efter kategori
Jeg er ved at lave et link script. Som scriptet er nu trækker den alle links ud udanset kategori. Jeg vil gerne have mit script til kun, at vise links der fx høre til kategorien opskrifter. I db'en har jeg:
Links: LinkID auto LinkTitle Tekst LinkURL Tekst LinkDescription Notat LinkVisits Tal LinkDateAdded Dato og klokkeslæt CategoryID Tal Live Tal Email Tekst
Categories: CategoryID auto CategoryTitle Tekst ParentCategoryID Tal Description Notat
<% intPage = Request("page") If isNumeric(intPage) = False Or intPage < 1 Then intPage = 1 End If
Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT LinkID, LinkTitle,LinkDescription, LinkVisits FROM Links Where Live = 1 " strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db/links2.mdb") rs.Open strSQL, strDSN, 1 If Not (rs.BOF Or rs.EOF) Then rs.PageSize = 3 rs.AbsolutePage = intPage intRecCount = rs.PageSize intPageCount = rs.PageCount Response.Write "<center>Side " & intPage & " af " & intPageCount & "</center>" Do While Not rs.EOF And intRecCount > 0 response.write "<fieldset style='padding: 2'>" response.write "<legend><a href=""redirect.asp?LinkID="&RS("LinkID")&""">"& RS("LinkTitle") & "</a>-"& RS("LinkVisits")& "</FONT>" response.write "</legend>" response.write "<font face='Verdana' size='1'>" response.write RS("LinkDescription")&"<br>" response.write "</FONT></div>" response.write "</fieldset>" response.write "" intRecCount = intRecCount - 1 rs.MoveNext Loop End If rs.Close Set rs = Nothing
Response.Write "<hr color='#DCB7DC' size='1'>" For intNum = 1 To intPageCount Next Response.Write "<table border='0' cellpadding='0' cellspacing='0' width='400'>" Response.Write "<tr>" Response.Write "<td width='33%' align='left'> " If Clng(intPage) > 1 Then Response.Write "<a href=faq.asp?page=" & intPage - 1 & "><font face='Verdana' size='1' COLOR='#473262'><b>Forrige</b> </a>" Else Response.Write "<font face='Verdana' size='1' COLOR='#473262'><b>Forrige</b>" End If Response.Write "</td>" Response.Write "<td width='33%' align='center'></td>" Response.Write "<td width='34%' align='right'>" If Clng(intPage) < Clng(intPageCount) Then Response.Write "<a href=faq.asp?page=" & intPage + 1 & "><font face='Verdana' size='1' COLOR='#473262'><b>Næste</b></a> </td>" Else Response.Write "<font face='Verdana' size='1' COLOR='#473262'><b>Næste</b>" End If Response.Write "</tr>" Response.Write "</table>" Response.Write "</td>" %>
Hvordan erstatter jeg 6 tallet, så jeg ikke skal lave en masse sider alt efter hvor mange kategorier der er. et bud ville være strSQL = "SELECT LinkID, LinkTitle,LinkDescription, LinkVisits, categoryID FROM Links Where Live = 1 and(categoryID = " & Request.QueryString("categoryID") & ")"
jeg prøvede dette strSQL = "SELECT LinkID, LinkTitle,LinkDescription, LinkVisits, categoryID FROM Links Where Live = 1 and categoryID= "& Request.QueryString("categoryID") &" "
men får denne fejl
Microsoft OLE DB Provider for ODBC Drivers error '80040e21'
ODBC driver does not support the requested properties.
Jeg kender ikke den der open streng du bruger, tror det måske har noget at gøre med ,1 men jeg aner det ikke.
Jeg ville lave min strSQL som:
strSQL = "SELECT LinkID, LinkTitle,LinkDescription, LinkVisits, categoryID FROM Links Where Live = 1 and categoryID= "& Request.QueryString("categoryID")
Jeg har prøvt at lave "Live" i db om til et ja/nej felt. Sql har jeg lavt således strSQL = "SELECT LinkID, LinkTitle,LinkDescription, LinkVisits, categoryID FROM Links Where Live = True and categoryID= "& Request.QueryString("categoryID")
men får denne fejl Microsoft OLE DB Provider for ODBC Drivers error '80040e21'
ODBC driver does not support the requested properties.
<% intPage = Request("page") If isNumeric(intPage) = False Or intPage < 1 Then intPage = 1 End If
Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT LinkID, LinkTitle,LinkDescription, LinkVisits, categoryID FROM Links Where Live = 1 and categoryID = '" & Request.Querystring("categoryID") & "'" strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db/links2.mdb") rs.Open strSQL, strDSN, 1 If Not (rs.BOF Or rs.EOF) Then rs.PageSize = 3 rs.AbsolutePage = intPage intRecCount = rs.PageSize intPageCount = rs.PageCount Response.Write "<center>Side " & intPage & " af " & intPageCount & "</center>" Do While Not rs.EOF And intRecCount > 0 response.write "<fieldset style='padding: 2'>" response.write "<legend><a href=""redirect.asp?LinkID="&RS("LinkID")&""">"& RS("LinkTitle") & "</a>-"& RS("LinkVisits")& "</FONT>" response.write "</legend>" response.write "<font face='Verdana' size='1'>" response.write RS("LinkDescription")&"<br>" response.write "</FONT></div>" response.write "</fieldset>" response.write "" intRecCount = intRecCount - 1 rs.MoveNext Loop End If rs.Close Set rs = Nothing
Response.Write "<hr color='#DCB7DC' size='1'>" For intNum = 1 To intPageCount Next Response.Write "<table border='0' cellpadding='0' cellspacing='0' width='400'>" Response.Write "<tr>" Response.Write "<td width='33%' align='left'> " If Clng(intPage) > 1 Then Response.Write "<a href=faq.asp?page=" & intPage - 1 & "><font face='Verdana' size='1' COLOR='#473262'><b>Forrige</b> </a>" Else Response.Write "<font face='Verdana' size='1' COLOR='#473262'><b>Forrige</b>" End If Response.Write "</td>" Response.Write "<td width='33%' align='center'></td>" Response.Write "<td width='34%' align='right'>" If Clng(intPage) < Clng(intPageCount) Then Response.Write "<a href=faq.asp?page=" & intPage + 1 & "><font face='Verdana' size='1' COLOR='#473262'><b>Næste</b></a> </td>" Else Response.Write "<font face='Verdana' size='1' COLOR='#473262'><b>Næste</b>" End If Response.Write "</tr>" Response.Write "</table>" Response.Write "</td>" %>
det virker også fint MEN det viser ikke nogle links under nogle af kategorierne selvom der er nogle links i kategorierne.
I db'en har jeg rettet:
Links: LinkID auto LinkTitle Tekst LinkURL Tekst LinkDescription Notat LinkVisits Tal LinkDateAdded Dato og klokkeslæt CategoryID Tal - til tekst Live Tal Email Tekst
Altså, hvis du bruger tal i din querystring, skal du ikke have plinger omkring som du har i din strSQL:
strSQL = "SELECT LinkID, LinkTitle,LinkDescription, LinkVisits, categoryID FROM Links Where Live = 1 and categoryID = '" & Request.Querystring("categoryID") & "'"
Efter min bedste vurdering bør den korrekte SQL se således ud:
strSQL = "SELECT LinkID, LinkTitle,LinkDescription, LinkVisits, categoryID FROM Links Where Live = 1 and categoryID = " & Request.Querystring("categoryID")
Da jeg lavede CategoryID om til tekst i db'en virkede det, men scriptet viste ikke nogle links når man klikkede på en kategori. Da jeg lavede CategoryID om til tal igen fik jeg denne fejl Microsoft OLE DB Provider for ODBC Drivers error '80040e21'
ODBC driver does not support the requested properties. link.asp, line 10
line 10 rs.Open strSQL, strDSN, 1
Jeg ved ikke om det evt er nemmere, hvis jeg sender scriptet til dig? :)
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.