det är ovanstående "user = " som jag vill sätta till användaren vars sida man besöker
Vart finns det användarnamnet?
36 svar · 328 visningar · startad av laidback · sida 2 av 2
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 →det är ovanstående "user = " som jag vill sätta till användaren vars sida man besöker
Vart finns det användarnamnet?
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?
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
set rs = connect.execute(sql)
får " Data type mismatch in criteria expression."
tror jag måste sova lite.. :/
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.
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
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
%>
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.)
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")%>
[<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?
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
hm. fortfarande fel på sql-satsen enligt felmeddelandena.
"data type mismatch"
borde jag nämna att "date" är ett textfält?
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)%> <% =LCase(Monthname(Month(Now), True))%> <% =Year(Now)%> - <%=Right("0" & Hour(Now),2)%>:<%=Right("0" & Minute(Now),2)%>">
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.
så hur skulle det se ut då? kodmässigt och utskriftsresultat.
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)%>">