webForumDet fria alternativet

Paging Problem

56 svar · 1 438 visningar · startad av _2ejon

_2ejonMedlem sedan jan. 200798 inlägg
#1

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">&nbsp;<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
#2

Ingen som kan hjälpa mig ?

headbugMedlem sedan sep. 2006867 inlägg
#3

_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
#4

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
#5

_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
#6

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
#7

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
#8

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
#9

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
#10

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
#11

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">&nbsp;<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
#12

Det heter "Do While" i ASP/VbScript.

_2ejonMedlem sedan jan. 200798 inlägg
#13

Hur menar du ?

headbugMedlem sedan sep. 2006867 inlägg
#14

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
#15

_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
#16

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
#17

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
#18

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">&nbsp;<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
#19

Ingen som har tid att hjälpa mig eller :r

_2ejonMedlem sedan jan. 200798 inlägg
#20

Okey :P Är det någon som vill hjälpa mig idag då ? :D

143 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)