webForumDet fria alternativet

Få fram antal inlägg mm i nyhetsscript?

ASP

23 svar · 274 visningar · startad av Korak

Medlem sedan maj 2001133 inlägg
Frågan#1

Skulle någon kunna hjälpa mig med hur jag ska göra för att få fram "Du är på sid X av X det finns totalt X nyheter inlagda." i detta script:

<!-- #include file="data.asp" -->
<%
dim data, strDB, page, display, include_page, num_items, multi, intCount, show_email, linked_page
if request.querystring("page") = "" then
page = 1
else
page = request.querystring("page")
end if

set data = server.createobject("ADODB.Recordset")
data.activeconnection = strDB
data.source = "SELECT * FROM admin WHERE id = 1"
data.open
num_items = data("items_per")
display = data("display")
include_page = data("included_page")
multi = data("multi")
show_email = data("show_email")
if data("linked_page") = "none" then
linked_page = include_page
else
linked_page = data("linked_page")
end if
data.close

if request.querystring("id") <> "" then
set data = server.createobject("ADODB.Recordset")
data.activeconnection = strDB
data.source = "SELECT * FROM news WHERE id = " & request.querystring("id")
data.cursortype = 2
data.cursorlocation = 3
data.locktype = 3
data.open
if show_email = "yes" then
show_email = "</b> <a href=""mailto:" & data("author_email") &""">" & data("author_email") & "</a></p>"
else
show_email = ""
end if
response.write data("news_date") & "<br>"
response.write "<b>" & data("news_title") & "</b><p>"
response.write data("news_text") & "</p><p>"
response.write "<b>" & data("news_author") & "</b><br>"
response.write show_email
response.write "<a href=""javascript:history.back()""><< Tillbaka </a>| "
response.write "<a href=""" & include_page & """>Nyheter</a>"

set data = server.createobject("ADODB.Recordset")
data.activeconnection = strDB
SQL = "SELECT COUNT (id) AS antalPoster FROM news"
data.open SQL
posts = data("antalPoster")
itemNumber = (page-1)*data.pagesize + intCount
response.write " Detta är Nyhet <b>" & itemNumber & "</b> av totalt <b>" & posts &"</b>"
show = "no"
end if

if show = "" then
set data = server.createobject("ADODB.RecordSet")
data.activeconnection = strDB
data.source = "SELECT * FROM news ORDER BY id DESC"
data.cursortype = 3
data.cursorlocation = 3
data.locktype = 3
data.pagesize = num_items
data.open
data.absolutepage = page

intCount = 0
while not data.eof and intCount < data.pagesize
intCount = intCount + 1
if display = "A" then
if show_email = "yes" then
show_email = "</b> <a href=""mailto:" & data("author_email") &""">" & data("author_email") & "</a></p>"
else
show_email = ""
end if
response.write "<font size=""4""><b>" & data("news_title") & "</font></b> " & data("news_date") & "<br>"
response.write "<font size=""2"">" & data("news_text") & "</font><br><br>"
response.write "Skrivet av: <b>" & data("news_author") & show_email
response.write "<hr>"
end if
if display = "B" then
response.write data("news_date") & "<br>"
response.write "<a href=""" & linked_page & "?id=" & data("id") & """>" & data("news_title") & "</a><br><br>"
end if
if display = "C" then
response.write "<br><a href=""" & linked_page & "?id=" & data("id") & """>" & data("news_title") & "</a><br>"
response.write "<font size=""2"">" & left(data("news_text"), 40) & "...</font><br>"
end if
data.movenext
wend

response.write "<br><br>"

if multi = "yes" then
if page > 1 then
response.write " <a href=""" & include_page & "?page="& page - 1 & """><< Tillbaka </a>| "
end if
end if
set data = server.createobject("ADODB.Recordset")
data.activeconnection = strDB
SQL = "SELECT COUNT (id) AS antalPoster FROM news"
data.open SQL
posts = data("antalPoster")

totalPages = int((posts-1)/num_items + 1)
response.write "Sid <b>"& page &"</b> av <b>"& totalPages &"</b> | "

if multi = "yes" then
if not data.eof then
response.write "<a href=""" & include_page & "?page="& page + 1 & """>Nästa >></a>" & "   Det finns <b>" & posts & "</b>" & " Nyheter totalt."
end if
end if
data.close
end if
%>

Tack på förhand!
//Korak

[Redigerat av Korak den 04 jul 2001]

Medlem sedan dec. 19996 721 inlägg
Medlem sedan juli 20003 825 inlägg
#3

'## COUNT ALL POSTS
SQL = "SELECT COUNT(*) AS cnt FROM [news]"
set mySQL = Conn.Execute(SQL)
antal = mySQL("cnt")

' ## PRINT
response.write "Det finns " & antal & " nyheter."

------------------
I sometimes wish I was famous.

Medlem sedan maj 2001133 inlägg
#4

Hmmm...funkade inte.
Jag har försökt som en galning, känns som jag prövat allt.
Min senaste variant som självklart inte funkade:

'## COUNT ALL POSTS
set data = server.createobject("ADODB.Recordset")
data.activeconnection = strDB
SQL = "SELECT COUNT (id) AS antalPoster FROM news"
data.open
' ## PRINT
Response.Write "Antal nyheter: <b>" & data("antalPoster") & "</b>"
data.close

Får detta felmeddelande:

Microsoft JET Database Engine error '80040e0c'

Command text was not set for the command object.

/nyheter/show_news.asp, line 107

//Korak

Medlem sedan dec. 200012 464 inlägg
#5
set data = server.createobject("ADODB.Recordset")
data.activeconnection = strDB
SQL = "SELECT COUNT (id) AS antalPoster FROM news"
data.open [b] SQL [/b]
' ## PRINT
Response.Write "Antal nyheter: <b>" & data("antalPoster") & "</b>"
data.close

------------------
essentitia preter non sans multiplicandum

Medlem sedan maj 2001133 inlägg
#6

Äntligen :)
Glädje.
Tack så mycket för hjälpen LarsG!

//Korak

Medlem sedan maj 2001133 inlägg
#7

En sista fråga i ämnet.
Jag har lyckats få fram vilken sidan besökaren är på med denna kod:

response.write "Sid <b>"& page &"</b> av <b>"& count &"</b>

Det som jag inte får till är det totala antalet sidor (där det nu står count).
Någon som skulle kunna vara vänlig att hjälpa mig med detta?

Tack på förhand!
//Korak

Medlem sedan dec. 200012 464 inlägg
#8

Om antalet psoter per sida är pageSize så kan du räkna ut antalet sidor så här


items = data("antalPoster")
totalPages = (items-1)/pageSize + 1

------------------
essentitia preter non sans multiplicandum

Medlem sedan maj 2001133 inlägg
#9

Känns nästan lite pinsamt att fråga igen men det känns som jag verkligen försökt allt. Jag har fått till allt som jag vill ha det nu utom grejen att visa hur många sidor det finns totalt.
Såhär ser nu slutet av koden jag postade tidigare ut:

if multi = "yes" then
if page > 1 then
response.write " <a href=""" & include_page & "?page="& page - 1 & """><< Tillbaka </a>| "
end if
end if

    response.write "Sid \<b\>"& page &"\</b\> av \<b\>"& HÄR\_ÄR_DET_KÖRT &"\</b\>&nbsp;&#0124;&nbsp;"

if multi = "yes" then
if not data.eof then
response.write "<a href=""" & include_page & "?page="& page + 1 & """>Nästa >></a>"
end if
end if
data.close
end if
%>
<%
set data = server.createobject("ADODB.Recordset")
data.activeconnection = strDB
SQL = "SELECT COUNT (id) AS antalPoster FROM news"
data.open SQL
' ## PRINT
Response.Write "  Antal nyheter: <b>" & data("antalPoster") & "</b><br>"
data.close
%>

Vore jätteglad om någon skulle kunna tipsa mig om hur jag ska göra.
Och ja, jag lovar, jag ska köpa "Asp for dummies", "Lär dig asp på 3 veckor" mm :)

//Korak

Medlem sedan dec. 200012 464 inlägg
#10

Jag flyttade om lite kod. Sen så förutsätter jag att du har en variabel som heter num_items som anger hur många poster du visar per sida

if multi = "yes" then
if page > 1 then
response.write " <a href=""" & include_page & "?page="& page - 1 & """><< Tillbaka </a>&#0124; "
end if
end if
set data = server.createobject("ADODB.Recordset")
data.activeconnection = strDB
SQL = "SELECT COUNT (id) AS antalPoster FROM news"
data.open SQL 
posts = data("antalPoster")
data.close

'# num_items är antal poster som visas per sida

totalPages = (posts-1)/num_items + 1
response.write "Sid <b>"& page &"</b> av <b>"& totalPages &"</b> &#0124; "

if multi = "yes" then
if not data.eof then
response.write "<a href=""" & include_page & "?page="& page + 1 & """>Nästa >></a>" 
end if
end if
data.close
end if
%>
<%

' ## PRINT
Response.Write "  Antal nyheter: <b>" & posts & "</b><br>" 
%>

------------------
essentitia preter non sans multiplicandum

Medlem sedan maj 2001133 inlägg
#11

Jag har för mig att jag testade något liknande. Jag får fram detta felmeddelande:

Sid 1 av 3.16666666666667 |
ADODB.Recordset error '800a0e78'

Operation is not allowed when the object is closed.

/nyheter/show_news.asp, line 104

Detta är rad 104:
if not data.eof then

Det känns ju som det är så nära att funka...jag fattar inte.

//Korak

Medlem sedan juni 200032 967 inlägg
#12

och om du tar bort raden data.close?

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

Medlem sedan maj 2001133 inlägg
#13

Nu är det mycket, mycket nära :)
Jag tog bort data close i raden som låg över denna:
'# num_items är antal poster som visas per sida

Nu funkar allt förrutom att det istället för att stå "Sid 1 av 3" står "Sid 1 av 3.16666666666667"
Förslag?

//Korak

Medlem sedan juni 200032 967 inlägg
#14

det borde väl vara sidan 1/4???

prova att slänga int() runt totala antalet sidor.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

Medlem sedan maj 2001133 inlägg
#15

Nej det är Sid 1 av 3 som det ska vara. Jag har sex inlägg på varje sida. Jag prövade att skriva in 2 nya inlägg. Då ändrades det till Sid 1 av 3,5
Nu är det totalt 16 inlägg.

Vet inte om jag förstod vad du menade riktigt @nders. Jag prövade att ta bort alla int i koden...ingen skillnad. Sedan prövade jag att ta bort parantesen runt (posts-1)...ingen skillnad. Var det något av de alternativen du menade?

//Korak

Medlem sedan dec. 200012 464 inlägg
#16
totalPages = int((posts-1)/num_items + 1)

------------------
essentitia preter non sans multiplicandum

Medlem sedan juni 200032 967 inlägg
#17

åh jäklarns vilken missufattning!

förlåt mig, korak, jag skulle givetvis gett kodexempel såsom LarsG gjorde.

sorry! :)

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

Medlem sedan maj 2001133 inlägg
#18

Jiipppiiiieeeeee!!! :e
Äntligen...glädje.
Tack så hemskt mycket för hjälpen!

//Korak

Medlem sedan maj 2001133 inlägg
#19

Du behöver verkligen inte be om ursäkt @nders :)
Jag blir så otroligt glad över att det finns så många underbara människor som vill hjälpa till.

//Korak

Medlem sedan maj 2001133 inlägg
#20

En sista gång jag lovar :)
Försöker få fram vilket nummer i ordningen varje inlägg har. Har klurat fram och tillbaka men som vanligt inte lyckats. Nu ser det ut såhär:

set data = server.createobject("ADODB.Recordset")
data.activeconnection = strDB
SQL = "SELECT COUNT (id) AS antalPoster FROM news"
data.open SQL
posts = data("antalPoster")

response.write " Detta är Nyhet \<b\>" & id & "\</b\> av totalt \<b\>" & posts &"\</b\>"
show = "no"

end if

Nu syns det ingenting där "id" står.
Nån känner sig sugen att komma med ett tips?

//Korak

[Redigerat av Korak den 04 jul 2001]

268 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
143 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)