webForumDet fria alternativet

paging enligt månader

ASP

36 svar · 278 visningar · startad av laidback

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

skulle vilja lista en användares alla inlägg månadsvis, nuvarande månaden ska alla inläggs titel o datum skrivas ut, men tidigare månader ska finnas textlänkar "september" "augusti" osv och när dessa klickas ska alla meddelanden skrivna den månaden listas med titel och datum.

avancerat? *förvirrad*

------------------
I just lay back and let the big beat lead me

Medlem sedan dec. 200012 464 inlägg
#2

Ett skelett.

Tanken är att man har en sida, show.asp dit man skickar år och månad i querystring


<%
  m = request.querystring("month")
  if m = "" then m = month(date)
  y = request.querystring("year")
  if y = "" then y = year(date)
  user = session("user")

  'lista alla inlägg för aktuell månad

  set connect = server.createobject("adodb.connection")
  connect.open dsn

  sql = "select * from posts " & _
  " where month(postdate) = " & m &_
  " and year(date) = " & y & _
  " and poster = '" & user & "'"

  set rs = connect.execute(sql)
  while not rs.eof
     'visa data
     rs.movenext
  wend
  rs.close

  'ta alla månader som inte ingår 

  sql = "select distinct year(postDate),month(postDate) from posts " & _
  " where month(postdate) <> " & m & _
  " and year(postdate) <> " & y & _
  " and poster = '" & user & "'"

  set rs = connect.execute(sql)
  while not rs.eof
     response.write "<a href=show.asp?month='" & rs(0) & "'&year='" & rs(1) &"'>" & _
  monthname(rs(0)) & " " & rs(1) & "</a>"
     rs.movenext
  wend
  rs.close
  set rs = nothing 
  connect.close
  set connect = nothing

Du får kanske byta ut funktionerna month och year beroende på vilken databas du använder. (De finns i Access och SQL-server.)

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

Medlem sedan maj 2001797 inlägg
#3

hm. nu är jag förvirrad igen.

