Avatar billede jtc Nybegynder
05. august 2005 - 11:59 Der er 32 kommentarer og
1 løsning

simpelt fejlscript

Hvad er der galt med følgende script som skulle se hvor mange der er på siden og skrive værdien i en tabel og derefter vise denne værdi??

Det burde være så simpelt men kan ikke finde fejlen

<script language="VBScript" runat="server">
Sub Application_OnStart
Application("BrugereOnline") = 0
End Sub

Sub Session_OnStart
Application("BrugereOnline") = Application("BrugereOnline") + 1
Session.timeout = 1
End Sub

Sub Session_OnEnd
Application("BrugereOnline") = Application("BrugereOnline") - 1
End Sub
</script>
<%
kim=Application("BrugereOnline")

Set database = Server.CreateObject ("ADODB.Connection")
database.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/db/brugere.mdb")

set personer=server.CreateObject("ADODB.Recordset")
personer.open "SELECT * FROM online WHERE id=1", database, 2, 2

personer("server1") = kim
personer.Update
%>
<%
strSQL = "SELECT * FROM [online] where id=1"
Set rs = database.Execute(strSQL)
response.write("-"&rs("server1"))
%>
Avatar billede busschou Praktikant
05. august 2005 - 12:04 #1
Jeg vil foreslå dig at læse min artikkel om global.asa
Avatar billede busschou Praktikant
05. august 2005 - 12:04 #2
hovsa :o)
http://www.eksperten.dk/artikler/752

Hvis du har alt det der i din global.asa så går det klart galt
Avatar billede busschou Praktikant
05. august 2005 - 12:06 #3
Hvis det er to forskellige sider, altså hvis det øverste <script> er din global.asa og resten er en seperat .asp fil så burde det vist virke
Avatar billede busschou Praktikant
05. august 2005 - 12:09 #4
Jeg kan ikke hitte ud af om du ønsker gøre det hele på een gang?
Hvis du ønsker at opdatere databasen i din global.asa, så skal du lægge din kode ind i en Sub og kalde denne fra din Session_OnStart og/eller Session_OnEnd afhængig af hvad du ønsker. Bemærk at server.mappath i givet tilfælde ikke kan benyttes i Session_OnEnd
--
Avatar billede jtc Nybegynder
05. august 2005 - 12:12 #5
det ligger bare på den side som jeg skal vise antallet af brugere på
Avatar billede jtc Nybegynder
05. august 2005 - 12:13 #6
hvor skal den global.asa fil i så fald ligge
Avatar billede jtc Nybegynder
05. august 2005 - 12:19 #7
hvis den skal ligge i roden hvordan kalder jeg så på den på den givne side
Avatar billede busschou Praktikant
05. august 2005 - 12:22 #8
ahh ok ser du
Så skal du lave en fil "global.asa" som du lægger i din rod! med følgende indhold
----
<script language="VBScript" runat="server">
Sub Application_OnStart
  Application("BrugereOnline") = 0
End Sub

Sub Session_OnStart
  Application("BrugereOnline") = Application("BrugereOnline") + 1
Session.timeout = 1
End Sub

Sub Session_OnEnd
  Application("BrugereOnline") = Application("BrugereOnline") - 1
End Sub
</script>
---
Du kan ikke kalde de metoder andre steder fra, de ligger fast i global.asa
Det de gør er at hver gang en bruger går ind på din side så tæller de en variabel op

På din asp side skal du så have det andet
----
<%
Set database = Server.CreateObject ("ADODB.Connection")
database.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/db/brugere.mdb")

set personer=server.CreateObject("ADODB.Recordset")
personer.open "SELECT * FROM online WHERE id=1", database, 2, 2

personer("server1") = Application("BrugereOnline")
personer.Update

strSQL = "SELECT * FROM [online] where id=1"
Set rs = database.Execute(strSQL)
response.write("-"&rs("server1"))
%>
Avatar billede busschou Praktikant
05. august 2005 - 12:25 #9
På alle dine asp sider vil du kunne benytte variablen Application("BrugereOnline") til at se hvor mange som er online
Dog skal du vide at hvis din Session.Timeout er fx 20min ja så går der 20min fra en bruger lukker sin browser til dennes session dør, og derved står vedkommende som online i 20min
Avatar billede jtc Nybegynder
05. august 2005 - 12:25 #10
ja okay det virkede

