webForumDet fria alternativet

Paging Problem

56 svar · 1 438 visningar · startad av _2ejon · sida 2 av 3

_2ejonMedlem sedan jan. 200798 inlägg
#21

Snälla kan ingen hjälpa mig med mitt problem att det blir 2 inlägg på varje sida istället för ett, och om jag ändrar till TOP 1 så går det inte klicka vidare sig ? Skulle även behöva ha hjälp med en föregående knapp.

Tacksam för alla tips, förklaringar hur jag ska göra eller nån som vill hjälpa mig ändra koden ?

_2ejonMedlem sedan jan. 200798 inlägg
#22

Ingen som kan hjälpa mig eller ? Ohhh va det en utmaning eller ? ;) haha
Nä skämt å sido men jag behöver verkligen lite hjälp här :)

andyoumaydieMedlem sedan dec. 2006608 inlägg
#23

För det första, det är lördag, då är det inte alla som prioriterar att hjälpa folk på webforum. Och absolut inte om folk tjatar. Men nog om det.

Problem 1: Du skriver ju ut recordsetet bägge gångerna, varför? Om du inte vill ha bägge posterna utskrivna så verkar det ganska dumt. :)

Om jag lyckats tyda din kod riktigt borde nåt i den här stilen klara biffen.

<%@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
[B]Dim v_id[/B]
%>

<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") & "")
				[B]v_id = rsWeblog("id")[/B]
%>
		<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>
							</center>
						</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>
<%
			else
				vNextPost = rsWeblog("id")
%>
		<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=<%= [B]v_id[/B] %>" class="bar"><%=comments%> <b>(<%=rsComments("antal")%>)</b></a>
			</div>
		</div>
<%			end if

			gotPost = true

			rsWeblog.MoveNext
			loop
			rsWeblog.Close 
			Set rsWeblog = Nothing
			End If
%>
</body>
</html>

<%
Call CloseDatabase
%>

Jag har flyttat in de stycken där du skriver ut inläggen i de stycken i if-satsen där jag tror de ska vara, om jag tolkat din kod riktigt det vill säga.
La också till en ny variabel 'v_id' som gör att det är rätt kommenterar som visas.

Nu har jag inte testat det här så det är inte säkert att det funkar direkt.

Problem 2:
Har du provat att få till det själv?
Om inte, så kan jag ge dig en spark i rätt riktning.
Prova att plocka ut ett inlägg där datumet är mindre än det som visas.

Lycka till /Patrik

_2ejonMedlem sedan jan. 200798 inlägg
#24

andyoumaydie skrev:

<%
			else
				vNextPost = rsWeblog("id")
%>
		<div id="menyen">
			<div id="menycontainer">
				<!-- #include file="menu2.asp" -->
			</div>
			<div id="hogerc">
				<a href="default.asp?nextpost=<%=vNextpost%>"> Nästa </a>

Tack så jätte mtk :D Det fungerade faktist direkt :)
en liten fundering angående den ändring jag markerade här bara är om den inte går att lägga över posten jag hämtar på något sätt ?

andyoumaydieMedlem sedan dec. 2006608 inlägg
#25

Menar du att du vill skriva ut den diven först?
Då kan du ju t ex göra 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
Dim v_id
[B]Dim v_weblog
Dim v_headline
Dim v_date[/B]
%>

<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") & "")
				v_id = rsWeblog("id")
				[B]v_weblog = rsWeblog("weblog")
				v_headline = rsWeblog("headline")
				v_date = rsWeblog("date")[/B]

			else
				vNextPost = rsWeblog("id")
			end if

			gotPost = true

			rsWeblog.MoveNext
		loop
		rsWeblog.Close 
		Set rsWeblog = Nothing
	End If
