Counter på sidan!
28 svar · 585 visningar · startad av cobraeyes
http://www.thecounter.com om du inte orkar göra en egen...
------------------
tl@beta.telenordia.se
http://go.insane.org
Grejen är inte den att jag inte orkar...det är så att jag inte riktigt kommit igång med programeringen. Men jag är i akut behov av ett "eget" script!
------------------
.:cobraeyes:.
Kolla då http://www.aspcode.com, där finns säkert koden om du vill göra den i asp, eller vad hade du tänkt dig?
------------------
tl@beta.telenordia.se
http://go.insane.org
Bilder får du göra eller om du vill ha mina som jag har på min sida så hojta till. Denna räknare stegar BARA första gången och sedan kan man "springa runt" utan att få en glädje räknare ;) Detta script är mitt så....Men varsågod om det är ngt sånt här du vill ha :)
<%
Dim dbCounterPath
Dim myConn
Dim SQLStmt
Dim SQLupd
Dim rsCounter
Dim totCountDigits
Dim CounterBgColor
Dim CounterBorderColor
Dim strPage
' Response.Write Server.MapPath("/katalog/katalog.mdb")
strPage = Request.ServerVariables("URL")
' cookie check
' om den finns eller ej
If Request.Cookies(strPage) = "" Then
Response.Cookies(strPage) = 1
Application.Lock
'Response.Write strPage & "<br>"
dbCounterPath = "DBQ=" & Server.MapPath("/katalog/katalog.mdb")
Set myConn = CreateObject("ADODB.Connection")
Set rsCounter = CreateObject("ADODB.Recordset")
myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & dbCounterPath
' New Page ?
SQLStmt = "SELECT fldCount FROM tblCount where Page='" & strPage & "'"
set rsCounter = myConn.Execute(SQLStmt)
'rsCounter.Open SQLStmt, myConn
if rsCounter.EOF then
rsCounter.Close
Set rsCounter = nothing
SQLStmt = "INSERT INTO tblCount (fldCount,Page) VALUES (0,'" & strPage & "');"
'SQLStmt = "INSERT INTO tblCount (fldCount,Page) VALUES (0,'NISSE');"
'Response.Write SQLStmt & "<br>"
myConn.Execute SQLStmt
else
rsCounter.Close
Set rsCounter = nothing
end if
' Get count and add 1
SQLStmt = "SELECT fldCount FROM tblCount where Page='" & strPage & "'"
set rsCounter = myConn.Execute(SQLStmt)
rsCounter.MoveFirst
count = Int(rsCounter("fldCount") + 1)
rsCounter.Close
Set rsCounter = nothing
' Update
SQLupd ="UPDATE tblCount SET fldCount = " & Count & " where Page='" & strPage & "'"
myConn.Execute (SQLupd)
myConn.Close
Set myConn = nothing
Application.UnLock
end if
sub WriteCounter
strPage = Request.ServerVariables("URL")
CounterBgColor = "#F6D9AC"
CounterBorderColor = "#666666"
totCountDigits = 5 ' så många siffror ska räknaren bestå av
dbCounterPath = "DBQ=" & Server.MapPath("/katalog/katalog.mdb")
'Response.Write dbCounterPath & "<br>"
'Response.Write strPage & "<br>"
' hämta uppgift om hur många besök som varit
Application.Lock
dbCounterPath = "DBQ=" & Server.MapPath("/katalog/katalog.mdb")
Set myConn = CreateObject("ADODB.Connection")
Set rsCounter = CreateObject("ADODB.Recordset")
myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & dbCounterPath
SQLStmt = "SELECT fldCount FROM tblCount where Page='" & strPage & "'"
'Response.Write SQLStmt & "<br>"
set rsCounter = myConn.Execute(SQLStmt)
'rsCounter.Open SQLStmt, myConn
Count = rsCounter("fldCount")
rsCounter.Close
Set rsCounter = nothing
myConn.Close
Set myConn = nothing
' hur många siffror ska räknaren bestå av
If Len(Count) < totCountDigits Then
Do Until Len(Count) = totCountDigits
Count = "0" & Count
Loop
End If
Application.UnLock
' Denna funktion ändrar text siffrorna till bild siffror
Count = Replace(Count,"0","<img src=/katalog/0.gif border=0>")
Count = Replace(Count,"1","<img src=/katalog/1.gif border=0>")
Count = Replace(Count,"2","<img src=/katalog/2.gif border=0>")
Count = Replace(Count,"3","<img src=/katalog/3.gif border=0>")
Count = Replace(Count,"4","<img src=/katalog/4.gif border=0>")
Count = Replace(Count,"5","<img src=/katalog/5.gif border=0>")
Count = Replace(Count,"6","<img src=/katalog/6.gif border=0>")
Count = Replace(Count,"7","<img src=/katalog/7.gif border=0>")
Count = Replace(Count,"8","<img src=/katalog/8.gif border=0>")
Count = Replace(Count,"9","<img src=/katalog/9.gif border=0>")
Response.Write "\<table border=0 cellspacing=0 cellpadding=0\>" & vbcrlf
Response.Write "\<tr bgcolor=#636363\>" & vbcrlf
Response.Write " \<td\>"
Response.Write " \<table border=0 cellspacing=1 cellpadding=0\>"
Response.Write " \<tr bgcolor=" & CounterBgColor & "\> "
Response.Write " \<td\>" & count & "\</td\>"
Response.Write " \</tr\>"
Response.Write " \</table\>"
Response.Write " \</td\>"
Response.Write " \</tr\>"
Response.Write "\</table\>"
end sub
%>
------------------
/Mvh Annelie( http://www.annelie.nu )
[Redigerat av Annelie den 23 maj 2000]
Annelie
Oj vilken lång kod för en räknare! :)
------------------
woodi
Mmm men storleken har ju ingen betydelse ;)
------------------
/Mvh Annelie( http://www.annelie.nu )
Mmm men storleken har ju ingen betydelse
så sant som det var sagt!
"It ain't the size that matters, it's the motion of the ocean"
------------------
.:cobraeyes:.
Flyttas till ASP.
Ohhhh vilken snygg räknare Arjeplog har då !! ;) Bra jobbat !
www.arjeplog.se
------------------
/Mvh Annelie( http://www.annelie.nu )
Jo.. den var ju jäklans fancy :D.
Fast det kan göras både bättre och snabbare och eftersom jag är den jag är så MÅSTE jag ju komma med ett inlägg ;)
För jag förstår inte riktigt varför du lagrar alla besökare i en databas (och varför du låser application objektet när du gör detta, är för mig helt obegripligt?!?!).
Varför kör du inte bara med application objektet istället. Och gör det hela mycket lättare. Samt sparar kod?
Okej. ISP:n KAN ju få för sig att starta om server någon gång (vilket gör så att min counter nollställs). Men det är inte hela världen. Alternativt så kan du ju ha så att den sparar dem i en databas när servern stängs av (i Application_OnEnd i global.asa)
Så här gör du ifall du har webhotel där global.asa funkar:
I global.asa
Sub Application_OnStart
dim counter
counter = 0
end sub
Sub Session_OnStart
application.lock
application("counter") = application("counter") + 1
session("counter") = application("counter")
application.unlock
end sub
Har du inte det, vilket de flesta gratis ISP:na inte har så lägger du bara detta på första sidan istället:
<%
if session("visit") = false then
application.lock
application("counter") = application("counter") + 1
session("counter") = application("counter")
session("visit") = true
application.unlock
end if
%>
Inte så mycekt skillnad alltså. :)
Sedan i din kod på sidan där countern ska vara:
<%
dim tmp,tmp2,tmp3,counter,i
counter = session("counter")
tmp = len(counter)
for i = 1 to tmp
tmp2 = left(counter,i)
tmp3 = right(tmp2,1)
response.write "<img src='bild"&tmp3&".gif' widht='5' height='10'>"
next
%>
Då får du döpa dina bilder till tex bild1.gif osv till 9 och en får heta bild0.gif då. :)
Jag har inte testat denna kod, utan skrev den alldeles nu. Men det borde funka. Så... sug på den!
Och jag skulle vilja säga, att storleken har betydelse. I asp sammanhang iallfall ;) fast då till det mindre!
Ändrade så att inte en användare läggs till ifall de laddar om sidan när man inte använder global.asa koden (men om de stänger browsern eller inte använder sidan på 20 min så läggs en besökare till på räknaren. Eftesom då gäller inte session objektet längre)
------------------
/Magnus aka Zaphod
www.designmodule.com.bi
[Redigerat av Zaphod den 23 maj 2000]
Zaphod,
om man nu inte kan använda sig av global.asa eller FSO ..... vad ska man då göra?
/PatrikB
Det har jag ju skrivit JUH! DOH! :D
Även om inte global.asa funkar, så funkar alltid (på alla ISP:er jag har testat) application och session objekten. Så använd bara det andra kodexemplet.
Varför skulle du använda FSO, skriva till textfil eller?
------------------
/Magnus aka Zaphod
www.designmodule.com.bi
Vilken tur att man kan göra på många olika sätt.....Att jag låst är ju för att fler ej skall "skriva" samtidigt
------------------
/Mvh Annelie( http://www.annelie.nu )
Ledsen om jag förstör några falska föhoppningar för dig nu men, application.lock och .unlock låser bara application objektet som funkar på samma sätt som session objektet. Bara det att sådant som lagras i applikation stannar kvar tills IIS eller webbservern stängs av. Vilket ju inte händer så ofta. Det kan diskuteras ifall man ska lagra saker där eller ej, eftersom en del människor verkar emot det av ett eller annat skäl (ofta samma människor som tycker att www.useit.com e en bra sida som har något att komma med ;)). Så Application har inte det minsta med ADO eller JET att göra (vilket ju är det du använder för att ansluta dig till databaserna <- vilket ju också är en onödig del av ditt script, vilket jag ju illustrerade).
Access databaser kan flera skriva till samtidigt också, så det är ingen risk där, vet inte exakt hur många. Men jag tror det handlade om ca: 10 st (vet inte riktigt var jag fått det ifrån dock så jag kan ha fel), inte så jäklans upphetsande iof. Men väl nog för de inte så stora siter. SQL databaser kan klara ännu mera tryck igen. Och är de som används till applikationer med stort tryck. Tex webbshoppar osv.
------------------
/Magnus aka Zaphod
www.designmodule.com.bi
Jag har ett script som läser och skriver till en vanlig text fil om någon är intreserad.
ZAPHOD; Nä det stämmer säkert det du skriver , men jag är nöjd med mitt script och det finns säker fler mer eller mindre viktiga rader där. MEN det fyller mina funktioner och önskemål och jag är stolt att ha gjort ett med tanke på att jag lärde mej första steget på asp trappan i Mars nu i år. Men men ,,,,Jag har i alla fall fått lära mej att det är därför jag har det där (det att låsa) Hursomhelst så gör dessa rader ingen skada och tar ej så mkt plats. Men tack ändå
------------------
/Mvh Annelie( http://www.annelie.nu )
Annelie,
Mycket fint skript men det gör mycket mer än vad en räknare behöver göra. Det där ser snarare ut som den gör en logg och massa annat.
Bästa sättet är att
1. Öppna en textfil
2. Läs in innehållet i en variabel
3. Lägg till en siffra på variabeln
4. Spara variabeln i en textfil
5. Skriv ut siffran.
Går att fixa på 6-7 rader.
Men din fungerar nog också bra ;)
------------------
/mvh Swey
Wadde Hadde Dudde Da
Programmera Php (snart)
swey@tjohoo.se
Det jag har är en admin sida till denna counter så jag snabbt kan kolla hur många besökare jag haft på de sidor jag har räknaren...men mkt ? Jo kanske.,..
------------------
/Mvh Annelie( http://www.annelie.nu )