Avatar billede psyclown Nybegynder
12. september 2003 - 00:15 Der er 7 kommentarer og
1 løsning

chat - udskriver kun 1 linie i chatvinduet

Jeg er igang med at lave en chat, hvilket jeg ikke har rodet med før, men en gang skal jo være den første.

Jeg har lige et par problemer med den chat jeg er igang med.

1) Som overskriften siger, når man vil sende en chatbesked fra form feltet overskriver den bare den linie som står der i forvejen, så den kun udskriver den linie der er blevet skrevet sidst, jeg har kigget på det hele dagen og jeg kan ikke finde nogle fejl i det.

2) Hver gang siden selv-opdaterer skriver den: "brugernavn" er er logged på kl. dato/tid og det er jo lissom ikke meningen, meningen er selvfølgelig at den skal skrive når de kommer online, hvilket jeg også har prøvet på i koden, men kan ikke få det til at virke.

Her er hele koden:

<!--#include file="includes/functions.asp"-->
<!--#include file="includes/conn.asp"-->
<!--#include file="includes/autologin.asp"-->
<%
    page = Request.Querystring("p")

    If Session("AdminPass") = "OK" Then
        Set conntemp = Server.CreateObject("ADoDB.Connection")
        conntemp.Open DSN
        Set rsChatSettings = conntemp.execute("SELECT U_CHAT_LINIER, U_CHAT_PRIV_LINIER, U_CHAT_UPDATERATE FROM USERS WHERE UID = "& Session("AdminID"))

        AntalLinier = Clng(rsChatSettings("U_CHAT_LINIER"))
        AntalPrivLinier = Clng(rsChatSettings("U_CHAT_PRIV_LINIER"))
        UpdateRate = Clng(rsChatSettings("U_CHAT_UPDATERATE"))
    End If

    If page = "" Then
        Response.Write "<html>"& vbCrLf &_
        "  <head>"& vbCrLf &_
        "    <title> cichlide-net.dk </title>"& vbCrLf &_
        "    <script language=""JavaScript"" src=""includes/scripts.js""></script>"& vbCrLf &_
        "    <link rel=""stylesheet"" type=""text/css"" href=""includes/style.css"">"& vbCrLf &_
        "    <frameset cols=""*,80"" frameborder=""yes"" border=""0"" framespacing=""0"">"& vbCrLf &_
        "        <frameset rows=""*,80"" frameborder=""yes"" border=""0"" framespacing=""0"">"& vbCrLf &_
        "            <frame src=""chat.asp?p=main"" name=""chat_frame"" scrolling=""auto"">"& vbCrLf &_
        "            <frame src=""chat.asp?p=send"" name=""besked_frame"" scrolling=""no"" noresize>"& vbCrLf &_
        "        </frameset>"& vbCrLf &_
        "        <frame src=""chat.asp?p=online"" name=""brugere_frame"" scrolling=""auto"" noresize>"& vbCrLf &_
        "    </frameset>"& vbCrLf &_
        "  </head>"& vbCrLf &_
        "</html>"& vbCrLf
    End If
    If page = "main" Then
        If Not Session("AdminPass") = "OK" Then
            Response.Redirect "chat.asp?p=fejl"
        Else
            If Application(Session("AdminUser") &"_login") = "" Then
                For x = AntalLinier TO 2 STEP -1
                    Application("offnlbeskeder_"& x) = Application("offnlbeskeder_"& x-1)
                Next
                Application("offnlbeskeder_1") = "<font color=""#FF0000""><b>"& Session("AdminUser") &" er logged på kl. "& Now &"</b></font>"

                Application(Session("AdminUser") &"_login") = "yes"
            End If
            Response.Write "<html>"& vbCrLf &_
            "  <head>"& vbCrLf &_
            "    <script language=""JavaScript"" src=""includes/scripts.js""></script>"& vbCrLf &_
            "    <link rel=""stylesheet"" type=""text/css"" href=""includes/style.css"">"& vbCrLf &_
            "    <meta http-equiv=""Refresh"" content="""& UpdateRate &""">"& vbCrLf &_
            "  </head>"& vbCrLf &_
            "  <body>"& vbCrLf
            For x = 1 TO AntalLinier
                Response.Write Application("offnlbeskeder_"& x) &"<br>"& vbCrLf
            Next
            Response.Write "  </body>"& vbCrLf &_
            "<html>"& vbCrLf
        End If
    End If
    If page = "send" Then
        Response.Write "<html>"& vbCrLf &_
        "  <head>"& vbCrLf &_
        "    <script language=""JavaScript"" src=""includes/scripts.js""></script>"& vbCrLf &_
        "    <link rel=""stylesheet"" type=""text/css"" href=""includes/style.css"">"& vbCrLf &_
        "  </head>"& vbCrLf &_
        "  <body>"& vbCrLf &_
        "    <form action=""chat_frame.asp?p=send"" target=""chat_frame"" method=""post"">"& vbCrLf &_
        "      <input type=""text"" name=""Besked"" size=""30""> <input type=""submit"" name=""SendBesked"" value="" Send "">"& vbCrLf &_
        "    </form>"& vbCrLf &_
        "  </body>"& vbCrLf &_
        "<html>"& vbCrLf
        Bedsked = Request.Form("SendBesked")
        If Bedsked <> "" Then
            For x = AntalLinier TO 2 STEP -1
                Application("offnlbeskeder_"& x) = Application("offnlbeskeder_"& x-1)
            Next
            Application("offnlbeskeder_1") = Session("AdminUser") &": "& Bedsked
        End If
    End If
%>

På forhånd tak!
Avatar billede nielle Nybegynder
12. september 2003 - 07:51 #1
Hvis ikke der glæder at:

Session("AdminPass") = "OK"

- så vil din AntalLinier aldrig blive sat til noget. I dette tilfælde behandles den som om at den har værtdien 0.
Avatar billede psyclown Nybegynder
12. september 2003 - 13:32 #2
Session("AdminPass") = "OK" tjecker bare om personen er logged ind, skulle nok have sagt at det er lavet til et community.
Hvis jeg ikke tjecker på Session("AdminPass") = "OK", så vil der komme en fejl, hvis de ikke er logged in på community siden, fordi den ikke kan finde Session("AdminID") (deres brugerid)
Avatar billede nielle Nybegynder
12. september 2003 - 13:57 #3
"AdminPass" antyder nu at det er administratoren det tales om. Hvis folk ikke er logget ind, skal de så ikke omdirigeres til logge-ind siden?

Anyway, som sagt: Hvis den ikke er sat og lig med "OK" så får AntalLinier ikke nogen værdi. Så hvis de ikke er logget ind så ser de kun 0 linjer - eller 1 linje alt efter hvordan dine løkker er udformet.

Det andet der kan være galt er at U_CHAT_LINIER i databasen har en forkert værdi. Da du ikke ciser den kode som rent faktisk har ansvaret for at opdatere denne værdi, kan jeg ikke udtale mig om det er det der kan være galt.

Men du kan da prøve at udskrive værdien af AntalLinier umiddelbart efter:

If Session("AdminPass") = "OK" Then
  ...
End If
Response.Write("Antal linjer: " & AntalLinier)
Avatar billede psyclown Nybegynder
12. september 2003 - 14:17 #4
Session("AdminPass") er bare session der tjecker om folk er logged ind på communitiet og ikke på chatten, altså de skal være logged ind på communitiet (Session("AdminPass") skal være "OK") for at kunne gå på chatten og hvis de ikke er logged ind, så skal der redirectes til chat.asp?p=fejl, som der står i koden.

U_CHAT_LINIER har værdien tal i databasen, den er sat til 30 som standard.
Har også udskrevet AntalLinier nu for at se om det virkede og det virkede fint, den skrev 30.
Avatar billede xero Nybegynder
13. september 2003 - 05:06 #5
Jeg har efterhånden lavet en del chats, og min erfaring med at bruge database til output af "chattekst" er meeeget dårlig. Hvis du bruger en access database vil den blive meget belastet, hvis bare der er 3-5 brugere på chatten. (skal lige nævnes at access højst kan have 5 samtidige connections til samme database via ODBC) Mit forslag ville være, at du bruger Applications istedet. ;)
Avatar billede psyclown Nybegynder
13. september 2003 - 19:51 #6
og det er ikke applications jeg bruger...prøv at kig ordenligt efter
Avatar billede nielle Nybegynder
13. september 2003 - 19:58 #7
psyclown -> Jeg er ret sikker på at xero er klar over dette. Han (?) anbefalede i hvert fald at du begyndte at *bruge* Application i stedet for Access. Prøv selv at kig ordenligt efter.

Nu kan jeg så ikke lige se om du bruger Access eller en anden datbase, men xero ar i hvert fald en pointe.
Avatar billede psyclown Nybegynder
13. september 2003 - 20:10 #8
men det løser stadig ikke mit problem, da det er de applications jeg har problemer med.
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