_2ejonMedlem sedan jan. 200798 inlägg 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
%>
_2ejonMedlem sedan jan. 200798 inlägg Ingen som kan hjälpa mig ?
headbugMedlem sedan sep. 2006867 inlägg
_2ejon skrev:
Ingen som kan hjälpa mig ?
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.
_2ejonMedlem sedan jan. 200798 inlägg 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 :)
headbugMedlem sedan sep. 2006867 inlägg
_2ejon skrev:
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.
:)
Det är skoj med programmering!
_2ejonMedlem sedan jan. 200798 inlägg
headbug skrev:
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.
_2ejonMedlem sedan jan. 200798 inlägg 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") & "")
%>
<a href="default.asp?nextpost=<%=vNextpost%>"> Nästa </a>
och sen så blir det inget annart när jag klickar på nästa ? det står inte annorlunda heller. ska jag ändra Nextpost till id ? Eller ?
Är next post en variabel som skrivs in på denna sidan eller är det något som hämtas ifrån access databasen ?
Vill gärna kunna sätta mig in i detta lite bättre så jag förstår va det är jag sysslar med :D haha
headbugMedlem sedan sep. 2006867 inlägg Jo, vi har ju aldrig definierat vNextpost.
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
Hoppas du förstår vad jag trixar med :p
headbugMedlem sedan sep. 2006867 inlägg Alltså
<%
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...
headbugMedlem sedan sep. 2006867 inlägg 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å...
_2ejonMedlem sedan jan. 200798 inlägg 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
TroxyMedlem sedan mars 20041 505 inlägg Det heter "Do While" i ASP/VbScript.
headbugMedlem sedan sep. 2006867 inlägg http://www.w3schools.com/vbscript/vbscript_looping.asp
Mycket riktigt så avråder man från att använda while...wend numera, det kan man läsa på länken ovan. Använd do while.... loop istället.
Börja med det så får vi se om det löser något.
Sen ska jag kolla på film med tjejjeen så jag återkommer en annan gång om inte någon annan tar upp stafettpinnen :p
w3schools.com är ett rätt bra ställe att söka och läsa sig till en massa tips på hur man löser programmeringssknutar!
Lycka till!
TroxyMedlem sedan mars 20041 505 inlägg
_2ejon skrev:
Hur menar du ?
Du har bara skrivit "While" i din kod. Släng dit ett "Do" innan så ska du få se på grejer.
Sen kanske du behöver byta ut "Wend" mot "Loop" också.
(Typiskt VbScript att krångla till allting)
_2ejonMedlem sedan jan. 200798 inlägg har testat lite nu :S Men fattar inte hur jag ska sätta in Do While :S
För om ni menar att jag bara ska slänga in Do framför While så här:
Do While NOT rsWeblog.EOF
Så får jag bara upp detta fel medelandet:
Microsoft VBScript compilation error '800a0400'
Expected statement
/blogg/default.asp, line 61
wend
^
Hur ska jag sriva egentligen ? :/ Fan de känns omöjligt å få det att funka..
colioneMedlem sedan juni 20014 421 inlägg ersätt wend med loop
Kollade du ens på länken du fick? där visas det hur du ska göra.
_2ejonMedlem sedan jan. 200798 inlägg Ja jag kollade men jag förstod inte redigt hur jag skulle ändra det (a)
Men de funkar nu
Koden ser nu ut såhär
<%@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
Do 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
%>
<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
loop
rsWeblog.Close
Set rsWeblog = Nothing
End If
%>
</body>
</html>
<%
Call CloseDatabase
%>
nu återstår bara 2 små problem, hur fixar jag så att bara ett inlägg visas åt gången och å så att jag även får en föregående knapp ?
_2ejonMedlem sedan jan. 200798 inlägg Ingen som har tid att hjälpa mig eller :r
_2ejonMedlem sedan jan. 200798 inlägg Okey :P Är det någon som vill hjälpa mig idag då ? :D