webForumDet fria alternativet

Trådat forum

8 svar · 287 visningar · startad av ironhead

ironheadMedlem sedan mars 20011 346 inlägg
#1

Hej igen!

Jag har en tabell enl. följande:

forum
-------

MsgID (räknare)
ParentID [int]
Show [int]
Body (text)
Title (varchar)

Detta är tabellen till ett trådat forum.
Jag har gjort ett admin-gränssnitt som gör att man kan gå in på ett inlägg och sätta "Show=0" och gömma just det inlägget (istället för att radera det).

Problemet är: Hur gör man en SELECT-sats som kan leta reda på alla relaterade trådar (ParentID) till det inlägget som man tar bort och de efterkommande svaren på det inlägget?

@ndersMedlem sedan juni 200032 969 inlägg
#2

Hmm...

Om jag inte missförstår:

SELECT f1.MsgID FROM forum f1 INNER JOIN forum f2 ON f1.MsgID = f2.ParentID WHERE f2.MsgID = 4711

mvh

ironheadMedlem sedan mars 20011 346 inlägg
#3

@nders: Det där förstod jag inte alls....jag vill alltså uppdatera (UPDATE) fältet "Show" med 0 (noll) från "MsgId" 4711 och alla trådar som är relaterade till den tråden i nedstigande led :)

Alla meddelanden ligger i "forum"-tabellen

alltså:

MsgId-----ParentID
4711------0
4712------4711
4723------4712
.
.
.
4799-----4723

@ndersMedlem sedan juni 200032 969 inlägg
#4

Säg det då. Som man frågar får man svar... ;)

Jag skulle vilja föreslå att du gör en rekursiv funktion i det scriptspråk du använder för att uppdatera en nivå i taget. Det finns nog en del att hitta om du söker i SQL-forumet. Exempelvis vet jag att Palle ställer en närbesläktad fråga i en relativt ny tråd. ;)

Visar du alltså ett och samma inlägg i flera trådar? Jag är lite förvirrad...

PalleMedlem sedan apr. 20003 174 inlägg
#5

Känns som om du och jag sitter i samma båt ironhead. ;)
http://www.webforum.nu/showthread.php?s=&postid=936671#post936671

Tror vi har en liknande uppbyggnad, dock i olika syften,
men inget av det som jag har testat har fungerat. :(

ironheadMedlem sedan mars 20011 346 inlägg
#6

@nders skrev:

Visar du alltså ett och samma inlägg i flera trådar? Jag är lite förvirrad...

Nej!

MsgId-----ParentID---Title
4711------0----------test1
4712------4711-------re: test1
4723------4712-------re: re: test1
.
.
.
4799-----4723--------re: re: re: test1

Förstår du då :)

@ndersMedlem sedan juni 200032 969 inlägg
#7

Ah, nu förstår jag. Det är nog jag som inte förstår hur ett trådat forum fungerar. ;)

Så, när ett inlägg raderas så raderas även svaren på det inlägget, är det så du menar? Det låter totalt livsfarligt, men skulle gå att lösa utan en allt för klurig rekursiv funktion.

mvh

ironheadMedlem sedan mars 20011 346 inlägg
#8

Har försök göra nån slags av quick and dirty-lösning, men det har ju inte med SQL-forumet att göra egentligen...

ofmsgid = id:et på den tråd jag vill radera

SET RS = oConn.Execute("SELECT MsgID,ParentId FROM Messages WHERE MsgID=" & ofmsgid)
ParentId = RS("ParentId")

oConn.Execute("UPDATE Messages SET Show=0 WHERE MsgID=" & ofmsgid & " AND ParentId=" & ParentId)

SET RS2 = oConn.Execute("SELECT MsgID,ParentId FROM Messages WHERE ParentID=" & ofmsgid)
ofmsgid = RS2("MsgId")
ironheadMedlem sedan mars 20011 346 inlägg
#9

Palle skrev:

Känns som om du och jag sitter i samma båt ironhead. ;)
http://www.webforum.nu/showthread.php?s=&postid=936671#post936671

Tror vi har en liknande uppbyggnad, dock i olika syften,
men inget av det som jag har testat har fungerat. :(

Tuta åt mig om du kommer på nåt finurligt, så tutar jag om jag fixar det... :e

289 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
127 ms — hämta forumlista (db)
121 ms — hämta statistik (db)
126 ms — hämta tråd, inlägg och bilagor (db)