men meningen var fra starten at jeg skulle have et script der skulle vise antallet af besøgende på 4 domæner på en denne side http://test.stenhuset.dk/wm/index.asp
Avatar billede jtc Nybegynder
05. august 2005 - 12:28 #11
hvordan kan jeg gøre det
Avatar billede busschou Praktikant
05. august 2005 - 12:31 #12
Du kan lave en global.asa til hvert domæne, men man kan kun have een global.asa i hver
----
<script language="VBScript" runat="server">
Sub Application_OnStart
  Application("BrugereOnline") = 0
End Sub

Sub Session_OnStart
  Application("BrugereOnline") = Application("BrugereOnline") + 1
  Session.timeout = 1
  opdaterDB()
End Sub

Sub Session_OnEnd
  Application("BrugereOnline") = Application("BrugereOnline") - 1
  opdaterDB()
End Sub

Sub opdaterDB()
  Set database = Server.CreateObject ("ADODB.Connection")
  database.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="direktesti\db\brugere.mdb")

  set personer=server.CreateObject("ADODB.Recordset")
  personer.open "SELECT * FROM online WHERE id=1", database, 2, 2

  personer("server1") = Application("BrugereOnline")
  personer.Update
End Sub
</script>
---
Husk at du skal benytte den fulde sti til databasen!
På din side kan du så hente antallet ud af databasen
Avatar billede busschou Praktikant
05. august 2005 - 12:33 #13
Det er lidt tricky tror jeg som du ønsker
For hvis du har fire servere til et domæne eller hvordan?
For man kan kun have en global.asa pr domæne eller subdomæne
Du kan tælle op i hver af de fire global.asa´er for hvert domæne for sig
Men om du kan tilgå den samme database cross-domæne ved jeg ikke rigtig
Avatar billede jtc Nybegynder
05. august 2005 - 12:39 #14
jeg får følgende fejl
Microsoft VBScript compilation error '800a0409'

Unterminated string constant

/LM/W3SVC/96/root/global.asa, line 19

database.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="\db\brugere.mdb")
Avatar billede jtc Nybegynder
05. august 2005 - 12:40 #15
den direkte sti er vel fra roden eller hvad
Avatar billede busschou Praktikant
05. august 2005 - 12:41 #16
nope det er fra drevet, "d:\\web\dinside\wwwroot\db\osvosv"
Avatar billede busschou Praktikant
05. august 2005 - 12:41 #17
men der skal også tjek på " jeg tror det var mig som glemte at slette den
database.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=\db\brugere.mdb")
Avatar billede jtc Nybegynder
05. august 2005 - 12:45 #18
hænger du på lidt endnu
Avatar billede jtc Nybegynder
05. august 2005 - 12:48 #19
det fik jeg vist løst nu kommer følgende fejl


Active Server Pages error 'ASP 0137'

Invalid Global Script

/LM/W3SVC/96/root/global.asa, line 30

Script blocks must be one of the allowed Global.asa procedures. Script directives within <% ... %> are not allowed within the Global.asa file. The allowed procedure names are Application_OnStart, Application_OnEnd, Session_OnStart, or Session_OnEnd.
Avatar billede busschou Praktikant
05. august 2005 - 12:48 #20
ja ja jeg hænger på :o)
Det eneste jeg ikke forstår mig på det er om du har fire servere og fire domæner
Og hvordan du fra en hovedside vil kunne læse fra deres databaser, eller for så vidt lave en fælles database til dem
For mig bekendt er det ikke nemt at tilgå databaser på tværs af servere når det er access som ikke er en rigtig server ligesom mysql og mssql
Avatar billede busschou Praktikant
05. august 2005 - 12:50 #21
okey, så tillader din åbenbart ikke procedurer
Det gør min ellers hmm
Men det kan i alt fald løses sådan her
---
<script language="VBScript" runat="server">
Sub Application_OnStart
  Application("BrugereOnline") = 0
