السلام عليكم
أريد أن أعمل إحصائية للموقع ومن محتوى هذة الإحصائية هو عدد الزوار السنوى للموقع
فكيف يمكن عمل ذلك ؟
السلام عليكم
أريد أن أعمل إحصائية للموقع ومن محتوى هذة الإحصائية هو عدد الزوار السنوى للموقع
فكيف يمكن عمل ذلك ؟
__________________
لا إله إلا الله محمد رسول الله
الأمر متعلق بالوقت ، و بالتالي عليك برمجة طريقة تحفظ بها الزيارات و الوقت
طبعا ليس من الجيد حفظ الزيارات جميعها ، لكن فقط (مثلا لا حصرا) أضف حقل معين لحفظ الوقت و آخر لحفظ آخر إحصاء ، و لا يتم تحديثهما حتى تمضي سنة ، طبعا التحقق عبر حقل الوقت ، و عند مرور سنة يتم تسجيل الوقت الجديد و كذا يتم تحديث قيمة الإحصاء كي يبدأ العد من جديد
فيكون مثل التالي :
2011 :
الزيارات 0
آخر قيمة محفوظة 0
الوقت 1295396124
زيارات هذه السنة : 0
2012 :
الزيارات 50500
آخر قيمة محفوظة 0
الوقت 1326932124
زيارات هذه السنة : 50500
2013 :
الزيارات 150200
آخر قيمة محفوظة 50500
الوقت 1358468000
زيارات هذه السنة : 99700
طريقة بسيطة و يمكنك كتابة افضل منها !!
أشكرك أخى العزيز rifizm على ردك
لكن أتمنى توضيح أكثر لان للاسف ما فهمت الشرح
__________________
لا إله إلا الله محمد رسول الله
يمكن ان تبرمج عداد زوار خاص بموقعك كما قصد اخي خالد
او تستعمل موقع يقدم خدمة العداد مع احصائيات مثل هذا
http://24counter.com/
او تستعمل خدمة google analytics لعمل هذا الامر(الافضل حسب رأيي)
-شكرًا للاخ assyrianPHP لتنبيهي لهذه الخاصية ، وللكود الذي ارسله لي
بالنسبة لاحصائيات جوجل يمكن ان تضع كود الاحصائيات في موقعك
ثم تستعلم عن المعلومات بواسطة ال api
وهذه صفحة يمكن ان تبني فيها الاستعلام خطوة بخطوة
http://code.google.com/apis/analytic...aExplorer.html
الموضوع كبير لذا اترك البحث لك
يمكن ان تعمل احصائيات يومية وشهرية وسنوية مستضافة لديك كالتالي:
تعمل جدول جديد اسمه viewcount
وتضع فيه الحقول التالية:
counter INT
start_date DATE
بحيث يكون الحقل الثاني فريد(UNIQUE)
اي انه لا يمكن تكراره ، وبالتالي يكون key كمان
تستعمل الاستعلام التالي:
وهذا الاستعلام يضيف حقل للشهر الحالي في الجدول ، ولكن اذا كان الحقل موجود يقوم بتحديث العدادكود PHP:
insert into viewcount (start_date,counter)values('$start_date',0) on
duplicate key update counter = counter+1
عن طريق التعليمة
on duplicate key update
كما ذكرت في الاعلى الحقل start_date هو key
وكما هو مذكور هنا، اذا تكرر الحقل المفتاحي نزيد العداد ب 1
on duplicate key update counter = counter+1
وعند العرض نقوم بعمل التالي:
كما ترى جمعنا الحقول لكل الشهور في سنة 2011كود PHP:
SELECT sum(counter) as yearcount FROM viewcount WHERE year(start_date)='2011'
وذلك عن طريق استعمال الدالتين:
sum
للجمع واستعملنا as yearcount
لإعادة تسمية الحقل
ثم استعملها الدالة year لاستخراج السنة من التاريخ الذي في قاعدة البيانات
هناك ايضًا دالة month يمكن ان تستعملها اذا اردت استخراج احصائيات شهر معين
عن طريق AND
يعني:
هذا الكود يقوم بتحديد الأول من الشهر الحالي كتاريخ البداية:كود PHP:
where month(start_date)='1' AND year(start_date)='2011'
لكي تدعم الاحصائيات اليوميةكود PHP:
$start_date = date("Y-m-1");
تستخدم
وتضع الدالة day في شرط الاستعلامكود PHP:
$start_date = date("Y-m-d");
هذا كود ال php
وهذا كود الجدولكود PHP:
<?php
mysql_pconnect("localhost","root","");
mysql_select_db("test");
$start_date = date("Y-m-1");
mysql_query("insert into viewcount (start_date,counter)values('$start_date',0) on duplicate key update counter = counter+1");
echo "2011 visitors count<br/>";
$data = mysql_fetch_assoc(mysql_query("SELECT sum(counter) as yearcount FROM viewcount WHERE year(start_date)='2011'"));
echo $data['yearcount'];
?>
كود PHP:
--
-- Table structure for table `viewcount`
--
CREATE TABLE IF NOT EXISTS `viewcount` (
`counter` int(11) NOT NULL,
`start_date` date NOT NULL,
UNIQUE KEY `start_date` (`start_date`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Dumping data for table `viewcount`
--
INSERT INTO `viewcount` (`counter`, `start_date`) VALUES
(19, '2011-01-01'),
(0, '2011-02-01');
التعديل الأخير تم بواسطة ahmad sadiq ; 19-01-2011 الساعة 05:51 PM
جزاك الله كل خير أخى أحمد شرح وافى ومتعوب فية
لو فرضت أنى عاوز أعمل الإحصائيات التالية :-
===================
عدد زوار اليوم :
عدد زوار الامس :
عدد زوار هذا الشهر:
عدد زوار الشهر السابق :
عدد زوار هذة السنة :
عدد زوار السنة السابقة :
==================
الكود هيكون كالتالى
كما نرى فى الكود أن الاستعلامات كثيرة فهل من طريقة لجعل الإستعلامات قليلة أم لابد أن تكون بالشكل السابقكود PHP:
$year = date('Y');
$month = date('m');
$day = date('d');
$start_date = date("Y-m-d");
mysql_query("insert into viewcount (start_date,counter)values('$start_date',0) on duplicate key update counter = counter+1");
$data = mysql_fetch_assoc(mysql_query("SELECT sum(counter) as daycount FROM viewcount WHERE day(start_date)='$day-1'"));
$yesterday = mysql_fetch_assoc(mysql_query("SELECT sum(counter) as yesterdaycount FROM viewcount WHERE day(start_date)='".(($day)-1)."'"));
$data2 = mysql_fetch_assoc(mysql_query("SELECT sum(counter) as monthcount FROM viewcount WHERE month(start_date)='$month'"));
$monthbefore = mysql_fetch_assoc(mysql_query("SELECT sum(counter) as monthbeforecount FROM viewcount WHERE month(start_date)='".(($month)-1)."'"));
$data3 = mysql_fetch_assoc(mysql_query("SELECT sum(counter) as yearcount FROM viewcount WHERE year(start_date)='$year'"));
$yearbefore = mysql_fetch_assoc(mysql_query("SELECT sum(counter) as yearbefore FROM viewcount WHERE year(start_date)='".(($year)-1)."'"));
echo "زوار اليوم : ".$data['daycount']."<br />";
echo "زوار أمس : ".$yesterday['yesterdaycount']."<br />";;
echo "زوار الشهر : ".$data2['monthcount']."<br />";
echo " زوار الشهر السابق : ".$monthbefore['monthbeforecount']."<br />";
echo "زوار السنة : ".$data3['yearcount']."<br />";
echo "زوار السنة السابقة : ".$yearbefore['yearbefore']."<br />";
وأيضا إذا كنا نريد أن تكون هذة الإحصائيات لعدد الزوار وليس الزيارات أى سنستخدم IP الزائر فهل ستكون أيضا بنفس الطريقة مع تعديل الكود لكى يتناسب مع الطريقة الجديد وهى حساب الزائر حسب الاى بى .
التعديل الأخير تم بواسطة أنا مسلم ; 20-01-2011 الساعة 08:18 PM
__________________
لا إله إلا الله محمد رسول الله
ما قاله اخي خالد صحيح
اذ ان احصائيات السنة السابقة\الشهر السابق لن تتغير ابدًا
لذا الافضل حفظها في ملف او في قاعدة البيانات
ايضًا طريقة الاستعلام خاطئة ففي الاستعلام عن الشهر السابق مثلا يجب ان تستعلم عن الشهر والسنة
وليس الشهر فقط، لأنه اذا استعملت السكربت ل3 سنوات مثلا سيكون 3 اشهر متشابهة
بالنسبة للإحصائيات الشهرية والسنوية
يمكنك عمل خانات في قاعدة البيانات لكل سنة مطلوبة
مثلا
status_2010
status_2011
status_2012
status_2013
status_2014
status_2015
وخانات أخرى للأشهر، مثل:
status_1
status_2
status_3
status_4
.
.
status_12
الآن لتحديث عدد الزيارات نسخدم طريقة بناء جملة الاستعلام بالشكل الذي نريده
كود PHP:
$m = intval( date('m') );
$y = date('Y');
$sql = 'UPDATE table SET status_'. $y .'=status_'. $y .'+1, status_'. $m .'=status_'. $m .'+1';
// لتجنب تكرار وزيادة عدد الزوار في الشهر نفسه للسنة القادمة نضيف الكود التالي
if( $m == 12 )
{
$sql .= ', status_1= 0 ';
}
else
{
$sql .= ', status_'.($m+1).'= 0 ';
}
else
التعديل الأخير تم بواسطة القائد ; 26-01-2011 الساعة 05:24 PM سبب آخر: تصحيح وتحسين الكود
__________________
الخدمات البرمجية
تعديلات برمجية - تطوير برمجيات جاهزة - صيانة قواعد بيانات
برمجة خاصة (الأولوية للأفكار الجديدة والخاصة)
المراسلة : http://it.rewaq.com
http://www.swalif.net/softs/swalif45/softs228926/
يمكن تستفيد منه
بالتوفيق