بازديد ديروز امروز كل

وضعیت
موضوع بسته شده است.

RainDigital

Member
در اين قسمت به ساخت يك شمارنده ساده (Hit Counter) با استفاده از php و MySQL مي پردازيم.
قبل از هر چيز با كمك PhpMyAdmin جدولي با ساختار زير ايجاد كنيد:
کد:
 # Table structure for table `counter` 
# 

CREATE TABLE `counter` ( 
  `id` tinyint(4) NOT NULL default '1', 
  `total` bigint(20) unsigned NOT NULL default '0', 
  `yesterday` int(10) unsigned NOT NULL default '0', 
  `today` int(10) unsigned NOT NULL default '0', 
  `date` date default NULL 
) TYPE=MyISAM; 

# 
# Dumping data for table `counter` 
# 

INSERT INTO `counter` VALUES (1, 0, 0, 0, NOW());
اين جدول شامل يك فيلد مشخصه، سه فيلد براي شمارش بازديدها و يك فيلد براي تاريخ مي باشد.توجه داشته باشيد كه اين جدول، يك record بيشتر ندارد و عمليات بر روي جدول با Update كردن همين ركورد انجام مي شود. به عنوان پيش فرض مقادير صفر و همچنين تاريخ جاري را در اين ركورد ثبت مي كنيم.
حالا كه ساختار ذخيره داده ها را مشخص كرديم به نوشتن كد برنامه مي پردازيم:
کد:
//اطلاعات لازم براي اتصال به پايگاه داده 
$db_user="username"; 
$db_pass="password"; 
$db_name="MyDB"; 
//اتصال به پايگاه داده 
$con=mysql_connect('localhost',$db_user,$db_pass); 
mysql_select_db($db_name,$con);
اولين مرحله كار ، اتصال به پايگاه داده مي باشد.در كد بالا بايد اطلاعات مربوط به اتصال را به درستي وارد كنيد و الا اجراي برنامه در همين جا متوقف خواهد شد!
کد:
//دريافت نتايج از جدول 
$result=mysql_query("SELECT * FROM counter"); 
$row=mysql_fetch_array($result); 
$total=$row['total']; 
$yesterday=$row['yesterday']; 
$today=$row['today']; 
$date=$row['date']; 
list($year,$month,$day)=split('-',$date);
در اين مرحله اطلاعات قبلي ذخيره شده در پايگاه داده را بازيابي مي كنيم. تابع split رشته اي را به عنوان آرگومان دوم خود دريافت كرده و طبق آرگومان اول كه حاوي كاراكتر جداكننده مي باشد آن را تقسيم مي كند و نتيجه را در آرايه اي به ما برمي گرداند. دستورlist عناصر آرايه را به متغيرهاي ليست، نسبت مي دهد.
کد:
 $CurrentDate=date("Y-m-d"); //زمان جاري 
list($CurrentYear,$CurrentMonth,$CurrentDay)=split('-',$CurrentDate);
در اين قسمت با استفاده از تابع date زمان جاري را بدست مي آوريم.توجه داشته باشيد كه آرگومان اين تابع فرمت دريافت تاريخ را مشخص مي كند.
کد:
//تابع به روزرساني جدول 
function Update($today,$yesterday,$total,$date){ 
    mysql_query("UPDATE counter SET today='$today',yesterday='$yesterday',total='$total' ,date='$date' WHERE id=1"); 
}
تابع Update وظيفه به روزرساني جدول را بر عهده دارد.اين تابع ، مقادير فيلدها را بر اساس پارامترهاي دريافتي تنظيم مي كند.
کد:
 //مقايسه تاريخ جاري با تاريخ ذخيره شده در جدول و انجام محاسبات لازم 
$total++; 
if($CurrentYear==$year){ 
    if($CurrentMonth==$month){ 
        if($CurrentDay==$day){ 
            $today++; 
            Update($today,$yesterday,$total,$CurrentDate); 
        }else{ 
            if($CurrentDay==++$day){ 
                $yesterday=$today; 
                $today=1; 
                Update($today,$yesterday,$total,$CurrentDate);         
            }else{ 
                $yesterday=0; 
                $today=1; 
                Update($today,$yesterday,$total,$CurrentDate); 
            } 
        }     
    }else{ 
        if($CurrentMonth==++$month){ 
            $yesterday=$today; 
            $today=1; 
            Update($today,$yesterday,$total,$CurrentDate);                     
        }else{ 
            $yesterday=0; 
            $today=1; 
            Update($today,$yesterday,$total,$CurrentDate);         
        } 
    }     

} 
else{ 
    if($CurrentYear==++$year){ 
        $yesterday=$today; 
        $today=1; 
        Update($today,$yesterday,$total,$CurrentDate);             
    } 
    else{ 
    $yesterday=0; 
    $today=1; 
    Update($today,$yesterday,$total,$CurrentDate); 
    } 
}
هسته اصلي برنامه، قسمت بالا مي باشد.اين قسمت در واقع تمرين ساختارهاي شرطي تو در تو مي باشد. دستورات مقايسه اي زمان جاري را با زمان ذخيره شده قبلي مقايسه مي كنند و طبق آنها عمل شمارش را انجام مي دهند.سپس با استفاده از تابع Update عمل به روزرساني جدول صورت مي گيرد.
کد:
 //بازيابي مجدد اطلاعات از جدول 
$result=mysql_query("SELECT * FROM counter"); 
$row=mysql_fetch_array($result); 
$total=$row['total']; 
$yesterday=$row['yesterday']; 
$today=$row['today'];
در آخر كار، يك پرس و جوي ديگر انجام مي دهيم و اطلاعات به روز شده را دريافت مي كنيم و در متغيرهاي مربوطه درج مي كنيم.
 

RainDigital

Member
در آخر كار، يك پرس و جوي ديگر انجام مي دهيم و اطلاعات به روز شده را دريافت مي كنيم و در متغيرهاي مربوطه درج مي كنيم.براي نمايش شمارنده، به صورت زير عمل مي كنيم: //نمايش شمارنده
echo "today:<strong>$today</strong><br>";
echo"yesterday: <strong> $yesterday</strong><br>";
echo"total:<strong> $total</strong>";
 

NabiKAZ

Well-Known Member
سلام
خیلی دنبال بازدید دیروز بودم .
ممنونم .
میرم روش کار کنم .

نبی
 
وضعیت
موضوع بسته شده است.

جدیدترین ارسال ها

بالا