Första frågan: Varför inte helt enkelt bara låta Topic vara ett sträng-fält? Om det är null eller nollängd så visas id:t.
Andra frågan: Du lägger till en främmande nyckel som pekar på ett annat foruminlägg. Om det är Null (eller noll) så är det en ny tråd annars pekar det på en tråd (eller ett annat inlägg om du ska ha forumet multitrådat).
Sedan får du trixa med lite sql-frågor som jag inte kan i huvudet men du får lägga en join som joinar trådarna med dess svar. Dvs tab1.ID = tab2.ParentID. Hoppas du förstår...
Med första frågan ska du alltså visa trådens rubrik om det är ett svar, eller?
Andra frågan hade du ju redan det där fältet jag sa att du skulle lägga till. [forumid] Ska se om jag kan illustrera med ett sql-uttryck. I'll be back! :)
WEBB(ID1) <- Det är rubriken gjorde som du sa sätta den som 0
> ASP <- Topics som ska vara under WEBB som har ID=1
> PHP <- Topics som ska vara under WEBB som har ID=1
NY RUBRIK(ID20)
> Lite av varje
EN FRÅGA TILL!
Jag tror jag har kommit på en lösning till det här men jag vet inte hur jag ska kunna göra det:
På forumet ska det finnas "admins" eller "Moderator" som det heter här. Jag hade tänkt mej med ett tal-system eller kanske ID system för dom som är admins där
I medlem fliken så har jag en som heter admin (tal)
hur ska jag göra så att tex Pelle är moderator på ASP och PHP medan olof är moderor för ASP bara... tack på förhand
En sak till kan man får ner denna kod på något sätt?? för det blir rätt mycket rs som är öppna....
<%
SQL = "select * from forums"
Set RS = Databas.Execute(SQL)
Do While NOT RS.EOF
SQL = "select count(*) AS Count_inlagg from topics where forum_id = " & RS("id")
Set RS_count = Databas.Execute(SQL)
SQL = "select count(*) AS Count_inlagg2 from topics where svar_id = " & RS("id")
Set RS_count2 = Databas.Execute(SQL)
If RS_count("count_inlagg") <> 0 then
SQL = "select datum from topics where forum_id = " & RS("id")
SQL = SQL & " order by datum DESC"
Set RS_senaste = Databas.Execute(SQL)
SQL = "select amne from topics where forum_id = " & RS("id")
SQL = SQL & " order by datum DESC"
Set RS_amne = Databas.Execute(SQL)
SQL = "select skribent from topics where forum_id = " & RS("id")
SQL = SQL & " order by datum DESC"
Set RS_skribent = Databas.Execute(SQL)
End if
%>
Kom på att du kanske vill ha med datum för inläggen. Hur som helst så tror jag att jag kom fram med ett bra sql-uttryck för att få fram inläggen som du beskrev:
select
forum.ID threadID,
*,
(select count(f.ID) from forum f where forum.ID = f.forumid) AntalSvar
from
forum
where
forumid = 0
UNION
select
f2.ID threadID,
f1.*,
(select count(f.ID) from forum f where f1.ID = f.forumid) AntalSvar
from
forum f1
INNER JOIN
forum f2
ON
f1.forumid = f2.ID
where
f1.forumid > 0
order by
threadID
ehh... fattar inte mycket! har aldrig använt inner join eller vad det var.....
jag kan visa min kod:
<%
SQL = "select * from forums"
Set RS = Databas.Execute(SQL)
Do While NOT RS.EOF
SQL = "select count(*) AS Count_inlagg from topics where forum_id = " & RS("id")
Set RS_count = Databas.Execute(SQL)
SQL = "select count(*) AS Count_inlagg2 from topics where svar_id = " & RS("id")
Set RS_count2 = Databas.Execute(SQL)
If RS_count("count_inlagg") <> 0 then
SQL = "select datum from topics where forum_id = " & RS("id")
SQL = SQL & " order by datum DESC"
Set RS_senaste = Databas.Execute(SQL)
SQL = "select amne from topics where forum_id = " & RS("id")
SQL = SQL & " order by datum DESC"
Set RS_amne = Databas.Execute(SQL)
SQL = "select skribent from topics where forum_id = " & RS("id")
SQL = SQL & " order by datum DESC"
Set RS_skribent = Databas.Execute(SQL)
End if
%>
<% if rs("forumid") = "0" then %>
RUBRIKEN: <b><%=RS("namn")%></b><br>
<%else %>
>> <a href="readforum.asp?id=<%rs("ID")"><%=RS("namn")%></a><br>
<%end if%>
angående frågan med admins.
sätt id's för alla olika delar, inte någonstans i koden, utan på ett papper eller nånstans så att du vet vad delarna har för siffra
om du lägger till en del, ska den ha siffran som föregående hade
* 2
ASP = 1
PHP = 2
Perl = 4
Python = 8
etc
sen summerar man varje dels siffra för att lägga till hos administratören. Ska pelle vara admin för PHP och Perl så ska han ha rättigheten 6 ( 2+4 ).
för att sedan se vad administratören har för rättigheter:
admtal = Pelles_rättigheter 'i detta fall 6
tmp = 16
Dim admarray(8)
admarray(1)=0
admarray(2)=0
admarray(4)=0
admarray(8)=0
Do until admtal < 1
tmp = tmp / 2
if int(admtal) >= tmp then
admtal = admtal - tmp
admarray(tmp) = 1
end if
Loop
kör man det så blir admarray(2) och admarray(4) satt till 1, dvs han har rättigheter där (php och perl)
svårt?, kanske finns ett smidigare sätt, men så har jag iaf löst det på ett ställe, dessutom e jag skitdålig på att förklara.. hoppas du förstår idén iaf :)
jag fortsätter med problem... nu tycks det inte fungera med
svar och inlägg saken på sidan..
Kan någon hjälpa mej??? är det ingen som har gjort något sånt här innan????
262 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2