07. august 2001 - 12:22Der er
34 kommentarer og 1 løsning
Popup ved update!
Hejsa
Jeg er ved at lave et website som bruges som active desktop i hele firmaet (intranet)!
Man kan poste beskeder som alle kan se, men man ser jo ikke beskeden med det samme!
Det jeg gerne vil er, at når sitet refresher (hvert 10. minut) tjekkes der ned i tabellen om der er nye beskeder siden der blev tjekket sidste gang! Hvis der er det skal der komme en lille popup på brugernes skærm der fortæller at der er en ny besked på Intranettet, som de så kan tjekke!
Der er ikke noget med at man logger ind på intranettet!
Det er lidt tricky, men jeg håber der er nogen der kan hjælpe mig!
Så meget er jeg godt klar over, men hvordan laver jeg det rent kodemæssigt!!!???
Det er iøvrigt når min refresh blir\' triggered at der skal tjekkes.....det vil sige at det sker samtidig på alle brugeres skærme, da der bliver taget udgangspunkt i server-tiden!!!
du tester for om der er nye beskeder. Hvis ja, så redirect til din activedesktop.asp?mode=newmsg
på activedesktop.asp: hvis mode = newmsg så skriv noget javascript... mit opkast <script> function popski() { <% If mode=newmsg then Response.write(\"window.alert(\'Ny beskodes\')\") end if %> } </script> popski()
Det sker er at der hvert 10. minut automatisk opdateres på samtlige brugeres skærme!
Brugeren KAN selv gøre det ved at klikke på et flag, men behøver ikke gøre det da det jo sker hvert 10. minut!
Det der så skal ske er, at der tjekkes på id\'et på den øverste post i tabellen. Hvis id\'et er det samme som sidste gang (for 10 minutter siden) skal der ikke komme en popup, men er det et nyt id skal der komme en popup, med beskeden \"Der er nye beskeder i Intranet Info!\".
Det springende punkt er for mig at se hvordan man får ASP\'en til at huske det id der blev tjekket på sidste gang og sammenligne med det id der bliver tjekket på nu!
Måske jeg skulle lave en Session(Id) = rs(\"Id\"), hvor rs er defineret som den sidste nye post i db\'en??? Det burde da kunne gemme det sidste id til brug for en sammenligning!
jeg ville gøre det med et falg i tabellen. \'er der nye beskeder? sql = \"Select id from beskedtabel where Nybesked=\'\"&x&\"\' \" set rs = conn.execute(sql)
if not isempty(rs(\"id\")) then sql=update beskedtabel set nybesked=null where id = & \" rs(\"id\") conn.execute(sql) response.redirect \"aktivsektop.asp?mode=newmsg\" response.end end if
\'\'\'der redirectes kun hvis rs(\"id\") ikke er tom
Du kan gøre sådan at hvert ti minut opdateres skærmen, fra han har logged in (altså ik på alle skærme) - var det en mulighed - hvis ja, går du som oven over altså laver en Ja/nej boks i din db og hvis der er nogle mails hvor der ikke er krydset af så \"udskriver\" du din besked/popup vindue.
Ok, Lav en session når han åbner siden/starter computeren - nåede alla session(\"tid_start\")=time() - derefter skal du selfølgelig opdatere din session, når han har fået tjekket sin post.
Derefter kan du leje med noget datediff eller dateadd og nogle if sætninger så den efter hvert tiende minut checker det.
Du kan også lave det med noget javascript hvor du henter din ASP session og derefter går det samme bare med javascript.
Tjah - kan da lige poste det jeg har lavet indtil nu:
1: Oprettelse af ny post danner et nyt id med default-værdien \'Ja\' i feltet \"Ny_post\" og opdaterer samtidig den sidste post i feltet \"Ny_post\" til værdien \'Nej\'
2: Ved refresh af siden løber den nu et script igennem hvor sidste nye post opdateres i feltet \"Ny_post\" til værdien \'Nej\'. Dette skal forhindre at popup\'en kommer hver gang der refreshes selv om der ikke er postet nyt siden sidste refresh. Herefter opretter jeg et nyt recordset der tjekker om der er flere poster hvor feltet \"Ny_post\" har værdien \'Ja\'. Hvis dette er tilfældet skal popup\'en fyres af, ellers skal der bare redirectes til oversigten.
Konklusion: Oprettelse af nye poster fungerer fint med insert af ny post og update af den gamle. Ved refresh af sitet løber den også mit script igennem, men om den fyrer en popup af har jeg ikke kunnet konstatere endnu!
i forlængelse af et af mine 1. posts, er her lidt pænere kode til popuppen.
Det virker hos mig - på mine active desktop :-)
<% \' skal udskiftes med en redirect var mode = \"ja\" %>
<script> function poppedreng() { <% If mode=\"ja\" then Response.write(\"window.alert(\'Værdien var sand\')\") Else Response.write(\"window.alert(\'Værdien var falsk\')\") End if %> } </script> <HTML> <HEAD> </HEAD> <BODY> <script> poppedreng() </script>
Set Connect = Server.CreateObject(\"ADODB.Connection\") Connect.Open \"sb_budget\", \"scanbox_admin\", \"scanboxadm\"
Set rs = Server.CreateObject(\"ADODB.Recordset\") rs.Open \"SELECT * FROM Scan_info WHERE ROWNUM = 1 AND Dato=\'\"&date&\"\' ORDER BY Id DESC\", Connect, 1, 3
If (rs.BOF OR rs.EOF) Then Response.Redirect(\"intranet_dk.asp\") Else id = rs(\"Id\") End if
old_id = id - 1
sql = \"UPDATE Scan_info SET Ny_post=\'Nej\' WHERE Id=\"&old_id Connect.Execute(sql) %> <script> function poppedreng(){ <% Set rs1 = Server.CreateObject(\"ADODB.Recordset\") rs1.Open \"SELECT * FROM Scan_info WHERE Ny_post=\'Ja\'\", Connect, 1, 3
If (rs1.BOF or rs1.EOF) Then Response.Redirect(\"intranet_dk.asp\") End if
If rs1(\"Ny_post\") = \"Ja\" Then Response.Write(\"window.alert(\'Der er nye beskeder på Intranet Info\')>\") Else response.redirect(\"intranet_dk.asp\") End if %> } </script> <html> <head> <title></title> </head> <body> <script> poppedreng() </script> </body> </html>
Intet har fungeret, men I skal have tak for hjælpen!
Synes godt om
Ny brugerNybegynder
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.