%>
		<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=<%= v_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 --><%= [B]v_weblog[/B] %><!-- BlogbotContentEnd -->
									</div>
								</div>
							</center>
						</td>
					</table>
				</center>
				<tt><!-- BlogbotTitleStart --><%= [B]v_headline[/B] %><!-- BlogbotTitleEnd --></tt>				
			</div>
		</div>
		
		<div id="menyen">
			<div id="vansterd">
				<div class="date"><%=posted%><!-- BlogbotDateStart --><%= [B]v_date[/B] %><!-- BlogbotDateEnd --></div>
			</div>
			<div id="hoger">
				<div id="menycontainer">
					<!-- #include file="menu3.asp" -->
				</div>
			</div>
		</div>
</body>
</html>

<%
Call CloseDatabase
%>

/Patrik

colioneMedlem sedan juni 20014 421 inlägg
#26

Jag har helt tappat lusten att hjälpa dig. Hur många andra tror du bumpar sina egna trådar 4 ggr per dygn? Din tråd syns ändå för dem som väljer att visa nya inlägg, den måste inte ligga på första sidan.

_2ejonMedlem sedan jan. 200798 inlägg
#27

Jag har försökt klura lite på det där du sa med att jag skulle plocka ut det datumet innan när jag gör en föregående funktion men jag förstår inte alls hur jag ska göra ? För nu så plockar jag juh nästa "id" å det är juh det som kommer upp ?nextpost="id" blir det ?nextpost="förra datummet" som kommer upp där då ? (a) Är ny innom asp å jag vill lära mig lite :D Eller plockar den ut förra datumet och sen trycker in det id;t som va till den posten då ?

Tack så mkt ni på wF och andyoumaydie för att ni hjälper mig :)

Det uppskattas verkligen :)

/r
hehe ursäkte colione :stud ska inte upprepas va bara lite ivrig att få det fixat :D haha har suttit 24/7 å krabbat med sidan i en vecka å fastnat så jag inte kunnat fortsätta :P å letat på denna sidan på "paging" å på andra sidor. Å kände att jag ville få det fixat bara men som sagt ska inte upprepas ;)

andyoumaydieMedlem sedan dec. 2006608 inlägg
#28

Precis som du gör när du plockar fram de två översta inläggen med hjälp av den sql du använder nu, så kan du med hjälp av en annan sql plocka fram id:t på det första inlägget där datumet är mindre än det aktuella, dvs det inlägg som skrevs innan det aktuella.
Det som är fetstilt i koden nedan är det som kallas sql. (SQL=Structured Query Language)

set rsWeblog = ObjConn.execute([B]"SELECT TOP 2 * FROM weblog ORDER BY date DESC"[/B])

Det är väldigt enkelt, så sök du lite här på webforum, eller nån annanstans på nätet, så hittar du garanterat nåt som kan hjälpa dig att lista ut det här.

_2ejonMedlem sedan jan. 200798 inlägg
#29

hum.. Har kollat runt lite nu men förstår inte redigt vad det är vad jag ska söka efter.
Men jag är ganska så trött nu faktist.. Men ska kolla lite mer imån när jag är lite mer vaken :) Annars får jag väll fråga er snälla wFare om hjälp :D hehe Nä men ska kolla upp det imån och se om jag hittar nått

_2ejonMedlem sedan jan. 200798 inlägg
#30
Set rsPrev = ObjConn.execute("SELECT * FROM weblog WHERE [v_from-date] <= "& Date &"")

så nu idag har jag kollat igenom här på wF lite och jag undrar om det är någon sån funktion man skulle kunna ha som bakåt funktion, men hur får man ut det föregående ID;t igenom den sql frågan ?

Vill få det att klarna lite för mig
// Asp nybörjare :)

andyoumaydieMedlem sedan dec. 2006608 inlägg
#31

"SELECT TOP 1 * FROM weblog WHERE date < #" & v_date & "# ORDER BY date DESC"
Skulle tro att din sql ska se ut ungefär så. :)

I access använder man # runt datum.

Så om du då plockar ut rsPrev("id") så borde det vara id:t på det föregående inlägget.

_2ejonMedlem sedan jan. 200798 inlägg
#32

Så nu har jag satt in det så här på sidan

<%@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
[B]Dim rsPrev[/B]
Dim v_id
Dim v_weblog
Dim v_headline
Dim v_date
%>

