Friday, January 9, 2009

ഹിറ്റ് കൌണ്ടര്‍ : hit counter

വെബ് സൈറ്റില്‍ എത്ര ആളുകള്‍ സന്ദര്‍ശനം നടത്തി , ഒരു പ്രത്യേക പേജ് എത്ര ആളുകള്‍ കണ്ടു എന്ന് അറിയുന്നതിനു വേണ്ടിയാണ് ഹിറ്റ് കൌണ്ടറുകള്‍ ഉപയോഗിക്കുന്നത് . ഇവിടെ മൂന്നു രീതികളിലാണ് ഹിറ്റ് കൌണ്ടറുകള്‍ നിര്‍മ്മിച്ചിരിക്കുന്നത്.(ഇതില്‍ ഒന്നാമത്തെ രീതിയ്ക്ക് ഒരു പോരായ്മയുണ്ട് .അതൊരു വലിയ പോരായ്‌മ തന്നെയാണ് )





1. Global.asax ഫയല്‍ ഉപയോഗിച്ച്


2. Xml ഉപയോഗിച്ച്


3. SQL ഉപയോഗിച്ച്





ഏത് പേജില്‍ , എവിടെയാണ് ഹിറ്റ് കൌണ്ടര്‍ കാണിക്കേണ്ടത് , അവിടെ lbl_counter എന്ന പേരില്‍ ഒരു ലേബല്‍ വയ്ക്കുക.





1. Global.asax ഫയല്‍ ഉപയോഗിച്ച്
Global.asax ഫയല്‍ ഉപയോഗിച്ച് ഹിറ്റ് കൌണ്ടര്‍ നിര്‍മ്മിച്ചാല്‍ സിസ്റ്റം (സെര്‍വ്വര്‍) റിസ്റ്റാര്‍ട്ട് ആയിക്കഴിഞ്ഞാല്‍ Global.asax ഫയലില്‍ കൊടുത്തിരിക്കുന്ന വേരിയബളിന്റെ വില ആയിരിക്കും ഹിറ്റ് കൌണ്ടര്‍ നമ്പര്‍ ആയി വീണ്ടും വരുന്നത്. കാരണം ..Code in the global.asax is compiled when the web application is built for the first time. എന്താണ് global.asax ??The global.asax file is used to add applicatuon level logic and processing. The global.asax file resides in the root directory of an ASP.Net application.At run time ,global.asax is parsed and compiled into a dynamically generated .Net framework class derived from the HttpApplication base class.





Global.asax ഫയലിന്റെ


Application_Start ഭാഗത്ത് Application.Add("count",0); എന്നെഴുതുക.


Session_Start ല്‍ Application["count"] = Convert.ToString(Convert.ToInt32(Application["count"])+1); എന്നും എഴുതുക. (ചിത്രം കാണുക)





ഫോമിന്റെ പേജ് ലോഡില്‍ താഴെക്കാണുന്ന കോഡ് എഴുതുക :

lbl_counter.Text = Application["count"].ToString();






2. Xml ഉപയോഗിച്ച് :

ആദ്യം counter.xml എന്ന പേരില്‍ ഒരു xml നിര്‍മ്മിക്കുക.(ചിത്രം നോക്കുക)

പേജ് ലോഡില്‍ താഴെക്കാ‍ണുന്ന കോഡ് എഴുതുക .

{

XmlDocument xmldoc = new XmlDocument();

xmldoc.Load(Server.MapPath("counter.xml"));

DataSet ds = new DataSet();

ds.ReadXml(Server.MapPath("counter.xml"));

lbl_counter.Text = ds.Tables[0].Rows[0].ItemArray[0].ToString();

XmlNode xnode = xmldoc.SelectSingleNode("//counter/number");

xnode.InnerText = Convert.ToString(Convert.ToInt32(lbl_counter.Text) + Convert.ToInt32(1));

xmldoc.Save(Server.MapPath("counter.xml"));

}

3. SQL ഉപയോഗിച്ച് ::

number എന്ന കോളം മാത്രമായി counter എന്ന ടേബിള്‍ ആദ്യം നിര്‍മ്മിക്കുക. (Column Name : number ; Data Type : int)

പേജ് ലോഡില്‍ താഴെക്കാ‍ണുന്ന കോഡ് എഴുതുക

{

SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=shibu;Integrated Security=True");

SqlDataAdapter ada = new SqlDataAdapter();

con.Open();

ada.SelectCommand = new SqlCommand("select number from counter", con); SqlDataReader sdr = ada.SelectCommand.ExecuteReader();
sdr.Read();

lbl_counter.Text= sdr.GetValue(0).ToString();

sdr.Close();

Int32 num = (Convert.ToInt32(lbl_counter.Text) + Convert.ToInt32(1));
//update the column

ada.SelectCommand = new SqlCommand("update counter set number=" + num + " where number=" + lbl_counter.Text + "", con);

ada.SelectCommand.ExecuteNonQuery();
con.Close();

}