webForumDet fria alternativet

Ta bort inlägg i forum...

ASP

20 svar · 270 visningar · startad av Mika3l

Medlem sedan nov. 20018 492 inlägg
Frågan#1

När jag tar bort ett inlägg från ett forum så sätts antalinlagg -1 på personen som har skrivit inlägget, inga problem så långt.
Men om man ska ta bort en hel tråd(med svarsinläggen till), hur gör man då för att sätta antalinlagg -1 på alla personer som har skrivit inlägg?

Hoppas ni förstår vad jag menar!

Medlem sedan mars 2002777 inlägg
#2

Är det inte bättre att göra bakvänt?

SELECT COUNT(*) as posted FROM inlagg WHERE memberId = " & id

Då får du alltid rätt siffra vid presentationen.

Medlem sedan nov. 20018 492 inlägg
#3

Jo, det är ju en bra idé men jag funderar på om det inte blir ganska segt att räkna ut hur många inlägg folk har gjort för varje inlägg i en tråd(?)...

Medlem sedan mars 2002777 inlägg
#4

Njea, det blir det kanske.

Går ju göra på ditt vis också.

  1. hämta alla inlägg/svar som ingår i den tråden du ska radera
  2. loopa igenom resultatet
  3. gör en update i loopen där du uppdaterar antalPostade med -1 för den medlem där rundans medlemsid övernsstämmer med id:et för antalPostade.
Medlem sedan nov. 20018 492 inlägg
#5

Det var det du nämde senast som jag hade tänkt mig, men jag vet inte riktigt hur koden ska vara, någon som kan hjälpa mig med den?

Medlem sedan mars 2002777 inlägg
#6

Det beror helt på hur din tabellstruktur ser ut, vill du visa en liten sådan ?

Medlem sedan nov. 20018 492 inlägg
#7

inlagg
--- IID(Autonumber, primärnyckel) --- namn(text) --- antalsvar(number) --- svar(yes/no)

medlemmar
--- MID(Autonumber, primärnyckel) --- anvnamn(text) --- antalinlagg

Nog det enda du behöver veta tror jag...(?)

Medlem sedan mars 2002777 inlägg
#8

Hur vet du vilka svar som hör till vilken tråd?

Medlem sedan nov. 20018 492 inlägg
#9

Glömde det fältet, svartill heter det(ligger i tabellen inlagg som du nog förstår ;) ) och det är av typen number.

Medlem sedan mars 2002777 inlägg
#10

Jag skulle endast sparat MID i tabellen inlagg och inte hela namnet.

Mycket otestat av en trött lamp, men du hajar kanske principen?

sql ="select * from inlagg where IID = " & request.querystring("MessId") & " OR svartill = " & request.querystring("MessId")

set rs = conn.execute(sql)

while not rs.eof

sql ="update medlemmar set antalinlagg = antalinlagg - 1 where anvnamn = '" & rs("namn") & "' "

conn.execute(sql),,128

rs.movenext
wend
Medlem sedan nov. 20018 492 inlägg
#11

Jag skulle endast sparat MID i tabellen inlagg och inte hela namnet.

Namnet sparas där för att visa vem som har skrivit inlägget också. ;)

Koden du skickade är en sådan jag hade tänkt mig ungefär, fast jag testar den senare idag ;) , lite trötter nu... :p

Medlem sedan mars 2002777 inlägg
#12

Mika3l skrev:

Jag skulle endast sparat MID i tabellen inlagg och inte hela namnet.

Namnet sparas där för att visa vem som har skrivit inlägget också. ;)

Men gör du en join mellan de två tabeller, får du ut namnet ändå ;)

Medlem sedan nov. 20018 492 inlägg
#13

Men gör du en join mellan de två tabeller, får du ut namnet ändå

Jo, men nu kan inte jag så mycket SQL. ;)

Medlem sedan mars 2002777 inlägg
#14

If you ask, we give you the answer :D

Medlem sedan nov. 20018 492 inlägg
#15

Hehe, ok, hur gör man joins?

/Mika3l - Åker bort imorgon så därför får du inga svar från mig på ett par dagar. ;)

Medlem sedan mars 2002777 inlägg
#16

finns två sätt:
1)

SELECT field1, field2, field3, field4
FROM table1
INNER JOIN table2
ON table1.field = table2.field
SELECT field1, field2, field3, field4
FROM table1, table2
WHERE table1.field = table2.field

Jag brukar använda den första varianten.

RED: Observera att fälten i villkoren ON och WHERE måste ha jämförbart innehåll och vara av samma datatyp.
RED2: Det finns fler varianter än INNER JOIN - LEFT, OUTER och RIGHT

Medlem sedan mars 2002777 inlägg
Medlem sedan nov. 20018 492 inlägg
#18

Öhh, jaha?
Detta gjorde inte att jag fattade så mycket. :p ;)
Förklara lite mer är du snäll. :)

Medlem sedan nov. 20018 492 inlägg
#19

Lite kvällsläsning

Howhowhow(tomtehow). :o
Får bli en annan kväll det du! ;) *Magen kurrar* :p

Medlem sedan mars 2002777 inlägg
#20

Låt oss säga att du har två tabeller som ett exempel:

Inlagg och Members

Tabellen members har ett unikt id, memberid och ett användarnamn, username. För att veta vem som gjort varje inlägg sparar du ditt memberid i tabellen Inlagg istället för hela användarnamnet. Då har du skapat en relation mellan tabellerna och du kan hämta data som är relaterad till varandra. Denna hämtning kan se ut så här:

SELECT Inlagg.message, Inlagg.dteDate,  Members.Username, Members.MemberId
FROM Inlagg
INNER JOIN Members
ON Inlagg.MemberId = Members.MemberId

Då får du ut datumet för inlägget, själva texten i inlägget, användarnamnet som gjort inlägget och användarens id. Fördelen är att du inte dubbellagrar samma data på flera ställen.

258 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)