<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")
		[B]set rsPrev = ObjConn.execute("SELECT TOP 1 * FROM weblog WHERE date < #" & v_date & "# ORDER BY date DESC")[/B]
	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") & "")
				
				v_id = rsWeblog("id")
				v_weblog = rsWeblog("weblog")
				v_headline = rsWeblog("headline")
				v_date = rsWeblog("date")
				
			else
				[B]vPrevPost = rsPrev("id")[/B]
				vNextPost = rsWeblog("id")
			end if

			gotPost = true

			rsWeblog.MoveNext
		loop
		rsWeblog.Close 
		Set rsWeblog = Nothing
	End If
%>
		<div id="menyen">
			<div id="menycontainer">
				<!-- #include file="menu2.asp" -->
			</div>
			<div id="hogerc">
				<a href="default.asp?nextpost=<%=vNextpost%>"> Föregående </a>
				[B]<a href="default.asp?nextpost=<%=vPrevpost%>"> Nästa </a>[/B]
				<img src="icons/comments.gif">&nbsp;<a href="comments.asp?id=<%=v_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 --><a href="default.asp?nextpost=<%=vNextpost%>" title="previous entry"><%=v_weblog%></a><!-- BlogbotContentEnd -->
									</div>
								</div>
							</center>
						</td>
					</table>
				</center>
				<tt><!-- BlogbotTitleStart --><%= v_headline %><!-- BlogbotTitleEnd --></tt>				
			</div>
		</div>
		
		<div id="menyen">
			<div id="vansterd">
				<div class="date"><%=posted%><!-- BlogbotDateStart --><%=v_date%><!-- BlogbotDateEnd --></div>
			</div>
			<div id="hoger">
				<div id="menycontainer">
					<!-- #include file="menu3.asp" -->
				</div>
			</div>
		</div>
</body>
</html>

<%
Call CloseDatabase
%>

Men nu får jag upp ett fel medelande bara :/
Känns som jag aldrig greppar detta

Microsoft VBScript runtime error '800a000d'

Type mismatch

/blogg/default.asp, line 60

line 60 =

vPrevPost = rsPrev("id")

alltså den nya variablen jag lagt in

MaadmaxMedlem sedan juli 200659 inlägg
#33

Det är inte alls så svårt gör såhär:

<%
Dim postID
postID = CLng(request.querystring("postID"))

Set RS = Connection.Execute("SELECT falt1,falt2 from tabell where id = '"& postID &"' limit 1")

If RS.Eof then
response.write "Här tog det slut..."
Else
response.write "skriver ut datan " & RS("falt1") & " och " & RS("falt2") & "..."
End If

RS.Close
Set RS = nothing
%>
<hr>
<a href="sida.asp?postID=<%=postID-1%>">FÖREGÅENDE</a> -
<a href="sida.asp?postID=<%=postID+1%>">NÄSTA</a>

headbugMedlem sedan sep. 2006867 inlägg
#34

Maadmax skrev:

Det är inte alls så svårt gör såhär:

<%
Dim postID
postID = CLng(request.querystring("postID"))

Set RS = Connection.Execute("SELECT falt1,falt2 from tabell where id = '"& postID &"' limit 1")

If RS.Eof then
response.write "Här tog det slut..."
Else
response.write "skriver ut datan " & RS("falt1") & " och " & RS("falt2") & "..."
End If

RS.Close
Set RS = nothing
%>
<hr>
<a href="sida.asp?postID=<%=postID-1%>">FÖREGÅENDE</a> -
<a href="sida.asp?postID=<%=postID+1%>">NÄSTA</a>

Fast det förutsätter att postID alltid ökar/minskar med 1, vilket inte behöver vara fallet!

_2ejonMedlem sedan jan. 200798 inlägg
#35

Nä så kommer troligtvis inte det att bli för då händer juh/väll inget om jag har tagit bort ett id nr ? då bara fastnar man där ? eller ? Men så som jag har satt in det är nartuligt vis fel, eller har jag skrivit fel i sql;en..

