Avatar billede w13 Novice
20. juli 2004 - 10:07 Der er 6 kommentarer og
4 løsninger

Chat-spørgsmål

Hej Eksperter...

Jeg har nu næsten lavet en mindre chat, men er kommet ud for et problem... Chatten skal BÅDE vise beskeder fra brugere, men osse en besked, når de logger på... (Jeg sætter den til at gemme det i databasen, når de logger ind!)

Så jeg har altså en database med følgende felter:
id | username | message | time | for

('For' viser, hvem beskeden er skrevet til... Hvis den er til 'Alle', kan alle se den, og 'logpå'-beskeder er til 'chat'!)

Men nu skal jeg have den til at vise BÅDE 'logpå' og beskeder til 'alle' og til brugeren 'Toby'...

Hvordan gøres det, når jeg har denne kode:

<%
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("../db/database.mdb")

strSQL = "SELECT top 3 * FROM chat WHERE ORDER BY time DESC"
Set rs = myConn.Execute(strSQL)

Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
Do While Not rs.EOF
Response.Write "<font color='#008000' size='2'>" & rs("time") &" - " & rs("username") &" til " & rs("for") &": </font><font color='#000000' size='2'>" & rs("message") & "</font><br>"
rs.MoveNext
Loop
Else
Response.Write "<font color='#000000' size='2'>Der er ingen beskeder i chatten!</font>"
End If
%>

Håber, I kan hjælpe mig...
W13
Avatar billede carpediem Nybegynder
20. juli 2004 - 10:45 #1
SELECT top 3 * FROM chat WHERE (for = 'logpå' OR for = 'alle' OR for = 'Toby' ORDER BY time DESC
Avatar billede carpediem Nybegynder
20. juli 2004 - 10:46 #2
Ups. Glemte lige at afslutte parantesen.
SELECT top 3 * FROM chat WHERE (for = 'logpå' OR for = 'alle' OR for = 'Toby') ORDER BY time DESC
Avatar billede w13 Novice
20. juli 2004 - 11:13 #3
Ja, men det er mere, hvordan man får den til at vise det rigtigt, i den der 'Do While'-fidus... altså... Hvis det er en 'logpå'-ting, skal den ikke skrives ligesom en 'alle'-besked... Hvordan gøres det?
Avatar billede carpediem Nybegynder
20. juli 2004 - 11:50 #4
Do While NOT rs.EOF
  If rs("for") = "logpå" or rs("for") = "alle" Then
    'Her skriver du hvis til alle eller logpå
  Else
    'Så er det en privat besked
  End If
  rs.MoveNext
Loop
Avatar billede carpediem Nybegynder
20. juli 2004 - 11:52 #5
Hov, jeg læste forkert.
Do While NOT rs.EOF
  If lCase(rs("for")) = "logpå" Then
    'Hvis den er fra systemet
  ElseIf lCase(rs("for")) = "alle" Then
    'Så sendes den til alle
  Else
    'Så er det en privat besked
  End If
  rs.MoveNext
Loop
Avatar billede w13 Novice
20. juli 2004 - 12:03 #6
Så får jeg denne fejl:

Microsoft VBScript compilation error '800a040e'

'loop' without 'do'

/chat/chat_messages.asp, line 68

Loop
^


Og koden ser således ud:

<%
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("../db/database.mdb")

strSQL = "SELECT top 3 * FROM chat WHERE ORDER BY time DESC"
Set rs = myConn.Execute(strSQL)

Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
Do While NOT rs.EOF
  If lCase(rs("for")) = "chat" Then
    Response.Write "<font color='#c0c0c0' size='2'>" & rs("username") &" " & rs("message") &" " & rs("time") &"</font><br>"
  Else If lCase(rs("for")) = "alle" Then
    Response.Write "Hej"
  Else
    Response.Write "Hejhej"
  End If
  rs.MoveNext
Loop
Else
Response.Write "<font color='#000000' size='2'>Der er ingen beskeder i chatten!</font>"
End If
%>
Avatar billede carpediem Nybegynder
20. juli 2004 - 12:12 #7
<%
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("../db/database.mdb")

strSQL = "SELECT top 3 * FROM chat WHERE ORDER BY time DESC"
Set rs = myConn.Execute(strSQL)

If Not (rs.BOF Or rs.EOF) Then
  Do While NOT rs.EOF
    If lCase(rs("for")) = "chat" Then
      Response.Write "<font color='#c0c0c0' size='2'>" & rs("username") &" " & rs("message") &" " & rs("time") &"</font><br>"
    ElseIf lCase(rs("for")) = "alle" Then
      Response.Write "Hej"
    Else
      Response.Write "Hejhej"
    End If
    rs.MoveNext
  Loop
Else
  Response.Write "<font color='#000000' size='2'>Der er ingen beskeder i chatten!</font>"
End If
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
%>

Der var mellemrum mellem else og if. Det skal der ikke være.
Avatar billede w13 Novice
20. juli 2004 - 12:42 #8
Ok... Jeg rettede det, fordi jeg troede, det var en fejl!
Avatar billede w13 Novice
20. juli 2004 - 13:16 #9
Tak : )
Avatar billede carpediem Nybegynder
20. juli 2004 - 13:20 #10
velbekomme
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