Avatar billede ameq Nybegynder
27. maj 2002 - 20:35 Der er 15 kommentarer og
1 løsning

Buffer

Jeg tror jeg skal bruge en buffer men jeg har ikke helt styr på den...
mit problem er at jeg ahr en side der ud skriver et navn hvis de er "online" hvis de så forlader siden så bliver den sat til offline... eller no som der står i databasen.... men nolge gang bliver de ved med at blive udskrivet af lige vel og når man se i databasen jeg tror det er en buffer hvis ikke hvad så men hvis det er hvordan und går jeg det problem??? PLZ hjælp mig....
Avatar billede tmceu Praktikant
27. maj 2002 - 20:39 #1
Det skyldes måske at du kører med sessions, til at styre hvem der er online. Hvis en bruger så ikke eksplicit logger ud (session.abandon), bliver de hængende.

Du kan bruge Session_OnEnd i global.asa til at kompensere for dette, men vær opmærksom på, at den ikke er pålidelig på IIS4 - den kører efter sigende kun i ca. 95-97% af tilfældene.

Hvis det ikke er dette, må du forklare nærmere...
Avatar billede ameq Nybegynder
27. maj 2002 - 20:42 #2
jeg kører IIS5 og den bliver ikke læs fra session det er kun clienet jo.....

    strSQL = "select * from bruger where online = 'yes' and lev = 1 or lev = 2 order by username"
    set rs = Conn.Execute(strSQL)    
    If Rs.EOF Then %>
      <font size="2">&nbsp;Ingen HelpDesk Folk Online</font>
      <% else %>
      <%
    '''''''''''''''''
    ' loop brugeren '
    '''''''''''''''''
        do %>
      <img src="images/chat/chattext.gif" align="absmiddle" width="16" height="14"><a href="java script:void(0);"><font size="2" class="forumc" onClick="window.open('profilinfo.asp?id=<%=rs("id")%>&where=chat','','scrollbars=yes,width=600,height=322')"><%=rs("username")%></font></a><br>
      <%    rs.MoveNext
    Loop While Not rs.EOF
    end if
Avatar billede tmceu Praktikant
27. maj 2002 - 20:54 #3
Aha, jeg forstod ikke helt dit spørgsmål rigtigt så (håber at jeg har nu :-)

Hvis du i toppen af din kode tilføjer:

response.expires = -1

Bør siden ikke blive cached. Du skal dog være opmærksom på, at hvis der eks. er en proxy server mellem serveren og klienten, kan den risikere at overstyre dette. Måske skal du også trykke CTRL+F5 i browseren (IE) første gang, før det virker.
Avatar billede tmceu Praktikant
27. maj 2002 - 21:03 #4
I øvrigt skulle du nærmest være så sikker man kan blive på at siden ikke caches, hvis du tilføjer alle disse i toppen af koden:

Response.Expires = 60
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
Avatar billede ameq Nybegynder
27. maj 2002 - 21:52 #5
jeg skal bare sææte det der ind?

Response.Expires = 60
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
Avatar billede ameq Nybegynder
27. maj 2002 - 21:53 #6
aarr lort det virker satdig væk ikke =(
Avatar billede tmceu Praktikant
27. maj 2002 - 21:55 #7
Ja, indsæt det over alt andet på koden, da det modificerer HTTP headers. Men husk at der måske ligger en cached version på browseren allerede, så det kan være nødvendigt at trykke CTRL+F5
Avatar billede ameq Nybegynder
27. maj 2002 - 21:56 #8
modificerer HTTP headers.  ??
Avatar billede ameq Nybegynder
27. maj 2002 - 22:06 #9
jeg begynder at tror det er min SQL line
    strSQL = "select * from bruger where online = yes and lev = 1 or lev = 2 order by username"
    set rs = Conn.Execute(strSQL)
Avatar billede tmceu Praktikant
27. maj 2002 - 22:07 #10
Betragt blot HTTP headers som noget ekstra (kontrol) information, der sendes frem og tilbage mellem serveren og browseren.

Nedenstående vil eks. ikke virke, da der allerede er skrevet til browseren (<HTML><HEAD>), når du modificerer HTTP headers.

<HTML>
<HEAD>
<%
Response.Expires = 60
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
%>

Hvorimod dette vil virke:

<%
Response.Expires = 60
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
%>
<HTML>
<HEAD>
Avatar billede tmceu Praktikant
27. maj 2002 - 22:09 #11
Ja, du har ret. Det går galt i din OR. Begge disse burde virke:

strSQL = "select * from bruger where online = yes and lev = 1 or online = yes and lev = 2 order by username"

strSQL = "select * from bruger where online = yes and (lev = 1 or lev = 2) order by username"
Avatar billede tmceu Praktikant
27. maj 2002 - 22:21 #12
Du bør også kunne bruge denne:

strSQL = "select * from bruger where online = yes and lev in(1, 2) order by username"
Avatar billede ameq Nybegynder
27. maj 2002 - 22:21 #13
strSQL = "select * from bruger where online = yes and lev = 3 order by username"
    set rs = Conn.Execute(strSQL)

hvad med den her så ??
Avatar billede tmceu Praktikant
27. maj 2002 - 22:24 #14
Er det en Access database du bruger ? I så fald, er der vist noget med at ja/nej felter hedder true/false og -1/0.

Du kan altid teste dit SQL statement direkte i databasen, for at se om du får det ønskede resultat.
Avatar billede ameq Nybegynder
27. maj 2002 - 22:25 #15
yes eller det er text fælet og jeg ahr fixede det =) du manglede ' unden om yes så der bliver til 'yes'
Avatar billede tmceu Praktikant
27. maj 2002 - 22:28 #16
Det er ikke nemt at se datatypen herfra :-)

Men hvis det var fejlen, har du fået syntaks fejl hele tiden i dit SQL kald, med mindre du har brugt "On Error Resume Next" ???
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