End Sub

Sub Session_OnStart
  Application("BrugereOnline") = Application("BrugereOnline") + 1
  Session.timeout = 1
  Set database = Server.CreateObject ("ADODB.Connection")
  database.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="direktesti\db\brugere.mdb")

  set personer=server.CreateObject("ADODB.Recordset")
  personer.open "SELECT * FROM online WHERE id=1", database, 2, 2

  personer("server1") = Application("BrugereOnline")
  personer.Update
End Sub

Sub Session_OnEnd
  Application("BrugereOnline") = Application("BrugereOnline") - 1
  Set database = Server.CreateObject ("ADODB.Connection")
  database.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="direktesti\db\brugere.mdb")

  set personer=server.CreateObject("ADODB.Recordset")
  personer.open "SELECT * FROM online WHERE id=1", database, 2, 2

  personer("server1") = Application("BrugereOnline")
  personer.Update
End Sub
</script>
---
omend det er dobbelt arbejde
Avatar billede jtc Nybegynder
05. august 2005 - 12:53 #22
nej det er sådan at online1.wwc2005.dk og online2.wwc2005.dk ligger på fysiske samme server men med 2 sites opsat i IIS og online3 og online4 ligger på samme fysiske server og igen opsat med 2 fysiske sites i IIS ...
Avatar billede jtc Nybegynder
05. august 2005 - 12:56 #23
nu har jeg følgende
---
<script language="VBScript" runat="server">
Sub Application_OnStart
  Application("BrugereOnline") = 0
End Sub

Sub Session_OnStart
  Application("BrugereOnline") = Application("BrugereOnline") + 1
  Session.timeout = 1
  opdaterDB()
End Sub

Sub Session_OnEnd
  Application("BrugereOnline") = Application("BrugereOnline") - 1
  opdaterDB()
End Sub

Sub opdaterDB()
  Set database = Server.CreateObject ("ADODB.Connection")
  database.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=e:\websites\test.stenhuset.dk\db\brugere.mdb"

  set personer=server.CreateObject("ADODB.Recordset")
  personer.open "SELECT * FROM online WHERE id=1", database, 2, 2

  personer("server1") = Application("BrugereOnline")
  personer.Update
End Sub
</script>
Avatar billede busschou Praktikant
05. august 2005 - 12:56 #24
ok så du har reelt fire domæner, derved skal du også benytte fire global.asa filer, en i hver rod i hvert domæne, for at tælle hver deres online brugere
Jeg har ikke forstand på hvad man kan når man selv har sin egen server.
Det er muligt du kan kommunikere imellem de to domæner som er på samme server?
Men at kommunikere fire domæner imellem over samme access database, den er svær
Avatar billede jtc Nybegynder
05. august 2005 - 12:57 #25
og får fejlen

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0xa60 Thread 0x9dc DBC 0x1721024 Jet'.

/LM/W3SVC/96/root/global.asa, line 19
Avatar billede jtc Nybegynder
05. august 2005 - 12:59 #26
Avatar billede busschou Praktikant
05. august 2005 - 12:59 #27
prøv rette det til
database.open "Data Source=e:\websites\test.stenhuset.dk\db\brugere.mdb                    ;Provider=Microsoft.Jet.OLEDB.4.0;"
Avatar billede jtc Nybegynder
05. august 2005 - 13:01 #28
jeg tror jeg fik det til at virke, men hænger du lige på lidt endnu så får jeg det lige testet på alle siderne
Avatar billede busschou Praktikant
05. august 2005 - 13:03 #29
jo da gerne
Det er ikke noget problem at få det vist på siden selv
Jeg er mest spændt på hvordan du får koblet de fire sider samme :o)
Avatar billede jtc Nybegynder
05. august 2005 - 13:10 #30
ja det er lige det
men tak
Avatar billede busschou Praktikant
05. august 2005 - 13:13 #31
ok råb højt hvis det er  :o)
Avatar billede jtc Nybegynder
05. august 2005 - 13:22 #32
tror snart der sker noget
Avatar billede jtc Nybegynder
12. december 2011 - 11:05 #33
test
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