paging enligt månader

ASP

36 svar · 328 visningar · startad av laidback · sida 2 av 2

Trådstarten, av laidback

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\

Läs hela trådstarten →
Medlem sedan dec. 200012 464 inlägg
#21

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

Vart finns det användarnamnet?

Medlem sedan maj 2001797 inlägg
#22

i tabellen k_messages i fältet "name", och det är på utvald användares sida man befinner sig och vill se inläggen.
en variabel "current" är deklarerad tidigare, som innehåller just detta namn. hur anropar jag detta?

Medlem sedan dec. 200012 464 inlägg
#23

Då borde det bara vara att byta user mot current i de båda sql-satserna

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

och

'ta alla månader som inte ingår 
sql = "select distinct year(Date),month(Date) from k_messages " & _
" where month(date) <> " & m & _
" and year(date) <> " & y & _
" and name = '" & current & "'"
response.write sql
Medlem sedan maj 2001797 inlägg
#24

set rs = connect.execute(sql)

får " Data type mismatch in criteria expression."

tror jag måste sova lite.. :/

Medlem sedan dec. 200012 464 inlägg
#25

Ok, men jag vill fortfarande se resultatet av

response.write sql

Medlem sedan maj 2001797 inlägg
#26

resultatet bli endast
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

om jag skriver ut response.write sql som, du gjort ovan.

Medlem sedan dec. 200012 464 inlägg
#27

I den kod du visade så hade du

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

och då är variablen sql odefinierad.

Om du lägger response.write efter tilldelningen så borde du få ut något.

sql = "select * from k_messages " & _
" where month(date) = " & m &_
" and year(date) = " & y & _
" and name = '" & current & "'"
response.write sql
Medlem sedan maj 2001797 inlägg
#28

hm. samma fel visas om jag lägger den efter.

nu ser koden ut så här


<%

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

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

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(Date),month(Date) from k_messages " & _
" where month(date) <> " & m & _
" and year(date) <> " & y & _
" and name = '" & current & "'"
response.write sql

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 

%>
Medlem sedan dec. 200012 464 inlägg
#29

Det kan vara något problem med att date är ett reserverat ord i Access

<%

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

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

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(Date),month(Date) from k_messages " & _
" where month([date]) <> " & m & _
" and year([date]) <> " & y & _
" and name = '" & current & "'"
response.write sql

(Jag menade inte att det skulle avhjälpa felet att flytta på response.write, bara att sql skulle få ett värde innan utskriften.)

Medlem sedan maj 2001797 inlägg
#30

men.. *lite sömn senare*
ursprungligen såg det ut så här :


<% View = "SELECT * FROM k_messages ORDER BY ID DESC"
RecSet.Open View, Connect, adOpenStatic, adLockOptimistic

Do Until RecSet.EOF %>

<% If RecSet("name")=current<% =RecSet("date")%>
&nbsp; 

[<A href="view_message.asp?messID=<% =RecSet("ID") %>"><% =RecSet("title")%></A>]
<% End If %>
<%
RecSet.MoveNext
Loop
RecSet.Close %>

och detta visade då gällande användares alla inlägg.
går det inte att skriva
View = "SELECT * FROM k_messages ORDER BY ID DESC"
where månaden är den som är nu?

Medlem sedan dec. 200012 464 inlägg
#31

Jo, det var det som var tanken

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

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

set recset = connect.execute(sql)
while not recset.eof
%>
[<A href="view_message.asp?messID=<% =RecSet("ID") %>"><% =RecSet("title")%></A>]

recset.movenext
wend
rs.close
Medlem sedan maj 2001797 inlägg
#32

hm. fortfarande fel på sql-satsen enligt felmeddelandena.
"data type mismatch"
borde jag nämna att "date" är ett textfält? :r

Medlem sedan dec. 200012 464 inlägg
#33

Ja.

Kan du byta till date?

Om inte, i vilket format ligger datumet lagrat.

Medlem sedan maj 2001797 inlägg
#34

hm. helst inte?

för att få datumet i ett trevligt format skickas följande till date-fältet när man gör ett inlägg:

<input type="hidden" name="date" size="15" value="<%=Right("0" & Day(Now),2)%>&nbsp;<% =LCase(Monthname(Month(Now), True))%>&nbsp;<% =Year(Now)%>&nbsp;-&nbsp;<%=Right("0" & Hour(Now),2)%>:<%=Right("0" & Minute(Now),2)%>">
Medlem sedan dec. 200012 464 inlägg
#35

Jag tycker i alla fall att du skall byta till date och lagra värdet av now() i databasen och sedan göra din formattering när du visar data.

I och för sig går det att skriva ett uttryck med like som matchar år och månad i textfältet men jag tycker att det är onödigt.

Medlem sedan maj 2001797 inlägg
#36

så hur skulle det se ut då? kodmässigt och utskriftsresultat.

Medlem sedan dec. 200012 464 inlägg
#37

Det blir samma formattering som tidigare oavsett om du hämtar från databasen

<% d = cdate(recset("date")) %>
<input type="hidden" name="date" size="15" value="<%=Right("0" & Day(d),2)%> <% =LCase(Monthname(Month(d), True))%> <% =Year(d)%> - <%=Right("0" & Hour(d),2)%>:<%=Right("0" & Minute(d),2)%>">
402 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
119 ms — deklarationer (db)
130 ms — hämta statistik (db)
149 ms — hämta tråd, inlägg och bilagor (db)
116 ms — ändringar (db)