webForumDet fria alternativet

Order by

6 svar · 199 visningar · startad av aleborg

aleborgMedlem sedan jan. 20013 341 inlägg
#1

Jag håller på med ett forum, för att hålla reda på vilka inlägg som är lästa så sparas inläggets ID och den inloggade användarens ID i en databas när dom läser inlägget första gången. Forumet känner sedan av om inlägget är läst eller om det finns svar som är olästa och visar en gif bild.

Mitt problem är att nu vill dom att man ska kunna sortera efter olästa inlägg och olästa svar, men hur ska jag lösa det?

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Då gör du alltså en outer join mellan tabellen med inlägg och tabellen som innehåller vem som har läst vad?

sql = "select * from inlagg left join lasta on inlagg.id = lasta.id and lasta.userid = " & id & _
" order by case when lasta.id is null then 0 else 1 end,inlagg.datum desc  "

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

aleborgMedlem sedan jan. 20013 341 inlägg
#3

Databasen ser ut så här:
DevTopic
--DevTopicID - ID
--Who - vem som gjort inlägget
--DevTopMod - Senast svarad på eller datum det skapades på
--ForumBel - vilket forum det tillhör

DevForRead
--DevForReadID - ID
--ReadTopicID - vilket inlägg som är läst
--ReadUserID - vem som läst det
--ReadDate - Datum det lästes

Och för att hålla koll på den inloggade: Session("devnetDevID") - ID på användaren!

Orkar du hjälpa mig LarsG???

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

LarsGMedlem sedan dec. 200012 464 inlägg
#4

jo, vilken dbms använder du?

Om man vill lösa det direkt i SQL så blir, tyvärr, syntaxen beroende av databashanterare.

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

aleborgMedlem sedan jan. 20013 341 inlägg
#5

Jag använder SQL Server:
Set CONN = Server.CreateObject("ADODB.Connection")
Conn.open "dsn=webdata;uid=webdata;pwd=****"

Fick igång det men som sagt, det ska bara vara på "Order by"!

Nu får jag bara upp det inlägget som är nytt!

Så här gör jag för att få fram inläggen

topicSQL="Select * From DevTopics Where Who="& Session("devnetDevID") &" And ReplyTo is null Order By "& Session("sort")
Set post = Server.CreateObject("ADODB.Recordset")
post.Open topicSQL, Conn, 3, 1

Session("sort") innehåller i det här fallet "unread"

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

[Redigerat av aleborg den 17 sep 2001]

LarsGMedlem sedan dec. 200012 464 inlägg
#6

Nu får jag inte ihop din SQL-fråga med de tabeller du beskrev. Vad betyder ReplyTo ?

Du använder ju inte tabellen DevForRead
alls.

Du skrev att Who är den som skrev inlägget, tar du nu bara fram inlägg skrivna av den som är inloggad och som det inte finns svar på?

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

aleborgMedlem sedan jan. 20013 341 inlägg
#7

Just i den här koden tar jag enbart fram den inloggades inlägg, ej svaren!
Svaren visas genom att man "öppnar" inlägget!

Senare i koden tar jag fram om inlägget är läst eller inte och visar olika bilder framför rubriken på varje inlägg om det är oläst eller finns olästa svar.

ReplyTo visar om posten i DB:n är ett svar och till vilket inlägg

Har en stark kännsla av att det inte går att lösa det här :(

Vad man behöver göra med varje inlägg är att kontrollera om användaren har läst det eller om det finns olästa svar och i så fall placera det högst upp i listan och i andra hand sortera efter datum.

Tabellerna består av mycket mer kolumner och funktionerna är många så att visa upp mer kod skulle bara röra till det!

------------------
Data-Doktorn
Min egen musik!
Mitt coverband

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