نمایش نتایج 1 تا 4 از 4

نام تاپیک: شمارنده ی کامل با 24 نوع خروجی متفاوت

  1. #1
    کاربر دائمی آواتار AliRezaPro
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    PE Header
    پست
    1,054

    شمارنده ی کامل با 24 نوع خروجی متفاوت

    سلام خدمت دوستان در برنامه نویس
    کلاسی نوشتم برای آمارگیری سایت که فکر میکنم کاملترین باشد. از این کلاس میتوانید 24 نوع خروجی دلخواه بر حسب نیازتون بگیرید . این کلاس دارای 10 تابع متفاوت فقط برای آمارگیری کلی سایت بدون هیچ محدودیتی است و 10 نوع تابع فقط بصورت آماراگیری یکتا است . 4 نوع بصورت کاملا کاستومایز شده است که هر نوع خروجی که بخواهید میتوانید بگیرید . در نوشتن این کلاس سعی شده تمامیه نیاز هایی که یک سایت میتواند داشته باشد رفع گردد. در این کلاس سعی شده موارد یهینگی رعایت گردد اما اینکه شاید هم هنور جای کار داشته باشد , لذا از دوستانی که استفاده میکنند خواهش میشود که مواردی که شاید بنده جا انداخته باشم , یا اینکه الگوریتمی بهتر برای یک مورد خواص به ذهنشون رسیده رو بیان کنند که این کلاس به شکلی بسیار کامل در بیاد.
    البته رو این کلاس برای وردپرس هم کا کردم که حدودا 40 نوع خروجی متفاوت میتوانید بگیرید . اما قعلا امکان ریلریز اون کلاس نیست . فعلا سعی بنده اینه که استاندارد سازی کنم تا بتونم اونو در سایت wordpress به ثبت برسونم . پس از ثبت حتما در تاپیکی دیگر اطلاع داده خواهد شد.
    نام تابع هایی که میتوانید از آنها بهره بگیرید :
    get_todaye()
    get_yest()
    get_week()
    get_twoWeek_ago()
    get_month()
    get_twoMonth_ago()
    get_year()
    get_twoYears_ago()
    get_statistics()
    get_all_visit()

    get_unique_todaye()
    get_unique_yest()
    get_unique_week()
    get_unique_twoWeek_ago()
    get_unique_month()
    get_unique_twoMonth_ago()
    get_unique_year()
    get_unique_twoYears_ago()
    get_unique_statistics()
    get_all_unique_visit()





    get_specificDay_visits($date)
    get_unique_specificDay_visits($date)
    get_specificDay_visits_to_now($date)
    get_unique_specificDay_visits_to_now($date)

    در صفحه ایی که می خواهید از این کلاس استفاده کنید باید حتما نام این تابع را فراخوانی کنید :
    increase_visited()

    کدهای اصلی:
    <?php

    class pageStatistic {
    public function __construct() {
    require_once 'bn_parsidate.php';
    require_once 'statCfg.php';
    $this -> make_date_visit();
    }

    //this array for save statistic and unique
    private $statistic = array("todaye" => 0, "yest" => 0, "week" => 0, "lweek" => 0, "month" => 0, "lmonth" => 0, "year" => 0, "lyear" => 0);
    private $Ustatistic = array("todaye" => 0, "yest" => 0, "week" => 0, "lweek" => 0, "month" => 0, "lmonth" => 0, "year" => 0, "lyear" => 0);
    //////////---****** This section for get a value !
    /////////----****** this function have a public modify for easy to use

    public function get_todaye() {// this function return todaye statistic and other function return yesterdaye and ...
    return $this -> statistic['todaye'];
    }

    public function get_yest() {
    return $this -> statistic['yest'];
    }

    public function get_week() {
    return $this -> statistic['week'];
    }

    public function get_twoWeek_ago() {
    return $this -> statistic['lweek'];
    }

    public function get_month() {
    return $this -> statistic['month'];
    }

    public function get_twoMonth_ago() {
    return $this -> statistic['lmonth'];
    }

    public function get_year() {
    return $this -> statistic['year'];
    }

    public function get_twoYears_ago() {
    return $this -> statistic['lyear'];
    }

    public function get_statistics() {
    return $this -> statistic;
    }

    public function get_all_visit() {// this function gives you all statistic
    $select = $this -> Get_statistic();
    $counter = 0;
    for ($i = 0; $num = $select -> fetch(PDO::FETCH_ASSOC); $i++) {
    $counter += $num['count'];
    }
    return $counter;
    }

    public function get_unique_todaye() {//this function gives you todaye unque statistic
    return $this -> Ustatistic['todaye'];
    }

    public function get_unique_yest() {
    return $this -> Ustatistic['yest'];
    }

    public function get_unique_week() {
    return $this -> Ustatistic['week'];
    }

    public function get_unique_twoWeek_ago() {
    return $this -> Ustatistic['lweek'];
    }

    public function get_unique_month() {
    return $this -> Ustatistic['month'];
    }

    public function get_unique_twoMonth_ago() {
    return $this -> Ustatistic['lmonth'];
    }

    public function get_unique_year() {
    return $this -> Ustatistic['year'];
    }

    public function get_unique_twoYears_ago() {
    return $this -> Ustatistic['lyear'];
    }

    public function get_unique_statistics() {
    return $this -> Ustatistic;
    }

    public function get_all_unique_visit() {//this function gives you all nnique visits
    $flag = $this -> connection();
    $select = $flag -> prepare("SELECT count(id) FROM ".DbName.".".UniqueTblName);
    $select -> execute();
    $count = $select -> fetch(PDO::FETCH_NUM);
    return $count[0];
    }

    //this 4 function Additional function to customize your statistication
    //in this function you can pass the date and get statistic of that day !
    /*
    *
    *
    */
    public function get_specificDay_visits($date) {// you can pass the date as argument for gets statistic for that date
    try {
    $d = str_replace('/', '', $date);
    $flag = $this -> connection();
    $select = $flag -> prepare("SELECT count FROM ".DbName.".".statisticTblName." where date='$d'");
    $select -> execute();
    $count = $select -> fetch(PDO::FETCH_NUM);
    return $count[0];
    } catch (exception $s) {
    exit("you have error " . $s -> getMessage());
    }

    }

    public function get_unique_specificDay_visits($date) {//you can pass the date as argument for gets all unique visits of that date
    try {
    $d = str_replace('/', '', $date);
    $flag = $this -> connection();
    $select = $flag -> prepare("SELECT sid FROM ".DbName.".".statisticTblName." where date='$d'");
    $select -> execute();
    $sid = $select -> fetch(PDO::FETCH_NUM);
    $counter = $this -> Get_unique_statistic($sid[0]);
    return $counter;
    } catch (exception $e) {
    exit("you have error " . $s -> getMessage());
    }
    }

    public function get_specificDay_visits_to_now($date) {//you pass argument (date) and thsi function gives you all visites of that date to now
    try {
    $now = $this -> ChengeNumToEng(bndate('ymd'));
    $d = str_replace('/', '', $date);
    $getData = $this -> Get_statistic();
    $count = 0;
    for ($i = 0; $row = $getData -> fetch(PDO::FETCH_ASSOC); $i++) {
    if (($d <= $row['date'])) {
    $count += $row['count'];
    }
    }
    return $count;
    } catch (exception $e) {
    exit("you have error " . $s -> getMessage());
    }
    }

    public function get_unique_specificDay_visits_to_now($date) {
    try {
    $d = str_replace('/', '', $date);
    $getData = $this -> Get_statistic();

    $counter = 0;
    for ($i = 0; $row = $getData -> fetch(PDO::FETCH_ASSOC); $i++) {

    if (($d <= $row['date'])) {
    // echo $sid[0]."/////".$this->Get_unique_statistic($sid[0])."//////".$d."/////".$row['date']."<br /.";

    $counter += $this -> Get_unique_statistic($row['sid']);
    }
    }
    return $counter;
    } catch (exception $e) {
    exit("you have error " . $s -> getMessage());
    }
    }

    //////////////////////////////////////////------connection-----/////////////////////////////////////////
    private function connection() {// this connection for connect to mysql databse
    try {
    $pdoCfg = array(PDO::ATTR_PERSISTENT => true, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'");
    $pdo = new PDO("mysql:host=".host.";dbname=".DbName.";charset =UTF-8", DBUser, DBPass, $pdoCfg);
    return $pdo;
    } catch (PDOException $e) {
    echo "Failed to get DB handle: " . $e -> getMessage() . "\n";
    exit ;
    }
    }

    /*
    * this function increase the visitirs
    *
    */
    public function increase_visited() {
    $ip = $this -> getIp();
    $date = $this -> ChengeNumToEng(bndate('ymd'));
    $flag = $this -> connection();
    $query = $flag -> prepare("select sid,count,date from ".DbName.".".statisticTblName." where date='$date'");
    $query -> execute(array($date));
    if ($query -> fetch(PDO::FETCH_NUM) > 0) {//if exists date of todaye in db so do it
    ////get count of today and increase that
    $query -> execute();
    $row = $query -> fetch(PDO::FETCH_ASSOC);
    $newcount = $row['count'] + 1;
    $sid = $row['sid'];
    ///update count and increase visited field
    $query = $flag -> prepare("UPDATE ".DbName.".".statisticTblName." SET `count`=? WHERE `date`='$date';");
    $query -> bindParam(1, $newcount);
    $query -> execute();
    /////////------for check the exists ip in db write this code------//////////////////////////////////////////
    $query = $flag -> prepare("select ip from ip_log where ip='$ip'");
    $query -> execute(array($ip));
    if (!$query -> fetch(PDO::FETCH_NUM) > 0) {
    $query = $flag -> prepare("INSERT INTO ".DbName.".".UniqueTblName." (`sid`, `ip`) VALUES (?, ?);");
    $query -> bindParam(1, $sid);
    $query -> bindParam(2, $ip);
    $query -> execute();
    }
    } else//if its not todaye so create the record and counter taht
    {
    $countNum = "1";
    // if todaye date not exists on the db so we put in db
    $query = $flag -> prepare("INSERT INTO ".DbName.".".statisticTblName." (`date`, `count`) VALUES (?, ?);");
    $query -> bindParam(1, $date);
    $query -> bindParam(2, $countNum);
    $query -> execute();

    $query = $flag -> prepare("select sid from ".DbName.".".statisticTblName." where date='$date'");
    $query -> execute();
    $sidRow = $query -> fetch(PDO::FETCH_BOTH);

    $query = $flag -> prepare("INSERT INTO ".DbName.".".UniqueTblName."(`sid`, `ip`) VALUES (?, ?);");
    $query -> bindParam(1, $sidRow[0]);
    $query -> bindParam(2, $ip);
    $query -> execute();
    }

    $flag = null;
    }

    /*
    *
    * this function makes the date and field the arraye as todaye and yest and ..
    */
    private function make_date_visit() {
    $pd = new bn_parsidate;
    $now = $this -> ChengeNumToEng(bndate('ymd'));
    $getStatistic = $this -> Get_statistic();
    for ($i = 0; $row = $getStatistic -> fetch(PDO::FETCH_ASSOC); $i++) {
    if ($now == $row['date']) {
    $this -> statistic['todaye'] = $row['count'];
    $this -> Ustatistic['todaye'] = $this -> Get_unique_statistic($row['sid']);
    }
    if (($pd -> persian_dateEN('ymd', strtotime('-1 day'))) == $row['date']) {
    $this -> statistic['yest'] = $row['count'];
    $this -> Ustatistic['yest'] = $this -> Get_unique_statistic($row['sid']);
    }
    if ($row['date'] >= $pd -> persian_dateEN('ymd', strtotime('-1 week')) && $row['date'] <= $pd -> persian_dateEN('ymd', strtotime('-1 day'))) {
    $this -> statistic['week'] += $row['count'];
    $this -> Ustatistic['week'] += $this -> Get_unique_statistic($row['sid']);
    }
    if ($row['date'] >= $pd -> persian_dateEN('ymd', strtotime('-2 week')) && $row['date'] <= ($pd -> persian_dateEN('ymd', strtotime('-1 week')))) {
    $this -> statistic['lweek'] += $row['count'];
    $this -> Ustatistic['lweek'] += $this -> Get_unique_statistic($row['sid']);
    }
    if ($row['date'] >= $pd -> persian_dateEN('ymd', strtotime('-1 month')) && $row['date'] <= $pd -> persian_dateEN('ymd', strtotime('-1 day'))) {
    $this -> statistic['month'] += $row['count'];
    $this -> Ustatistic['month'] += $this -> Get_unique_statistic($row['sid']);
    }
    if ($row['date'] >= $pd -> persian_dateEN('ymd', strtotime('-2 month')) && $row['date'] <= ($pd -> persian_dateEN('ymd', strtotime('-1 month')))) {
    $this -> statistic['lmonth'] += $row['count'];
    $this -> Ustatistic['lmonth'] += $this -> Get_unique_statistic($row['sid']);
    }
    if ($row['date'] >= $pd -> persian_dateEN('ymd', strtotime('-1 year')) && $row['date'] <= $pd -> persian_dateEN('ymd', strtotime('-1 day'))) {
    $this -> statistic['year'] += $row['count'];
    $this -> Ustatistic['year'] += $this -> Get_unique_statistic($row['sid']);
    }
    if ($row['date'] >= $pd -> persian_dateEN('ymd', strtotime('-2 year')) && $row['date'] <= $pd -> persian_dateEN('ymd', strtotime('-1 year'))) {
    $this -> statistic['lyear'] += $row['count'];
    $this -> Ustatistic['lyear'] += $this -> Get_unique_statistic($row['sid']);
    }
    }

    }

    //----------------------------------------------------------------------------------

    private function Get_statistic() {
    try {
    $flag = $this -> connection();
    $select = $flag -> prepare("SELECT sid,date,count FROM ".DbName.".".statisticTblName);
    $select -> execute();
    return $select;
    } catch (PDOException $e) {
    echo "Fail to catch visit from Dataase";
    }

    }

    private function Get_unique_statistic($sid) {
    $flag = $this -> connection();
    $select = $flag -> prepare("SELECT sid FROM ".DbName.".".UniqueTblName." where sid='$sid'");
    $select -> execute();
    $count = 0;
    for ($i = 0; $row = $select -> fetch(PDO::FETCH_NUM); $i++) {
    $count++;
    }
    return $count;
    }

    private function getIp() {

    $ip = $_SERVER['REMOTE_ADDR'];
    if ($ip) {
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    return $ip;
    }
    // There might not be any data
    return false;
    }

    private function ChengeNumToEng($num) {
    $persian_digits = array('۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹');
    $english_digits = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
    $myText = str_replace($persian_digits, $english_digits, $num);
    return $myText;
    }

    }
    ?>


    ساخت جداول :
    CREATE TABLE `static` (
    `sid` bigint(20) NOT NULL AUTO_INCREMENT,
    `date` varchar(10) COLLATE utf8_persian_ci DEFAULT NULL,
    `count` bigint(20) DEFAULT NULL,
    PRIMARY KEY (`sid`)
    ) ENGINE=InnoDB AUTO_INCREMENT=304 DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci;

    CREATE TABLE `ip_log` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT,
    `sid` bigint(20) DEFAULT NULL,
    `ip` varchar(15) DEFAULT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=utf8;


    فایل کانفیگ :
    <?php
    define('host', 'localhost');
    define('statisticTblName', 'static');
    define('UniqueTblName', 'ip_log');
    define('DbName', 'weblog');
    define('DBUser', 'root');
    define('DBPass', '');
    ?>



    نحوه ی استفاده :
    <?php
    require_once ('visit.php');
    $visit = new pageStatistic();
    $visit-> increase_visited();
    echo "<b>Start Common Visits ///////</b>"."<br />";
    echo "get_todaye() : " . $visit->get_todaye() . "<br />" . PHP_EOL;
    echo "get_yest() : " . $visit->get_yest() . "<br />";
    echo "get_week() : " . $visit->get_week() . "<br />";
    echo "get_twoWeek_ago : " . $visit->get_twoWeek_ago() . "<br />";
    echo "get_month() : " . $visit->get_month() . "<br />";
    echo "get_twoMonth_ago(): " . $visit->get_twoMonth_ago() . "<br />";
    echo "get_year() : " . $visit->get_year() . "<br />";
    echo "get_twoYears_ago() : " . $visit->get_twoYears_ago() . "<br />";
    echo "get_all_visit() : " .$visit->get_all_visit()."<br />";
    echo "get_specificDay_visits() :".$visit->get_specificDay_visits('92/05/15')."<br />";
    echo "<b>End Common Visits ///////</b> "."<br /><br />";
    echo "------------------------------------------------------------------------<br /><br />";
    echo "<b>All Unique Visits ... !</b>"."<br />";
    echo "get_unique_todaye() : " . $visit->get_unique_todaye() . "<br />" . PHP_EOL;
    echo "get_unique_yest() : " . $visit->get_unique_yest() . "<br />";
    echo "get_unique_week() : " . $visit->get_unique_week() . "<br />";
    echo "get_unique_twoWeek_ago() : " . $visit->get_unique_twoWeek_ago() . "<br />";
    echo "get_unique_month() : " . $visit->get_unique_month() . "<br />";
    echo "get_unique_twoMonth_ago(): " . $visit->get_unique_twoMonth_ago() . "<br />";
    echo "get_unique_year() : " . $visit->get_unique_year() . "<br />";
    echo "get_unique_twoYears_ago() : " . $visit->get_unique_twoYears_ago() . "<br />";
    echo "get_all_unique_visit() : " .$visit->get_all_unique_visit(). "<br />";
    echo "<b>End Unique Visits ///////</b>"."<br />";
    echo"/------------------------<br><br>";
    echo "<strong>Special Function</strong><br>";
    echo "get_specificDay_visits() : " .$visit->get_specificDay_visits('92/05/12'). "<br />";
    echo "get_unique_specificDay_visits() : " .$visit->get_unique_specificDay_visits('92/05/12'). "<br />";
    echo "get_specificDay_visits_to_now() : " .$visit->get_specificDay_visits_to_now('92/05/12'). "<br />";
    echo "get_unique_specificDay_visits_to_now() : " .$visit->get_unique_specificDay_visits_to_now('92/05/12'). "<br />";

    ?>

    کل فایلها بدون دیتابیس(با کدهای بالا جداول را بسازید)
    http://www.4shared.com/rar/SbNvsHKz/StatisticClass.html?

    از ضمیمه
    StatisticClass.rar
    آخرین ویرایش به وسیله AliRezaPro : جمعه 12 مهر 1392 در 01:56 صبح

  2. #2
    کاربر دائمی
    تاریخ عضویت
    تیر 1389
    محل زندگی
    اصفهان
    پست
    232

    نقل قول: شمارنده ی کامل با 24 نوع خروجی متفاوت

    یه کلاس برای کار با دیتابیس نوشتم که pdo ، تویه همین انجمنه ، اگه میخواین می تونین گسترشش بدین و ازش استفاده کنین ، در ضمن خیلی ممنون بابت کلاس خیلی خوبی که نوشتین .

  3. #3
    کاربر دائمی
    تاریخ عضویت
    آبان 1390
    محل زندگی
    http://reza.biz
    پست
    858

    نقل قول: شمارنده ی کامل با 24 نوع خروجی متفاوت

    فایل رو یه جا دیگه آپلود میکنید ؟
    ممنون

  4. #4
    کاربر دائمی آواتار AliRezaPro
    تاریخ عضویت
    شهریور 1386
    محل زندگی
    PE Header
    پست
    1,054

    نقل قول: شمارنده ی کامل با 24 نوع خروجی متفاوت

    نقل قول نوشته شده توسط rezaonline.net مشاهده تاپیک
    فایل رو یه جا دیگه آپلود میکنید ؟
    ممنون
    فایل رو تو پست اول ضمیمه کردم

تاپیک های مشابه

  1. سوال: نوع خروجی تابع به صورت داینامیک؟
    نوشته شده توسط shahab2005 در بخش C#‎‎
    پاسخ: 1
    آخرین پست: پنج شنبه 18 تیر 1388, 21:07 عصر
  2. سوال: دو نوع خروجی از یک تابع !!!!!؟؟؟؟
    نوشته شده توسط bermouda_admin در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: شنبه 29 فروردین 1388, 14:31 عصر
  3. کد ماشین تولید شده برای دو نوع شرط متفاوت !
    نوشته شده توسط Mahmood_M در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 5
    آخرین پست: یک شنبه 05 آبان 1387, 22:19 عصر
  4. ساخت یک متد که چند نوع خروجی داشته باشه
    نوشته شده توسط rezaei manesh در بخش VB.NET
    پاسخ: 4
    آخرین پست: دوشنبه 29 آبان 1385, 17:04 عصر
  5. راهنمای درباره نوع خروجی out_loookup
    نوشته شده توسط sajjad_sharp در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 1
    آخرین پست: سه شنبه 25 مهر 1385, 10:30 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •