Använder mig av denna kod till ett chatt. När man skickar ett meddelande kan välja om det bara ska vara ämnat för en viss person eller för alla. Detta hamnar i fältet "To" i databasen. Försökte med detta, utan större framgångar. Nån som har något tips eller kanske en bättre lösning till och med? Ska även passa på att tillägga en annan sak.. Har nog löst Problem 1! Koden fungerar tror jag, det verkar vara något konstigt med mina stylesheets bara. Men har någon en bättre lösning så framför den gärna! Varför inte använda SQL och Skriva:Privata meddelanden
<code>
Do Until rs.EOF
If rs("To") = Request.Cookies("Alias") Then
avntUser(lngI) = "[" & formate(rs("Time")) & "]" & " " & rs("Alias")
avntLine(lngI) = "<font color=#FF0000>" & rs("PM") & "</font>"
lngI = lngI + 1
rs.MoveNext
Elseif rs("Alias") = Request.Cookies("Alias") Then
avntUser(lngI) = "[" & formate(rs("Time")) & "]" & " " & rs("Alias")
avntLine(lngI) = rs("PM")
lngI = lngI + 1
rs.MoveNext
Elseif rs("To") = "ALLA" Then
avntUser(lngI) = "[" & formate(rs("Time")) & "]" & " " & rs("Alias")
avntLine(lngI) = rs("PM")
lngI = lngI + 1
rs.MoveNext
Else
rs.MoveNext
End If
Loop
</code>
Mvh
Teodor LinderSv: Privata meddelanden
Så här ser hela koden ut:
<code>
Dim lngI 'As Long
Dim avntUser() 'As Variant (Array)
Dim avntLine() 'As Variant (Array)
Const adOpenStatic = 3
Const adLockReadOnly = 1
Set rs = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT TOP 15 * From dialog ORDER BY Time desc"
rs.Open SQL, Connection, adOpenStatic, adLockReadOnly
lngI = 1
ReDim avntUser(rs.RecordCount)
ReDim avntLine(rs.RecordCount)
Do Until rs.EOF
If rs("To") = Request.Cookies("Alias") Then
avntUser(lngI) = "[" & formate(rs("Time")) & "]" & " " & rs("Alias")
avntLine(lngI) = "<font color=#FF0000>" & rs("PM") & "</font>"
lngI = lngI + 1
rs.MoveNext
Elseif rs("Alias") = Request.Cookies("Alias") Then
avntUser(lngI) = "[" & formate(rs("Time")) & "]" & " " & rs("Alias")
avntLine(lngI) = rs("PM")
lngI = lngI + 1
rs.MoveNext
Elseif rs("To") = "ALLA" Then
avntUser(lngI) = "[" & formate(rs("Time")) & "]" & " " & rs("Alias")
avntLine(lngI) = rs("PM")
lngI = lngI + 1
rs.MoveNext
Else
rs.MoveNext
End If
Loop
</code>
Jag hämtar TOP 15 från databasen eftersom jag har 15 rader i chattet. Men om en av dessa rader är privat och endast till för en av användarna, då får dom andra bara se 14 rader. Hur löser man detta?
Mvh
Teodor LinderSv: Privata meddelanden
Däremot kvarstår Problem 2, så det får nån ädel själ gärna hjälpa till med! :)
Mvh
Teodor LinderSv: Privata meddelanden
<code>
Function SQLText(Value)
If Len(Value) Then
SQLText = "'" & Replace(Value,"'","''") & "'"
Else
SQLText = "Null"
End If
End Function
Dim lngI 'As Long
Dim avntUser() 'As Variant (Array)
Dim avntLine() 'As Variant (Array)
Dim strAlias
Const adOpenStatic = 3
Const adLockReadOnly = 1
strAlias = Request.Cookies("Alias")
Set rs = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT TOP 15 *" & vbCrLf & _
"FROM dialog" & vbCrLf & _
"WHERE To = 'ALLA' OR " & SQLText(strAlias) " IN (To, Alias)" & vbCrLf & _
"ORDER BY Time DESC"
rs.Open SQL, Connection, adOpenStatic, adLockReadOnly
lngI = 1
ReDim avntUser(rs.RecordCount)
ReDim avntLine(rs.RecordCount)
Do Until rs.EOF
If rs("To") = strAlias Then
avntUser(lngI) = "[" & formate(rs("Time")) & "]" & " " & rs("Alias")
avntLine(lngI) = "<font color=#FF0000>" & rs("PM") & "</font>"
Else
avntUser(lngI) = "[" & formate(rs("Time")) & "]" & " " & rs("Alias")
avntLine(lngI) = rs("PM")
End If
lngI = lngI + 1
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
</code>
Tänk på att det inte är bra att identifiera en användare med Cookies. Ändrar man alias kan man läsa andras privata medelanden.