der sql-code sieht so aus:
jedesmal, wenn die daten aus der datenbank gelesen wurde, wird die variable
session(loginZeit) auf now gesetzt. alles, was seit dem in die db
geschrieben wurde, ist als neu anzusehen...

das updaten des chat geschieht in einem versteckten frame...

hier nun der gesamte CODE:

<% @LANGUAGE=VBSCRIPT %>
<%  Response.Buffer = true
If (Session("loggedIn") <> "loggedIn") then
 Response.Clear
 response.redirect("chatroom_logout.asp")
else


function SQLString( stri )
   Dim neu
   Dim neu2

   if len(stri) = 0 or isnull(stri) then
      SQLString = "NULL"
      exit function
   end if


   neu = replace( stri, """", "\""" )

   SQLString = neu
end function

 Response.Expires=0
 Response.AddHeader "Pragma","no-cache"
 Response.AddHeader "cache-control", "no-store"
 Response.Buffer = true



 user   = Session("name")
 logintime = Session("loginZeit")
 'DateAdd("s", -1, Session("loginZeit"))
 empfaenger  = "alle"

 newdate = month(logintime) & "/" & day(logintime) & "/" & year(logintime) &
" " & hour(logintime) & ":" & minute(logintime)& ":" & second(logintime)

 set conn=Server.CreateObject("adodb.connection")
 cnpath="DBQ=" & server.mappath("../cgi-bin/chat.mdb")
 conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & cnpath

 sql = "SELECT * FROM chatdialog WHERE (sender = '"&user&"' OR (empfaenger =
'"&empfaenger&"' OR empfaenger = '"&user&"')) AND datum >= #" & newdate & "#
ORDER BY datum DESC"
 set RS = conn.Execute(sql)

 sql = "SELECT * FROM loggedIn ORDER BY name"
 set RSLoggedIn = conn.Execute(sql)

' Ueberpruefen, ob Admin eingeloggt ist
 sql = "SELECT * FROM admin"
 set RS4 = conn.Execute(sql)

 if(NOT rs4.EOF) then
  Session("AdminOn") = true
 else
  Session("AdminOn") = false
 end if

 RS4.close

if (Session("FramesLoaded")>=4) then

 Session("loginZeit") = now

end if

%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
<!--

function update()
{
 top.ChatRoomFrame.chatFrame.document.write("<font face=\"Tahoma\"
size=2>");
 top.ChatRoomFrame.chatFrame.document.write("<%
if(NOT rs.EOF) then

do while (NOT rs.EOF)
 inhalt = rs.fields.item("inhalt")
 output = output&"<BR>"&rs.fields.item("sender")&"(an:
"&rs.fields.item("empfaenger")&"): "&SQLString(inhalt)

rs.movenext
loop
rs.close
response.write(output)

end if
%>");
 top.ChatRoomFrame.chatFrame.document.write("</font>");


while(top.ChatRoomFrame.howisinFrame.document.getElementsByName("chatters")[
0].length)

  {
    d =
top.ChatRoomFrame.howisinFrame.document.getElementsByName("chatters")[0].len
gth - 1;

top.ChatRoomFrame.howisinFrame.document.getElementsByName("chatters")[0].rem
ove(d);
  }

<% do while (NOT RSloggedIn.EOF) %>

 var position =
top.ChatRoomFrame.howisinFrame.document.getElementsByName("chatters")[0].len
gth;

 var Eintrag  =
top.ChatRoomFrame.howisinFrame.document.createElement("option");

 Eintrag.text  = "<% = RSloggedIn.fields.item("name") %>";
 Eintrag.value = "<% = RSloggedIn.fields.item("name") %>";


top.ChatRoomFrame.howisinFrame.document.getElementsByName("chatters")[0].add
(Eintrag,position);

<%
  RSloggedIn.moveNext
  loop
%>

}
//-->
</script>

</head>

<body bgcolor="#FF9900" onload="<% if (Session("FramesLoaded")>=4) then
%>javascript:update();<% end if
%>window.setInterval('window.location.reload()',5000)">
<div align="right">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td width="59%"><font face="Arial, Helvetica, sans-serif"><b><font
color="#3366FF"><i>JUNGE
        KUECHE CHAT</i></font></b></font></td>
      <td width="41%">
        <div align="right"><font face="Tahoma" size="2"><b><font
color="#3366FF" face="Arial, Helvetica, sans-serif">Uwe
          Zimmer ist zur Zeit:<%if(Session("AdminOn")) then %> online.<%
else %>
          offline.<%end if%></font></b></font></div>
      </td>
    </tr>
  </table>
  </div>
</body>
</html>
<% end if %>



----- Original Message -----
From: "Claudius Ceteras" <[EMAIL PROTECTED]>
To: "AspGerman Kaffeehaus" <[EMAIL PROTECTED]>
Sent: Thursday, August 29, 2002 2:23 PM
Subject: [aspdecoffeehouse] RE: doppelte ausgabe...


Du hast nicht Dein SQL gepostet... Woher merkst Du was f�r den
jeweiligen Chatter neu ist?
Wieso definierst Du eine Funktion und schreibst den update-code nicht
direkt in den script-block?
Wo wird diese funktion aufgerufen? Kann es sein, dass die alte funktion
aufgerufen wird, falls die neue noch nicht ganz da ist beim aufruf?

Claudius

>
> ich habe einen chat programmiert, der alle 5 sekunden aus
> einer datenbank
> den dialog ausliest und die neusten eintr�ge mit
> document.write in eine html
> seite schreibt.
> allerdings passiert es ab und zu- und deswegen kann ich es
> mir auch nicht
> erkl�ren, dass einige datens�tze zweimal geschrieben werden.
> ich habe mir mal die datenbank runtergeladen  und dort sind
> die eintr�ge nur
> einmal vorhanden.
> es muss also beim auslesen geschehen...
> hat jemand eine idee ??? code ist folgender:
>
> <script language="JavaScript">
> <!--
>
> function update()
> {
>  top.ChatRoomFrame.chatFrame.document.write("<font face=\"Tahoma\"
> size=2>");
>  top.ChatRoomFrame.chatFrame.document.write("<%
> if(NOT rs.EOF) then
>
> do while (NOT rs.EOF)
>  inhalt = rs.fields.item("inhalt")
>  output = output&"<BR>"&rs.fields.item("sender")&"(an:
> "&rs.fields.item("empfaenger")&"): "&SQLString(inhalt)
>
> rs.movenext
> loop
> rs.close
> response.write(output)
>
> end if
> %>");
>  top.ChatRoomFrame.chatFrame.document.write("</font>");
>


| [aspdecoffeehouse] als [EMAIL PROTECTED] subscribed
| http://www.aspgerman.com/archiv/aspdecoffeehouse/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdecoffeehouse.asp



| [aspdecoffeehouse] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspdecoffeehouse/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdecoffeehouse.asp

Antwort per Email an