Eller alternativt variablen ? Jag markerade med fet stil det jag hade lagt in nu sist.

Uppskattar er hjälp :)

andyoumaydieMedlem sedan dec. 2006608 inlägg
#36

Du har lagt det fel. Allting bör ligga i if-satsen där du kollar om gotPost = false.

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") & "")
				
				v_id = rsWeblog("id")
				v_weblog = rsWeblog("weblog")
				v_headline = rsWeblog("headline")
				v_date = rsWeblog("date")
				[B]set rsPrev = ObjConn.execute("SELECT TOP 1 * FROM weblog WHERE date < #" & v_date & "# ORDER BY date DESC")
				[1]'([B]Här bör du göra en kontroll så att inte rs:et är eof.[/B] T ex visar du det nyaste inlägget, finns det ju inga nyare att visa, och då bör det väl inte finnas nån knapp)[/1]
				vPrevPost = rsPrev("id")[/B] 
			else
				vNextPost = rsWeblog("id")
			end if

			gotPost = true

			rsWeblog.MoveNext
		loop
		rsWeblog.Close 
		Set rsWeblog = Nothing
	End If

Som du hade lagt det innan så hade du ju inte givit variabeln v_date något värde när du försökte jämföra den med date i databastabellen.

_2ejonMedlem sedan jan. 200798 inlägg
#37

Så :) Det fungerade utan att sidan hängde upp sig, men nu hämtar den bara det senaste id´t som jag laggt upp, inte det föregående :/

Tack för tålamodet :D

andyoumaydieMedlem sedan dec. 2006608 inlägg
#38

Nu fattar jag inte riktigt vad du menar?
Har jag fel när jag förstått det så här?

Exempel 1:
Du kommer till sidan, senaste inlägget visas. Ingen föregående-knapp skall synas eftersom det inte finns nåt nyare inlägg. Nästa-knappen leder till nästa äldre inlägg.

Exempel 2:
Du tittar på ett sex veckor gammalt inlägg, det finns tre nyare och tre äldre inlägg. Föregående-knappen leder till nästa inlägg som är nyare. Nästa-knappen leder till nästa äldre inlägg.

Exempel 3:
Du tittar på ett 8 veckor gammalt inlägg, det finns sex nyare inlägg och inga äldre.
Föregående-knappen leder till nästa inlägg som är nyare. Det finns ingen nästa-knapp eftersom det inte finns något äldre inlägg.

Har du provat att ändra

"SELECT TOP 1 * FROM weblog WHERE date < #" & v_date & "# ORDER BY date [B]DESC[/B]"

till

"SELECT TOP 1 * FROM weblog WHERE date < #" & v_date & "# ORDER BY date [B]ASC[/B]"

?

_2ejonMedlem sedan jan. 200798 inlägg
#39

Hum :/ Jag såg juh kommentar texten du hade lagt in så på första sidan så finns juh framåt funktionen kvar fortfarande för jag har inte ändrat den än.

Alltså när jag är på första sidan (default.asp) så visas det nyaste inlägget och därifrån bläddrar jag bakåt (fungerar) men när jag är på tex sista sidan eller någon annan för den delen och vill gå frammåt ett inlägg (den funktionen vi la till sist nu som du hjälpte mig med) så kommer jag bara till första sidan hela tiden.

Du kan kolla på min blogg så kanske du förstår hur jag menar lite bättre

/r
Japp jag testade å ändra det men då kommer jag bara till sista sidan hela tiden oberoende vilken sida jag är på

andyoumaydieMedlem sedan dec. 2006608 inlägg
#40

För mig funkar Föregående-knappen precis som den ska, förutom att jag tycker att den inte ska synas när det inte finns äldre inlägg.
O det var ju den vi la till sist.

Däremot funkar ju inte Nästa-knappen.
Så då får vi gå igenom den sql satsen... :)

/red Såg nu att du flyttat vNextPost till föregående-knappen... :)
Så då kan du ignorera detta inlägg.

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