webForumDet fria alternativet

problem med lista

ASPur ASP

9 svar · 340 visningar · startad av dendålige

Medlem sedan jan. 2003188 inlägg
Frågan#1

Hej!
jag ska skriva ut dom 5 senaste posterna i forumet, men får ett litet problem...

jag kör som så att det första inlägget har t.ex id 8 men postid är tomt...
sen svaren på den posten har då postid 8...

jag kör nu:
SQL = "SELECT distinct postid,person,datum,forumid,katalogid,id From forum_post group by postid ORDER by datum DESC LIMIT 5 "
Set RecSet = Connect.Execute(SQL)

men då får jag ju bara ut dom som har något på postid, hur gör jag för att ta ut dom senaste även fast inlägget inte har någe svar dvs tomt på postid...

Medlem sedan apr. 20031 660 inlägg
#2

HEJ!

WHERE
postid<>""
eller
Not IsNull(postid)
eller
Not IsEmpty(postid)

Lägger in en helgardering, någon av dem brukar fungera :e

Medlem sedan jan. 2003188 inlägg
#3

men jag vill ju liksom att det ska vara både tomma och icke tomma... beroende på om det är första inlägget eller om det är ett svar

Medlem sedan apr. 20031 660 inlägg
#4

HEJ!

Jaha, du VILL ha ut dem också?

Men, varför får du INTE ut dem då? Vad fältet innehåller har ju ingen betydelse, när du inte har med det i WHERE?!

Medlem sedan jan. 2003188 inlägg
#5

alltså... just nu så får jag inte ut dom som är tomma på postid... kan få hela koden om du vill:
<%SQL = "SELECT distinct postid,person,datum,forumid,katalogid,id From forum_post group by postid ORDER by datum DESC LIMIT 5 "
Set RecSet = Connect.Execute(SQL)
dim forumnamn,forumdatum,forumid,forumkatalog,forumpostid,postid,trad,forumtext

Do Until RecSet.EOF
forumid = RecSet("forumid")
forumkatalogid = RecSet("katalogid")
forumpostid = RecSet("postid")
postid = RecSet("id")
forumnamn = RecSet("person")
forumdatum = RecSet("datum")
SQL2 = "Select katalog from forum_katalog where id ='"&forumkatalogid&"'"
Set RecSet2 = Connect.Execute(SQL2)
SQL3 = "Select rubrik from forum_post where id ='"&forumpostid&"' or id ='"&postid&"'"
Set RecSet3 = Connect.Execute(SQL3)
If Len(RecSet3("rubrik")) > 25 Then
forumtext = (Left(RecSet3("rubrik"), 25) & "...")
Else
forumtext = (RecSet3("rubrik"))
End If
Fpage = ""
SQL4 = "SELECT Count(*) From forum_post Where postid= '"&forumpostid&"'"
Set RecSet4 = Connect.Execute(SQL4)
dim Fpages,Fpage
Fpages = RecSet4.Fields(0)
if Fpages > 20 then Fpage = "1"
if Fpages > 20 or Fpages = 20 then Fpage = "2"
if Fpages > 40 or Fpages = 40 then Fpage = "3"
recSet4.close

if forumpostid = "" then
trad = postid
else
trad = forumpostid
end if%>
<tr>
<td>
<%Response.write "<a href='forum/forum.asp?do=las&page="&Fpage&"&forumid="&forumid&"&katalogid="&forumkatalogid&"&tradid="&trad&"#"&postid&"'>"&Server.HTMLEncode(forumtext)&"</a>"%>
</td>
<td width="100" align="center">
<%Response.write "<a href='forum/forum.asp?do=post&forumid="&forumid&"&katalogid="&forumkatalogid&"'>"&RecSet2("katalog")&"</a>"%>
</td>
<td width="180" align="right">
<%postDate = cdate(forumdatum)
days = datediff("d",postDate,now())
if days = 0 then
response.write "idag " & FormatDateTime(postDate,4)
elseif days = 1 then
response.write "igår " & FormatDateTime(postDate,4)
else
response.write FormatDateTime(postDate,2) & " " & FormatDateTime(postDate,4)
end if
Response.write " av <a href ='person.asp?medlem="&forumnamn&"'>" &forumnamn&"</a>"%>
</td>
</tr>
<%RecSet.Movenext
Loop
RecSet.Close
RecSet2.Close
RecSet3.Close%>

Medlem sedan apr. 20031 660 inlägg
#6

HEJ!

Okej, jag förstår inte hur det kan komma sig, eller hur du byggt upp tabellerna, men vi provar med felsökning.

- plocka bort alla fält, sätt * istället
- ta bort GROUP
- ta bort WHERE

Är du säker på att LIMIT 5 inte gör så att du inte får några alls?

Hela koden? Nej tack, den har inget med detta att göra, gör det endast svårare i deta fall.
Använd gärna kod-taggarna också.

Medlem sedan jan. 2003188 inlägg
#7

då får jag ut 5 senaste... men då får jag ju även ut om dom 5 senaste va i samma tråd så står det ju 5 likadana rubriker... vill att en rubrik max ska stå en gång...

Medlem sedan apr. 20031 660 inlägg
#8

HEJ!

Och om du ändrar till 50? Tror fortfarande att det är sql-fel.

Hänger det ihop såhär?
Ny tråd:
id,postid...
8--(tomt)
Reply
id,postid...
9---8

Jag kan inte förstå hur detta påverkar vad du får ut när du INTE har satt något i WHERE???

Eller, är det GROUP som påverkar det?
Men, då bör du få alla med inget först? (Eller sist?)

Hacka i sql:en alltså!

Medlem sedan jan. 2003188 inlägg
#9

det är group som gör det... och eftersom jag gruperar efter postid så kommer dom som inte har någon postid inte upp...

Medlem sedan jan. 2003188 inlägg
#10

mm det hänger ihop som du skrev

130 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)