a cold fusion counter ?

How to write a cold fusion counter script ?
LVL 1
tanc02Asked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

meverestCommented:
<cfset application.thispagecount = application.thispagecount+1>

<cfoutput>
Now this page has been accessed #application.pagecount# times!
</cfoutput>

make sure that you have application variable support enabled.
tanc02Author Commented:
How do I know whether my cold fusion can have
application variable support enabled.

Can you tell me how to set it step by step ?
I have Cold Fusion 4.5 eval version
tanc02Author Commented:
In PERL, I have to lock and unlock the counter
file. How about in Cold Fusion ?
Acronis True Image 2019 just released!

Create a reliable backup. Make sure you always have dependable copies of your data so you can restore your entire system or individual files.

meverestCommented:
from memory, it is enabled in the cfapplication tag.

check the cf docs, if you can't find it, remind me on monday and i will check for you.

cheers.
tanc02Author Commented:
Can you tell me how ? I couldn't find  the info thanks !
chadukaCommented:
There is a small counter solution that makes use of a number field in a database.

It's like you have your datasource, say an MS Access file, called "myDSN" in which you have a table called "counters" and a field called "myMainCounter", which is a number field.

Then you will do it like this:

<cfquery name="visitorCount" datasource="myDSN">
 select myMainCounter from counters
</cfquery>

Now to display this value, you will do it like this:

<cfoutput>
You are visitor #int(visitorCount.myMainCounter)#
</cfoutput>

Now you will have to increment this value, do like so:

<cfquery name="visitorCount" datasource="myDSN">
 update counters set myMainCounter = #IncrementValue(int(visitorCount.myMainCounter))#
</cfquery>
chadukaCommented:
Oooops!! The update query should be like this:

<cfquery name="updateVisitorCount" datasource="myDSN">
 update counters set myMainCounter = #IncrementValue(int(visitorCount.myMainCounter))#
</cfquery>

I had forgotten to change the name of the query! My apologies!

(the bad side of Ctrl-C/Ctrl-V!!) :))
Nathan Stanford SrSenior ProgrammerCommented:
If you can't get these to work and want a solution written for you I will do it.

Nathan Stanford
Mr. ColdFusion

meverestCommented:
check the docs for <cfapplication> for additional detail...

<CFAPPLICATION NAME="Name"
    CLIENTMANAGEMENT="Yes/No"
    CLIENTSTORAGE="Storage Type"
    SETCLIENTCOOKIES="Yes/No"
    SESSIONMANAGEMENT="Yes/No"
    SESSIONTIMEOUT=#CreateTimeSpan(days, hours,
      minutes, seconds)#
    APPLICATIONTIMEOUT=#CreateTimeSpan(days, hours,
      minutes, seconds)#>

the attribute you are interested in is:

APPLICATIONTIMEOUT
Optional. Enter the CreateTimeSpan function and the values you want in days, hours, minutes, and seconds, separated by commas to specify the lifespan of any application variables that are set. The default value is specified in the Variables page of the ColdFusion Administrator.

in CF administrator (usually http://127.0.0.1/CFIDE/Administrator/index.cfm) choose 'variables' from the menu and make sure application variables is checked.

for example:

<cfapplication name="MyApp" APPLICATIONTIMEOUT=#CreateTimeSpan(365, 0, 0, 0)#>

this will allow the application variable to remain static for 1 year with no activity.

cheers.



Nathan Stanford SrSenior ProgrammerCommented:
Are you still looking for an answer?  tanc02 if not award your points to one of the above???
tanc02Author Commented:
Adjusted points from 5 to 20
tanc02Author Commented:
nathans :

May I see you solution and can you tell me how to lock/unlock a file ?

Points increase to 20
samphiCommented:
Hi,

For unlock what ?
an access file ? (.lbd)
if yes, try :
#cfusion_dbconnections_flush()#

Phil
chadukaCommented:
.eh? wazzat, samphi?
tanc02Author Commented:
to lock mdb file
Nathan Stanford SrSenior ProgrammerCommented:
<!---
No need to tell it which page it is coming from it will take care of that for you.

Your Database Needs of you can change the names to fit your needs.

datasource: counter
Table: counter
Cols: PageName
      hits

Nathan Stanford
Mr. Coldfusion
Check Out my ColdFusion Tips Plus e-ZINE
http://www.nsnd.com/cftips
 --->

<cfset PageName = #cf_template_path#>
<cftransaction>

<cfquery name="CountHits" datasource="counter">
      SELECT * FROM counter
      WHERE PageName  = '#PageName#'
</cfquery>

<CFIF #CountHits.recordcount# is 0>
 <CFQUERY name="makePageName" datasource="counter">
  INSERT INTO counter (`PageName`, `hits`)
  VALUES ('#PageName#', 1)
</cfquery>
1
<CFELSE>
<cfoutput>
 #CountHits.hits#
</cfoutput>
<CFSET newhits = (CountHits.hits + 1) > 
 <CFQUERY name="updatehits" datasource="counter">
  UPDATE counter
  SET hits = #newhits#
  WHERE PageName = '#PageName#'
 </cfquery>
</CFIF>
</cftransaction>

chadukaCommented:
Ey, on that note Nathans -- I notice in your INSERT query:

<CFQUERY name="makePageName" datasource="counter">
  INSERT INTO counter (`PageName`, `hits`)
  VALUES ('#PageName#', 1)
</cfquery>

...you have backticks/backquotes in the table field names as in `PageName`. What do SQL specs. say regarding the use of these in INSERT/UPDATE queries? Doesn't this have any side effects elsewhere as in some DBMs?
Nathan Stanford SrSenior ProgrammerCommented:
Sorry, take out the Backticks... it was working for me so I forgot they were there.

Thanks for letting me know.

By the way I am planning to write a ColdFusion Tips Plus (javascript as well) book if anyone is interested email me and let me know at
nathan@nsnd.com

Nathan Stanford
Mr. ColdFusion
http://www.nsnd.com/cftips
Nathan Stanford SrSenior ProgrammerCommented:
You have the answer and I am posting this as an answer to get you to respond on the above choices we have given you.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Web Servers

From novice to tech pro — start learning today.