Avatar billede ricokbh Nybegynder
05. november 2001 - 18:32 Der er 4 kommentarer

to mindre problemer, men alligevel lidt svært for mig

Jeg har en asp chat, som er opdelt i frames. Kan ses på http://www.dvtk.dk

Den ene ting jeg gerne vil have den til, er at når man i bunden vælger den person man vil skrive privat til, skriver en besked - bunden reloader - og så skal dropdownen have selected den værdi du sidst valgte, og ikke gå tilbage til Alle.

Mit andet er at i selve chatmain vinduet hvor beskederne kommer op, vil jeg gerne gå væk fra meta-refresh hvert x antal sekunder, til at den kun opdatere hvis der er noget at opdatere (beskeder, login og logouts...)

Jeg ved ikke hvordan dette kan laves, og om det er muligt.

Her kommer der lidt kode:

Chat_bund.asp:

<% Response.Buffer = True %>
<link rel=stylesheet href=\"chat.css\" type=\"text/css\">
<body bgcolor=\"#FFFFFF\" onload=\"document.form.besked.focus()\">
<!--#include file=function.asp-->

<form method=post action=chat_bund.asp name=form>
<select name=modtager class=form>
<option selected value=Alle>Alle</option>
    <%
    Set Conn = CreateObject(\"ADODB.Connection\")
    Conn.Open \"PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"chatten.mdb\")
    Sql = \"Select * from online order by navn\"
    Set rs = Conn.Execute(sql)
    Do until rs.eof
    %>
    <option value=<%=rs(\"navn\")%>><%=rs(\"navn\")%></option>
    <%
    rs.movenext
    loop
    rs.close
    Set rs = nothing
    Conn.Close
    Set Conn = Nothing
    %>
</select>
<input type=text name=besked class=form size=80><input type=submit class=form value=Send></form>
<input class=form type=submit value=Logud onclick=\"top.location=\'default.asp\'\">

<% if Request.ServerVariables(\"REQUEST_METHOD\") = \"POST\" then
modtager = Request.form(\"modtager\")
navn = Session(\"navn\")
besked = Replace(replace(request.Form(\"Besked\"),\"<\",\"&lt;\"),\">\",\"&gt;\")
fontcolor = Request.form(\"fontcolor\") %>
<%=chat(modtager, navn, besked, fontcolor)%>
<% response.redirect(\"chat_bund.asp\") %>
<% end if %>

--------

function.asp:

<%
    function chat(modtager, afsender, besked, fontcolor)

        Set Conn = Server.CreateObject(\"ADODB.Connection\")
        Conn.Open \"PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"chatten.mdb\") & \"\"
        Set rs = Server.CreateObject(\"ADODB.Recordset\")
        chatSQL = \"Select * from chat\"
        rs.Open chatSQL, Conn, 1, 3
            rs.addnew
            rs(\"modtager\") = modtager
            rs(\"afsender\") = afsender
            rs(\"besked\") = besked
            rs(\"fontcolor\") = fontcolor
            rs.update
        rs.close
        Set rs = nothing
        Conn.close
        Set conn = nothing

    end function


    function logud(chatnavn)
        Set Conn = Server.CreateObject(\"ADODB.Connection\")
        Conn.Open \"PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"chatten.mdb\") & \"\"
        Set rs = Server.CreateObject(\"ADODB.Recordset\")
        logudSQL = \"Select * from online where navn = \'\" & chatnavn & \"\'\"
        rs.Open LogudSQL, Conn, 1, 3
        rs.delete
        rs.close
        Set rs = nothing
        Conn.close
        Set conn = nothing

    end function

    function login(navn)
    if navn = \"\" then
    login = \"<font class=8>Du skal skrive et navn</font>\"
    else
        Set Conn = Server.CreateObject(\"ADODB.Connection\")
        Conn.Open \"PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"chatten.mdb\") & \"\"
        Set rs = Server.CreateObject(\"ADODB.Recordset\")
        LoginSQL = \"Select * from online where navn = \'\" & Request.form(\"navn\") & \"\'\"
        rs.Open LoginSQL, Conn, 1, 3
        if Rs.bof or eof then
            rs.Addnew
            rs(\"navn\") = Request.form(\"navn\")
            rs(\"time\") = Time()
            rs.update
            Session(\"navn\") = Request.form(\"navn\")
                       
                            Set ChatConn = Server.CreateObject(\"ADODB.Connection\")
                            ChatConn.Open \"PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"chatten.mdb\") & \"\"
                            Set chatrs = Server.CreateObject(\"ADODB.Recordset\")
                            chatSQL = \"Select * from chat\"
                            chatrs.Open chatSQL, ChatConn, 1, 3
                            chatrs.addnew
                            chatrs(\"modtager\") = \"Alle\"
                            chatrs(\"afsender\") = \"Chatten\"
                            chatrs(\"besked\") = \"\" & Request.form(\"navn\") & \" er logget ind klokken \" & Time() & \"\"
                            chatrs(\"fontcolor\") = \"#0000FF\"
                            chatrs.update
                            chatrs.close
                            ChatConn.close
                            Set Chatconn = nothing
            Response.Redirect(\"chat_frame.asp\")
        else
            login = \"<font class=8>Der er en bruger med det navn<br>logget på med det ønskede navn<br><br></font>\"
        end if
        rs.close
        Set rs = nothing
        Conn.close
        Set conn = nothing
    end if
    end function





    function showchat

        Set Conn = Server.CreateObject(\"ADODB.Connection\")
        Conn.Open \"PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"chatten.mdb\") & \"\"
        Set rs = Server.CreateObject(\"ADODB.Recordset\")
        showchatSQL = \"Select top 25 * from chat where modtager = \'Alle\' OR modtager = \'\" & session(\"navn\") & \"\' OR afsender = \'\" & session(\"navn\") & \"\'order by id DESC\"
        rs.Open showchatSQL, Conn, 1, 3
        Do until rs.eof
        %>
        <%
        if rs(\"modtager\") <> \"Alle\" then %>
   
            <% if rs(\"afsender\") = Session(\"navn\") then %>
            <font face=verdana size=2 color=red><b>Du fortæller <%=rs(\"modtager\")%>:</b> <%=rs(\"besked\")%></font><br>
                        <% else %>
            <font face=verdana size=2 color=red><b><%=rs(\"afsender\")%> fortæller dig:</b> <%=rs(\"besked\")%></font><br>
            <% end if %>
        <% else %>
        <font face=verdana size=2 color=<%=rs(\"fontcolor\")%>><b><%=rs(\"afsender\")%>:</b> <%=rs(\"besked\")%></font><br>
        <%
        end if
        rs.movenext
        loop
        rs.close
        Set rs = nothing
        Conn.close
        Set conn = nothing

    end function






    function showusers
        Set Conn = Server.CreateObject(\"ADODB.Connection\")
        Conn.Open \"PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"chatten.mdb\") & \"\"
        Set rs = Server.CreateObject(\"ADODB.Recordset\")
        showusersSQL = \"Select * from online \"
        rs.Open showusersSQL, Conn, 1, 3
        Do until rs.eof
        %>
        <font size=2 face=verdana><%=rs(\"navn\")%></font><br>
        <%
        rs.movenext
        loop
        rs.close
        Set rs = nothing
        Conn.close
        Set conn = nothing
    end function


    function sdelete_non_active_users

        Set Conn = Server.CreateObject(\"ADODB.Connection\")
        Conn.Open \"PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"chatten.mdb\") & \"\"
        Set rs = Server.CreateObject(\"ADODB.Recordset\")
        deleteSQL = \"Delete * from online\"
        rs.Open deleteSQL, Conn, 1, 3

        rs.close
        Set rs = nothing
        Conn.close
        Set conn = nothing
    end function
%>

------------------

chat_main.asp:

<% Response.Buffer = True %>
<meta http-equiv=refresh content=5>
<link rel=stylesheet href=\"chat.css\" type=\"text/css\">
<body bgcolor=\"#FFFFFF\">
<!--#include file=function.asp-->
<%=Showchat%>
<%=Delete_non_active_users%>
Avatar billede sp Nybegynder
05. november 2001 - 23:39 #1
Hej,

Det ene problem mener jeg ikke man kan løse.
Man kan ikke opdatere hvis der kun er noget at opdatere.

Det andet kan man godt løse b.l.a. v.h.a. Sessions.


Her tjekker vi om Session(\"where\") er tom. Er den ikke det, så vælger vi variabel og tildeler den en værdi.
if Session(\"where\")<>\"\" then
Select Case Session(\"where\")
    case sel1
        sel1=chr(34) & sel1 & chr(34) & \" selected\"
    sel2=chr(34) & sel2 & chr(34)
    case sel2
        sel2=chr(34) & sel2 & chr(34) & \" selected\"
    sel1=chr(34) & sel1 & chr(34)
    case \"empty\"
        sel1=chr(34) & sel1 & chr(34) & \" selected\"
        sel1=chr(34) & sel1 & chr(34)
END SELECT
End if


Den variabels autput lægger vi så ind i Select-menuen.

<select name=\"Maerke\">
            <option value=<%=sel1%>>Faciliteter</option>
            <option value=<%=sel2%>>Ekstraudstyr</option>
            </select>


Når formen postes( når select-menuen aktiveres) bliver der sendt en variabel med en værdi.

Den værdi skal du sætte Session(\"where\") til

Session(\"where\") = Request.form(\"where\")

<Select name=\"where\">
<option...\'

</select>

Håber du kan forstå det, eller må du spørge, så vil jeg uddybe.!

mvh
Søren Peter




Avatar billede mmt Nybegynder
06. november 2001 - 08:57 #2
Hvis du bruger session som søren foreslår kan du bare teste på navnet passer hvis det gør det kan du sætte selected på din option. så er det den der står i feltet.

Mht. opdatering kan du hvis det er explore skrive til innerhtml. så kan du genskrive og tilføre til dokumentet uden at opdatere hvert sekund.

god fornøjelse
<select name=modtager class=form>
<option selected value=Alle>Alle</option>
    <%
    Set Conn = CreateObject(\"ADODB.Connection\")
    Conn.Open \"PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"chatten.mdb\")
    Sql = \"Select * from online order by navn\"
    Set rs = Conn.Execute(sql)
    Do until rs.eof
    %>
    <option value=<%=rs(\"navn\")%> \"her indsættes selected\" selected><%=rs(\"navn\")%></option>
    <%
    rs.movenext
    loop
    rs.close
    Set rs = nothing
    Conn.Close
    Set Conn = Nothing
    %>
</select>
Avatar billede ricokbh Nybegynder
07. november 2001 - 18:32 #3
Til mmt og sp

Jeg takker for jeres svar, men jeg kan ikke få det til at virke...... måske fordi jeg ikke har forstået det helt, eller fordi jeg ikke kan overskue hvor koden skal sættes ind....... håber i kan hjælpe mig lidt mere detaljeret.

hilsen Rico
Avatar billede ricokbh Nybegynder
18. januar 2002 - 16:25 #4
Hej mmt

du skrev noget om innerhtml hvis det er til explorer.... ang. opdatering af siden..... kan du ikke uddybe det mere, da jeg aldrig har arbejdet med innerhtml
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