السلام عليكم
أريد عمل كود يظهر لي عدد القراء لصفحة ما. يعني (عدد الذين فتحوا هذه الصفحة)
هل ممكن ذلك
السلام عليكم
أريد عمل كود يظهر لي عدد القراء لصفحة ما. يعني (عدد الذين فتحوا هذه الصفحة)
هل ممكن ذلك
الموضوع ممكن
بس انت لازم تحدد :
- هل نفس الشخص اذا زار الصفحة مرة اخرى تحسب له عدة اخرى
- أين سيتم تخزين قيمة العداد : قاعدة بيانات , مصدر بيانات آخر ...
وسيتم الرد عليك ان شاء الله
أشكرك على الرد السريع
ـ أنا أريد أي شخص يزور الصفحة تحسب له زيارة ، حتى ولو حدث الصفحة فتكون قراءة أخرى.
ـ يتم تخزين قيمة العداد في قاعدة بيانات sql
ممتاز ...
معناها هلأ شو منساوي :
رح افترض انو عندي جدلا جدول يحسب كم عدد الزيارات لهذه الصفحة يوميا وليكن counter...
طيب
هلأ الجدول بنيتو الأساسية هي:
visit_date:Datetime(Default Value=GetDate()). visit_ip:nvarchar(50).
هلأ عند حدث تحميل الصفحة نضع الكود التالي:
protected void Page_Load(object sender, EventArgs e)
{
//Adding one to the counter
SqlConnection conn = new SqlConnection("Connection String");
SqlCommand cmd = new SqlCommand(conn, "INSERT INTO counter (visit_ip) values(" + Request.UserHostAddress + ")");
try
{
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
catch(Exception EE)
{
//do something to handle this error
conn.Close();
}
}وهيك منكود دخلنا سجل لهذه الصفحة
هلأ اذا في أكتر من صفحة منعتبر انو في معرف خاص لكل صفحة ومندخل هالمعرف في نفس السجل(باسم page_id) مشان الفلترة
هلأ صار كل شي بسيط وسهل
شوف ما أحلى استخدام عداد الزوار:
//Getting the count
int i=0;
SqlConnection conn = new SqlConnection("Connection String");
SqlCommand cmd = new SqlCommand(conn, "SELECT Count(*) FROM counter");
try
{
conn.Open();
i=int.Parse(cmd.ExecuteScalar());
conn.Close();
}
catch(Exception EE)
{
//do something to handle this error
conn.Close();
}
//Here you can use the i variable in your code easilyان شاء الله تكون الفكرة وصلت
تم تعديل هذه المشاركة بواسطة Arwany في 19 يونيو 2007 في 15:34
معليش خوي في شيء أنا ما فهمته .. أليس من المفترض أن يكون عمل update بدلا من insert لأن عامل صفحة واحدة ثابتة تظهر فيها جميع المقالات عن طريق الباراميتر ، فمثلا مقالة " أ " لو زاراها اليوم 2 وغداً 2 فإنني أعمل تحديث بحيث يكون المجموع 4
هذا اللي متصوره .. بس مش عارف أعمل له كود لأني أريد أربط ذلك بالباراميتر وما عرفت
يمكن الطريقة التي ذكرتها هي الصح .. لكن ما مشت معي .. انتظر ردك
تم تعديل هذه المشاركة بواسطة فهـ1ـود في 19 يونيو 2007 في 16:51
على كل حال هادا مجرد سجل لحفظ عناوين الأجهزة اللي زارت موقعك
انت شوف شو بدك تخزن فيه وخزن فيه ما في مشكلة
بس أنا عملتو بيخزن عناوين IP للأجهزة
ليك هادا الكود التالي بيجبلك عناوين ال IP للأجهزة دوما
string ip;
ip=Request.ServerVariables("HTTP_X_FORWARDED_FOR");
if(ip==string.Empty)
{
ip=Request.ServerVariables("REMOTE_ADDR");
}انت استبدلو ووقتها رح تشوف العنوان
تم تعديل هذه المشاركة بواسطة Arwany في 19 يونيو 2007 في 16:51
ارجو قراءة الرد السابق .. فقد قمت بتعديله
ما شاء الله عليك .. رد سريع
تم تعديل هذه المشاركة بواسطة فهـ1ـود في 19 يونيو 2007 في 17:31
لا ليس Update
نحن الغرض من ادخال سجل جديد هوي عمل احصائية نظامية لطلب الصفحة وفي هذه الحالة يجب ادخال سجل جديد لكل طلب
لأنو بالنهاية نحن عم نحسب كم عدد السجلات المدخلة وعلى هالأساس منشوف عدد الزوار
هلأ اذا بدك شي أحلى ممكن تخلي (Admin) مثلا يشوف نفس الاستعلام بس بدل ما يكون مجموع السجلات ... يكون شي تاني
يكون مجموع السجلات (Group by ip)يعني كل واحد كم مرة فتح الصفحة
معليش خوي Arwany أرجو أن تتحملني شوي
أنا قاعد كم ساعة أطبق اللي قلت لي وما مشت معي.
ممكن إذا ما عليك أمر تعطيني مثال يوضح كيف يمكن حساب عدد المشاهدات لكل صفحة، فلو عندي عشرات المقالات ـ طبعا أنا جاعل لها صفحة واحدة ـ أريد عدد المشاهدات لك مقال.
أعذرني أعيد كل شوي وأظنك فاهم قصدي من أول بس المشكلة ما استوعبت الكلام اللي قلت .. ممكن تبسيط شوي.. والأفضل لو فيه مثال يوضح ذلك .. والله يرضى عليك
طيب انتظر شي ربع ساعة وبحملك مثال مع قاعدة بيانات
ولا يهمك
الله يسعدك Arwany
هنا المثال اللي وعدتك فيه
آسف انشغلت شوي فأكل أكتر من ربع ساعة
هلأ ليك :
أنا مستخدم كتير شغلات يمكن تلاقيها جديدة عليك ويمكن تكون معروفة عندك متل Databind (شو بحبو)
وكمان استدعاء تابع ستاتيكي من داخل كود Markup
اذا في أي غموض قلي
في المثال 3 صفحات صفحتين اسمهم : Page.aspx و Other.aspx وهدول بس تفتحهم كل وحدة بتفرجيك كم عدد الزيارات
وفي صفحة تالتة (انت عريف اسمها لحالك) مشان الاحصائيات
تم تعديل هذه المشاركة بواسطة Arwany في 20 يونيو 2007 في 12:05
الله يعطيك العافية على هذا المثال الرائع .. إلا إنه رفض يشتغل معي ويعطني هذه العبارة
Server Error in '/Counter' Application.
An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
آسف كتير كتير
هلأ في ملف الاعدادات بس استبدل السطر التالي :
<add name="dbs" connectionString="Data Source=.\Ammar;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />
بالسطر التالي:
<add name="dbs" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />
بعتذر كتير بس أنا منزل SQL Server بغير Instance Name الافتراضي الخاص فيها
هادا هوي الخطأ
آسف مرة تانية
معليش عندي استفسار بسيط:
انت كتبت هذا الكود في صفحة Page
Count.Add(1, ip); Title = "Your IP address is:" + ip; CountV = Count.Get(1).ToString();
عندي استفسار حول رقم واحد كما في الكود: إذا كان عندي صفحة واحدة لا تتغير وإنما يتغير المحتوى الذي فيها وهو عبارة عن مقالات، كل مقال يكون في حقل titles في جدول Articles من قاعدة بيانات ، السؤال: اش اضع بدل رقم واحد ؟ لأنك واضع صفحتين لهما رقمين .. وهذا يختلف عما أريد .. أظن واضح استفساري.. ولك تحياتي
آآآآآآه لحظة
انت بدك تشوف الناس اللي قرؤو هالمقال ... بظن هيك ؟
طيب انت خزن هالرقم اللي بتجيبو بالغالب من QueryString بالكود التالي:
int.Parse(Request.QueryString["Article_Id"].ToString());
وحفاظ هالرقم في الجدول الأب في قاعدة البيانات وعميل Statistics على أساس هالرقم
بالضبط خوي .. الله يفتح عليك
عطني فرصة أحاول أجرب اللي قلت .. وإذا ما عرفت أو حدث إشكال ساخبرك . . وتحملني شوي .. أشكرك
ولا يهمك وأهلا وسهلا
والله يا أخي ما عرفت كيف .. خليك معي شوي:
أنا لدي جدول Articles وعندي حقل titles للمقالات وحقل pageVISIT لعدد الزيارات . تمام
في تصوري إني المفروض أعمل Update لأني مش عاوز أعمل جدول جديد لأضع فيه عدد الزوار..
المهم : هل من الممكن عمل ذلك .. وإذا كان ممكن .. فما هو الكود للتعديل .. ولك مني أجمل أحلى التحيات
طيب ولا يهمك
هلأ شوف ... الفكرة انو في كل سجل من سجلات الجدول Articles (اللي هنن مقالات) في حقل عداد (pageVISIT ) بقيمة افتراضية 0
برأيي الشخصي أنشئ (Stored Procedure) بتعطيه رقم المقال بيحدثلك هالحقل بزيادة قيمتو واحد
الطريقة انو نجيب هالرقم ونزيدو واحد ونرجعو لمحلو (بعملية تحديث)
هاي كل الفكرة اذا عندك مشكلة تقنية قلي مشان ساويلك اياها
يا اخوي الموضوع سهل ومانو معقد
يجب ان تستخدم الأحداث التالية
SessionStart ,ٍSessionend
وتضع عداد تزيد قيمته بمقدار واحد في الحدث start وتنقص قيمته بمقدار واحد في الحدث end
بس الأخ بدو يحسب عدد الزيارات مو الزيارات الحالية ...
يمكن توضحت الفكرة أكترعندك
اقتباسطيب ولا يهمكهلأ شوف ... الفكرة انو في كل سجل من سجلات الجدول Articles (اللي هنن مقالات) في حقل عداد (pageVISIT ) بقيمة افتراضية 0
برأيي الشخصي أنشئ (Stored Procedure) بتعطيه رقم المقال بيحدثلك هالحقل بزيادة قيمتو واحد
الطريقة انو نجيب هالرقم ونزيدو واحد ونرجعو لمحلو (بعملية تحديث)
هاي كل الفكرة اذا عندك مشكلة تقنية قلي مشان ساويلك اياها
نعم أظن هذا ما أريده بالضبط .. ولكن والله ما عرفت أسويها .. ممكن تسويها لي إذا ما عليك أمر
خلص خليلي اياها بس لبكرا لأنو ما عندي وقت اليوم
ان شاء الله بساويلك اياها بكرا ولا يهمك
خلاص يا الغالي .. بكرا أو بعده .. براحتك .. الله يوفقك
هذا الموضوع مغلق.