Hej jag har läst hur många paging trådar som hällst här på wF men jag förstår inte riktigt hur man gör, är inte väldsmästare på å koda men jag kan läsa lite sådär när jag ser koderna.. Men vet inte hur jag ska skriva själv bara..
Okey nu till pagingen då.. För det första är det några speciella filer man måste includera i sidan ? Sen så vill jag att den plockar fram nästa/föregående post jag har i min databas jag kör med access..
Sen när man är på första sidan så vill jag inte att det ska visas nästa då eftersom det är 1a inlägget vi är på så ska vi juh till föregående. Och det ska vara 1 inlägg per sida.. Just nu använder jag SELECT TOP 1 * FROM weblog ORDER BY date DESC.
Kan man använda sig av det på nått sätt för att gå till nästa å föregående inlägg.
Snälla det skulle vara tacksamt med lite hjälp :)
all hjälp liten som stor är välkommen :bire
<%
Dim rsWeblog
Dim rsComments
Dim rsCat
Dim rsCategory
%>
<%
set rsWeblog = ObjConn.execute("SELECT TOP 1 * FROM weblog ORDER BY date DESC")
if rsWeblog.EOF Then
Response.Write(""&emptyPosts&"")
Else
While NOT rsWeblog.EOF
Set rsComments = objConn.Execute("SELECT Count(comments.blogID) AS antal FROM comments WHERE comments.blogID = " & rsWeblog("id") & ";")
Set rsCategory = ObjConn.Execute("SELECT * FROM category WHERE cat_id = " & rsWeblog("cat_id") & "")
%>
<div id="menyen">
<div id="menycontainer">
<!-- #include file="menu2.asp" -->
</div>
<div id="hogerc">
[B]Här skulle jag villja ha min föregående/nästa funktion[/B]
<img src="icons/comments.gif"> <a href="comments.asp?id=<%=rsWeblog("id")%>" class="bar"><%=comments%> <b>(<%=rsComments("antal")%>)</b></a>
</div>
</div>
<%
rsWeblog.MoveNext
Wend
rsWeblog.Close
Set rsWeblog = Nothing
End If
%>
<%
Call CloseDatabase
%>
Nog finns det folk som kan hjälpa, men du kanske får vänta längre än 2 timmar mitt på en vardag. de flesta här jobbar nog till 17:00 :)
Det krävs en del kodande för att få det att fungera, men man kan väl säga att du måste ta reda på rätt ID på nästa inlägg i webloggen.
Man kan tänka sig att du ändrar din SQL-fråga till
if request.querystring("nextpost") = "" Then
set rsWeblog = ObjConn.execute("SELECT TOP 2 * FROM weblog ORDER BY date DESC")
else
set rsWeblog = ObjConn.execute("SELECT TOP 2 * FROM weblog where id<=" & request.querystring("nextpost") & " ORDER BY date DESC")
end if
Sen får du ändra din while-sats så att den aldrig loopar vidare utan bara visar försat posten, man vill ju bara att den ska visa första posten, sen ska du använda ID:t i nästa varv till att skapa paging-länken.
Och så vidare :) Jag har hittat på "nextpost" och ID själv, du får använda rätt variabelnamn där.
Hoppas det ger dig lite inspiration till att klura vidare, en komplett lösning som passar dina ideér och databas/script är väldigt svår att servera såhär.
Okey :) Håller på å kollar lite nu. Tack så mkt än så länge :)
Men hur funkar det om man tar TOP 2 ? Blir det inte varje gång jag byter till 2 sidan så ligger det TOP 2 kvar och då kan den inte hitta det 3e sen eller ?
Alla tips och all hjälp är välkommen jag har inte löst det ännu :)
Okey :) Håller på å kollar lite nu. Tack så mkt än så länge :)
Men hur funkar det om man tar TOP 2 ? Blir det inte varje gång jag byter till 2 sidan så ligger det TOP 2 kvar och då kan den inte hitta det 3e sen eller ?
Alla tips och all hjälp är välkommen jag har inte löst det ännu :)
Nja, min tanke är alltså att när du klickar på "nästa" så skickar du med variabeln nextpost, tex:
<a href="showpost.asp?nextpost=<%=vNextpost%>">
och på sidan showpost.asp där all kod ligger så upptäcker du att request.quesrystring("nextpost") till exempel blir 2011
och i IF-satsen som jag visade ovan så hanmar du i
...SELECT TOP 2 * FROM weblog where id<=" & request.querystring("nextpost") & ...
dvs då plockar du fram alla poster som har id <= 2011 och sen väljer du ut de två översta av dom i sin tur.
Plus att du automagiskt får ID:t till det tredje som row nr 2 i 2011-frågan.
if request.querystring("nextpost") = "" Then
set rsWeblog = ObjConn.execute("SELECT TOP 2 * FROM weblog ORDER BY date DESC")
else
set rsWeblog = ObjConn.execute("SELECT TOP 2 * FROM weblog where id<=" & request.querystring("nextpost") & " ORDER BY date DESC")
end if
Sen får du ändra din while-sats så att den aldrig loopar vidare utan bara visar försat posten, man vill ju bara att den ska visa första posten, sen ska du använda ID:t i nästa varv till att skapa paging-länken.
Okey men vart ska jag sätta in den nya sql frågan, ska jag bara copy pasta den över den gamla TOP 1 satsen ?
och hur menar du att jag ska göra för att ändra while-satsen så den bara visa första inlägget ?
Tack för att du hjälper mig :P Har kört fast lite asså :/ Har lyckats lösa allt förutom detta nu.
Så nu har jag lagt in det du skrev och fått lite ordning på det, men hur ska jag skriva nu för att det andra inlägget inte ska visas ?
<%
if request.querystring("nextpost") = "" Then
set rsWeblog = ObjConn.execute("SELECT TOP 2 * FROM weblog ORDER BY date DESC")
else
set rsWeblog = ObjConn.execute("SELECT TOP 2 * FROM weblog where id<=" & request.querystring("nextpost") & " ORDER BY date DESC")
end if
if rsWeblog.EOF Then
Response.Write(""&emptyPosts&"")
Else
While NOT rsWeblog.EOF
Set rsComments = objConn.Execute("SELECT Count(comments.blogID) AS antal FROM comments WHERE comments.blogID = " & rsWeblog("id") & ";")
Set rsCategory = ObjConn.Execute("SELECT * FROM category WHERE cat_id = " & rsWeblog("cat_id") & "")
%>
Så för det första, hur vet man att bara första loopen ger en post?
Gör såhär, tex:
gotPost = false
While NOT rsWeblog.EOF
.
.
.
sedan precis innan "wend" skriver du
gotPost = true
och sedan gör du en ny IF-sats
if gotPost = false then
Set rsComments = objConn.Execute("SELECT Count(comments.blogID) AS antal FROM comments WHERE comments.blogID = " & rsWeblog("id") & ";")
Set rsCategory = ObjConn.Execute("SELECT * FROM category WHERE cat_id = " & rsWeblog("cat_id") & "")
else
vNextpost = rsWeblog("id")
end if
<%
if request.querystring("nextpost") = "" Then
set rsWeblog = ObjConn.execute("SELECT TOP 2 * FROM weblog ORDER BY date DESC")
else
set rsWeblog = ObjConn.execute("SELECT TOP 2 * FROM weblog where id<=" & request.querystring("nextpost") & " ORDER BY date DESC")
end if
if rsWeblog.EOF Then
Response.Write(""&emptyPosts&"")
Else
gotPost = false
While NOT rsWeblog.EOF
if gotPost = false Then
Set rsComments = objConn.Execute("SELECT Count(comments.blogID) AS antal FROM comments WHERE comments.blogID = " & rsWeblog("id") & ";")
Set rsCategory = ObjConn.Execute("SELECT * FROM category WHERE cat_id = " & rsWeblog("cat_id") & "")
else
vNextPost = rsWebLog("id")
end if
gotPost = true
wend
%>
Eller något sådant.
Nu blir aldrig vNextpost något sen när du klickat dig fram till absolut sista posten heller. Du kan ju snygga till <a href bla bla bla> Nästa </a> och bara visa den om vNextpost har ett värde...
dessutom är det här en extrem-enkel variant av paging, man kan leka vidare och göra den lite bättre så att du kan klicka på sida 1 2 3 4 > >> eller hur det nu brukar se ut, då blir det ytterligare lite mer avancerat men med lite klurig kodning så löser sig det också...
Så nu har jag lagt in det som du har sagt och hjälpt mig, men nu får jag bara upp detta felmedelande
Microsoft VBScript compilation error '800a0400'
Expected statement
/blogg/default.asp, line 106
Wend
^
markerar det med tjock text vart det är i koden, skickar hela koden här:
default.asp
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!-- #include file="admin/DBconn.asp" -->
<!-- #include file="config/config.asp" -->
<!-- #include file="inc/include.asp" -->
<!-- #include file="lang/SE.asp" -->
<!-- #include file="admin/count.asp" -->
<%
Dim rsWeblog
Dim rsComments
Dim rsCat
Dim rsCategory
%>
<head>
<title><%=title2%></title>
<meta name="description" content="<%=desc%>">
<meta name="keywords" content="<%=meta%>">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="revisit-after" content="2 days" />
<meta name="robots" content="all" />
<meta name="generator" content="LBlog" />
<link href="css/styletest.css" rel="stylesheet" type="text/css">
</head>
<body>
<%
if request.querystring("nextpost") = "" Then
set rsWeblog = ObjConn.execute("SELECT TOP 2 * FROM weblog ORDER BY date DESC")
else
set rsWeblog = ObjConn.execute("SELECT TOP 2 * FROM weblog where id<=" & request.querystring("nextpost") & " ORDER BY date DESC")
end if
if rsWeblog.EOF Then
Response.Write(""&emptyPosts&"")
Else
gotPost = false
While NOT rsWeblog.EOF
if gotPost = false Then
Set rsComments = objConn.Execute("SELECT Count(comments.blogID) AS antal FROM comments WHERE comments.blogID = " & rsWeblog("id") & ";")
Set rsCategory = ObjConn.Execute("SELECT * FROM category WHERE cat_id = " & rsWeblog("cat_id") & "")
else
vNextPost = rsWebLog("id")
end if
gotPost = true
wend
%>
<div id="menyen">
<div id="menycontainer">
<!-- #include file="menu2.asp" -->
</div>
<div id="hogerc">
<a href="default.asp?nextpost=<%=vNextpost%>"> Nästa </a>
<img src="icons/comments.gif"> <a href="comments.asp?id=<%=rsWeblog("id")%>" class="bar"><%=comments%> <b>(<%=rsComments("antal")%>)</b></a>
</div>
</div>
<div id="container">
<div id="body">
<br>
<center><table border=0 cellborder=0 cellspacing=0 height=100%>
<td><center>
<div id="bildram2"><div id="bildram">
<!-- BlogbotContentStart --><%=rsWeblog("weblog")%><!-- BlogbotContentEnd -->
</div></div>
</td></table></center>
<tt><!-- BlogbotTitleStart --><%=rsWeblog("headline")%><!-- BlogbotTitleEnd --></tt>
</div>
</div>
<div id="menyen">
<div id="vansterd">
<div class="date"><%=posted%><!-- BlogbotDateStart --><%=rsWeblog("date")%><!-- BlogbotDateEnd --></div>
</div>
<div id="hoger">
<div id="menycontainer">
<!-- #include file="menu3.asp" -->
</div>
</div>
</div>
<%
rsWeblog.MoveNext
[B]Wend[/B]
rsWeblog.Close
Set rsWeblog = Nothing
End If
%>
</body>
</html>
<%
Call CloseDatabase
%>
Humm :/ Varför får jag det felmedelandet, och sen när jag tar bort det som är fel ifrån koden helt enkelt så blir det så som vi inte ville att det skulle bli, alltså att det blir 2 inlägg på sidan...
Ni kan kolla via denna länk så förstår ni hur det ser ut om det hjälper något http://www.vildalejon.se/blogg
Vill verkligen få detta fixat :/
Tack för hjälpen så långt :) Ska vi försöka få ihop det me ? ;D