Avatar billede no_doubt Nybegynder
09. januar 2003 - 15:22 Der er 7 kommentarer og
1 løsning

Chat max indlæg problematik

Jeg har en chat som bruger en database, men når jeg chatter bliver databasen hurtigt fyldt op.

Derfor skal der laves et eller andet smart så de indlæg der er "set" skal slettes.

Der kan både chattes privat og til alle, men hvordan griber jeg det an.

"En tanke"

Hvis der er 10 indlæg efter privat chat vil det private jo forsvinde ud af billedet og derfor kan slettes, men hvis der nu er flere der chatter privat og noglegange chatter en med flere i privat så er problemet der jo

Hvad dælen gør jeg.

p.s indtil nu har jeg en sletknap som rydder databasen.
Avatar billede medions Nybegynder
09. januar 2003 - 15:28 #1
Du laver da bare en COUNT() funktion der heletiden tjekker at der ikker er mere end 10 records i din tabel!

fx.

strSQL = "SELECT ID, COUNT(Indlæg) AS CountIndlaeg FROM tblChat ORDER BY [ID] DESC"
Set objRs = objConn.Execute(strSQL)

If objRs("CountIndlaeg") > 10 Then
  objConn.Execute("DELETE * FROM tblChat WHERE ID > " & objRs("ID")
End If

//>Rune
Avatar billede medions Nybegynder
09. januar 2003 - 15:29 #2
Sorry...

strSQL = "SELECT ID, COUNT(Indlæg) AS CountIndlaeg FROM tblChat ORDER BY [ID] DESC"
Set objRs = objConn.Execute(strSQL)

If objRs("CountIndlaeg") > 10 Then
  objConn.Execute("DELETE * FROM tblChat WHERE ID > " & objRs("ID"))
End If

-manglede en slutparantes!

//>Rune
Avatar billede medions Nybegynder
09. januar 2003 - 15:53 #3
Hmm prøv lgie med denne:

strSQL = "SELECT COUNT(ID) AS CountIndlaeg FROM tblChat"
Set objRs = objConn.Execute(strSQL)

strSQL = "SELECT TOP 1 FROM tblChat"
Set objRsTop1 = objConn.Execute(strSQL)

If objRs("CountIndlaeg") > 10 Then
  objConn.Execute("DELETE * FROM tblChat WHERE ID > " & objRsTop1("ID"))
End If

//>Rune
Avatar billede medions Nybegynder
09. januar 2003 - 15:57 #4
Hov, min fejl..:

sådan

<%
    strSQL = "SELECT COUNT(ID) AS CountIndlaeg FROM tblChat"
    Set objRs = objConn.Execute(strSQL)

    strSQL = "SELECT TOP 1 FROM tblChat"
    Set objRsTop1 = objConn.Execute(strSQL)

    If objRs(0) > 10 Then
      objConn.Execute("DELETE * FROM tblChat WHERE ID > " & objRsTop1("ID"))
    End If
%>

//>Rune
Avatar billede medions Nybegynder
09. januar 2003 - 21:05 #5
Thx 4 Poinz

//>Rune
Avatar billede no_doubt Nybegynder
09. januar 2003 - 21:09 #6
men det virkede ikke...
Avatar billede eagleeye Praktikant
09. januar 2003 - 23:26 #7
Hvis du eksvis kan vise ialt 18 linier i chat vinduet:
Så gemmer du max 18 public chat beskeder til dem som ikke får private beskeder for at fylde vinduet ud. Så skal du gemme 18 private beskeder pr person for en sikkerhedsskyld dog er man nød til at tjekke for hver om afsender/modtager har 18 beskeder ialt inden en besked slettes:


Efter indsættelse i databasen:



'Find antallet af public beskeder ved til = 'Alle'
SQL = "SELECT ID FROM beskeder WHERE til = 'Alle' ORDER BY ID DESC"
rs.Open SQL,Conn, 1,3

if Int(rs.RecordCount) >= 18 then
  rs.Move 17
  ID = rs("ID")
 
  SQL = "DELETE FROM beskeder WHERE ID < " & ID
  Conn.Execute(SQL)
end if
rs.Close

'Dette er at gentage det lidt men den slette så der max er 18 private beskeder
'ved den bruger som er logget ind Session("login") både til og fra
SQL = "SELECT ID, til, fra FROM beskeder WHERE til = '" & Session("login") & "' OR fra = '" & Session("login") & "' ORDER BY ID DESC"
rs.Open SQL,Conn, 1,3

if Int(rs.RecordCount) >= 18 then
  rs.Move 17

  delID = ""
  do while not rs.EOF
    if rs("til") = Session("login") then
      SQL = "SELECT Count(ID) as antal FROM beskeder WHERE (til = 'Alle' OR til = '" & rs("fra") & "' OR fra = '" & rs("fra") & "') AND ID > " & rs("id")
    else
      SQL = "SELECT Count(ID) as antal FROM beskeder WHERE (til = 'Alle' OR til = '" & rs("til") & "' OR fra = '" & rs("til") & "') AND ID > " & rs("id")
    end if
    Set temp = Conn.Execute(SQL)
    if Int(temp("antal")) >= 18 then
      delID = delID & "," & rs("id")
    end if
    rs.MoveNext
  loop
  if delID <> "" then
    delID = Mid(delID,2) 'Fjerner første ,
    SQL = "DELETE FROM beskeder WHERE ID IN (" & delID & ")"
    Conn.Execute(SQL)
  end if
end if

rs.Close
conn.Close
Avatar billede no_doubt Nybegynder
09. januar 2003 - 23:36 #8
den siger fejl linje 8
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester