paging enligt månader

ASP

36 svar · 328 visningar · startad av laidback

Medlem sedan maj 2001797 inlägg
Trådstart#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*

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.)

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 :(

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.

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)

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

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.)

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?

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.

Medlem sedan maj 2001797 inlägg
#11

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

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)

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,

Medlem sedan maj 2001797 inlägg
#14

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

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,

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.

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,

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?

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,

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
260 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)