om jag inkluderar detta på en befintlig sida, där databasen (base.asp) redan är öppen behöver jag väl inte öppna den igen?
felmeddelandena haglar :(

------------------
I just lay back and let the big beat lead me

Medlem sedan dec. 200012 464 inlägg
#4

Nej, någon ny öppning behövs ej.

Då får vi väl beta av felen då. Du kan ju lägga upp relevanta delar av koden, en tabellbeskrivning och någon feltext.

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

Medlem sedan maj 2001797 inlägg
#5

ok.
om jag börjar med att ta bort detta:

set connect = server.createobject("adodb.connection")
connect.open dsn

så får jag felet
Too few parameters. Expected 2.
i stycket

set rs = connect.execute(sql)
while not rs.eof
'visa data
rs.movenext
wend
rs.close

tabellen heter k_messages och fälten ID, title, name, date och content.
(name är namnet på den som skrev)

------------------
I just lay back and let the big beat lead me

Medlem sedan dec. 200012 464 inlägg
#6

Okej, då är det något problem med sql-satsen. Felmeddelandet tyder på att det är Access och det brukar bero på att man anger något kolumnnamn som inte finns i tabellen.

Kan du visa sql-satsen, dvs att du skriver ut den

response.write sql

Sen så är date ett reserverat ord så att om du anväder det i sql-satser så får du skriva

select [DATE] from k_messages

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

Medlem sedan maj 2001797 inlägg
#7

hmm..
response.write sql ger
[kod]Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x424 Thread 0x98 DBC 0x102c024 Jet'kod]

------------------
I just lay back and let the big beat lead me

Medlem sedan dec. 200012 464 inlägg
#8

Det är alltså något problem vid open av connection-objektet, till exempel att sökvägen till databasen inte stämmer.

Det verkar ju ha fungerat tidigare då du fick det andra felet (Too few parameters. Expected 2.)

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

Medlem sedan maj 2001797 inlägg
#9

jo, precis. själva sidan, som fö visar medlemmens profil samt listar en del annat fungerade felfritt innan.
skumt?

------------------
I just lay back and let the big beat lead me

Medlem sedan dec. 200012 464 inlägg
#10

Felet med volatile har ju varit uppe i flera inlägg här tidigare. Du kan ju göra en sökning och se om du hittar något relevant.

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

Medlem sedan maj 2001797 inlägg
#11

okej. ska se om jag hittar nåt. tack iaf!

------------------
I just lay back and let the big beat lead me

Medlem sedan maj 2001797 inlägg
#12

okej, nu löste det sig (hrm.. :r)
men "too few parameters, expected 2" kvartstår..
det är den här raden som sägs vara trasig:
set rs = connect.execute(sql)

------------------
I just lay back and let the big beat lead me

Medlem sedan juni 200032 967 inlägg
#13

Det felet brukar tyda på att man i sin SQL-fråga har x antal tabell- eller fältnamn som inte existerar eller är felstavade.

Hur ser den färdiga SQL-frågan ut?

Response.write sql innan du exekverar den.

Mvh,

------------------
All your base are belong to me.

Medlem sedan maj 2001797 inlägg
#14

okej. fältnamnen korrigerade, sidan visas, men inte skymten av några inlägg... suspekt!

------------------
I just lay back and let the big beat lead me

Medlem sedan juni 200032 967 inlägg
#15

Kan det vara så att SQL-frågan är felskriven så den inte ger något resultat?

Hur ser den ut?

Mvh,

------------------
All your base are belong to me.

Medlem sedan maj 2001797 inlägg
#16

hmm.. det är larsG's ovanstående kod (inlägg 1) som jag försöker få ut nåt av.

------------------
I just lay back and let the big beat lead me

Medlem sedan juni 200032 967 inlägg
#17

Skriv ut sql-frågan så vi får se den. Dels har du ju gjort ändringar i den och dels är det väl asp-värden som lagts till i den?

Response.write sql innan du exekverar den.

Mvh,

------------------
All your base are belong to me.

Medlem sedan maj 2001797 inlägg
#18

nu börjar det klarna lite mer..
det som verkar vara problemet är

user = session("user")

den vars inlägg jag vill visa heter ju "name" i meddelande-tabellen.. hur anropar jag den?

------------------
I just lay back and let the big beat lead me

Medlem sedan juni 200032 967 inlägg
#19

Då får du ha med villkoret ... name = '" & user & "'... i din SQL-fråga.

Red: om jag förstod dig rätt vill säga. Det är inte helt klart...

Mvh,

------------------
All your base are belong to me.

[Redigerat av @nders den 09 okt 2001]

Medlem sedan maj 2001797 inlägg
#20

okej.
men här är koden som den ser ut nu


m = request.querystring("month")
if m = "" then m = month(date)
y = request.querystring("year")
if y = "" then y = year(date)
user = session("user")

det är ovanstående "user = " som jag vill sätta till användaren vars sida man besöker


'lista alla inlägg för aktuell månad

response.write sql
sql = "select * from k_messages " & _
" where month(date) = " & m &_
" and year(date) = " & y & _
" and name = '" & user & "'"

set rs = connect.execute(sql)
while not rs.eof
'visa data
rs.movenext
wend
rs.close

'ta alla månader som inte ingår 
response.write sql
sql = "select distinct year(Date),month(Date) from k_messages " & _
" where month(date) <> " & m & _
" and year(date) <> " & y & _
" and name = '" & user & "'"

precis här finns ju name = '" & user & "'"

set rs = connect.execute(sql)
while not rs.eof
response.write "<a href=show.asp?month='" & rs(0) & "'&year='" & rs(1) &"'>" & _
monthname(rs(0)) & " " & rs(1) & "</a>"
rs.movenext
wend
rs.close
set rs = nothing

------------------
I just lay back and let the big beat lead me

260 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)