ساخت تقویم یا همون Calendar

amir01

Well-Known Member
آموزش ساخت تقویم یا همون Calendar فارسی

به نام خدا
سلام بچه ها من برای سیستمم یه تقویم نوشته بودم گفتم چون نمونه فارسیش کم هست آموزشش رو براتون بذارم.
خب اول باید بگم که این اسکریپت رو با توابع تقویم جلالی نوشتم باید اون رو هم دانلود کنید. تو همین فروم بچه ها گذاشتن.

1- اول که همون فایل jdf.php رو فراخوانی میکنیم:
PHP:
<?php
include "jdf.php";

2- بعد مشخص می کنیم که اگه ماه و سال از طریق GET به اسکریپت داده نشد ماه و سال جاری رو محاسبه کنه و داخل متغیر $Month و $Year قرار بده:
PHP:
if (!($_GET['Month'])) { $Month = jdate ("m"); } else { $Month = $_GET['Month']; }
if (!($_GET['Year'])) { $Year = jdate ("Y"); } else { $Year = $_GET['Year']; }

3- حالا زمان روز اول ماه رو توسط تابع jmaketime() محاسبه میکنیم و داخل متغیر $Timestamp قرار میدیم:
PHP:
$Timestamp = jmaketime (0, 0, 0, $Month, 1, $Year);

4- حالا ماه و سال جاری رو داخل متغیر های $CMonth و $CYear قرار می دیم و نام ماهی که قراره نشون داده بشه رو داخل متغیر &MonthName میریزیم:
PHP:
$CMonth = jdate("m");
$CYear = jdate("Y");
$MonthName = jdate("F", $Timestamp);

5- حالا برای اینکه مشکلی در گذاشتن لینک برای رفتن به ماه بعد و ماه قبل وجود نداشته باشه کد زیر رو می نویسیم:
PHP:
if ($Month >= 12) 
{
	$NextMonth = "1&Year=".($Year + 1);
	$LastMonth = ($Month-1)."&Year=".$Year;
}
elseif ($Month <= 1) 
{
	$NextMonth = "2&Year=".$Year;
	$LastMonth = "12&Year=".($Year - 1);
}
else
{
	$NextMonth = ($Month + 1)."&Year=".$Year;
	$LastMonth = ($Month - 1)."&Year=".$Year;
}

6- حالا میریم سراغ نمایش خود تقویم. یه جدول درست میکنیم و با توجه به نام ماه و سال عنوان براش میذاریم و دو تا لینک هم برای رفتن به ماه های بعدی و قبلی میذاریم. 7 تا ستون هم برای روزهای هفته درست میکنیم و اسم روزها رو بصورت مختصر توشون می نویسیم:
PHP:
$Cal .= "<div align='center'>
<table cellpadding=0 cellspacing=2 dir=rtl width=100% height=180 style='border: 1px solid #cccccc'>
	<tr bgcolor='#cccccc'>
		<td><a href=\"calendar.php?Month=$NextMonth\" title='ماه بعد'>«</a></td>
		<td colspan=5 align=center style='padding-top: 2px; padding-bottom: 5px'>
		<b>$MonthName".Num2Fa($Year)."</b></td>
		<td><a href=\"calendar.php?Month=$LastMonth\" title='ماه قبل'>»</a></td>
	</tr>
	<tr style='font-weight: bold' height='12.5%'>
		<td align=center width='14.28%'>ش</th>
		<td align=center width='14.28%'>ی</td>
		<td align=center width='14.28%'>د</td>
		<td align=center width='14.28%'>س</td>
		<td align=center width='14.28%'>چ</td>
		<td align=center width='14.28%'>پ</td>
		<td align=center width='14.28%'>ج</td>
	</tr>";

7- حالا اولین روز ماه رو مشخص میکنیم:
PHP:
$MonthStart = jdate("w", $Timestamp);
این دستور مقادیر 0 تا 6 رو برای روزهای هفته توی متغیر $MonthStart می ریزه.

8- حالا مقدار $MonthStart رو برای استفاده خودمون (چون تقویم ایرانیه) اصلاح میکنیم. 6 یعنی شنبه که ما جاش -1 رو میذاریم. (دلیل اینکه از منفی (-) استفاده کردم رو جلوتر میگم)
PHP:
if ($MonthStart == 6) 
{
	$MonthStart = -1; 
}

9- آخرین روز ماه رو هم تعیین میکنیم برای اینکار هم برای آرگومان روز تو تابع jmaketime() مقدار 0 و برای آرگومان ماه، ماه بعد رو میدیم اینجوری:
PHP:
$LastDay = jdate("d", jmaketime (0, 0, 0, $Month+1, 0, $Year));

10- حالا با توجه به اولین روز ماه یک متغیر جدید درست میکنیم. از اونجایی که تقویم ما از شنبه شروع میشه ولی ممکنه که اولین روز ماه شنبه نباشه. بعدا میبینید که مثلا اگه اولین روز ماه 3 شنبه باشه مقدار -3 تو این متغیر ذخیره میشه که ما برای خالی گذاشتن روزهای شنبه تا دوشنبه ازش استفاده میکنیم.
PHP:
$StartDate = -$MonthStart;

11- حالا یک حلقه برای ایجاد سطرهای تقویم (همون هفته ها) ایجاد می کنیم:
PHP:
for ($k = 1; $k <= 6; $k++)
{
 	$Cal .= "<tr>";

12- یه حلقه دیگه توی این حلقه برای ایجاد ستونهای تقویم (روزها) ایجاد میکنیم:
PHP:
for ($i = 1; $i <= 7; $i++)
 	{

13- حالا اینجاست که از اون منفی (-) استفاده میکنیم. به این صورت که یه دستور شرطی می ذاریم که اگه شماره روزمون منفی (-) و یا بزرگتر از آخرین روز ماه بود، یه خونه خالی تو جدول ایجاد کنه :
PHP:
if (($StartDate <= 0) || ($StartDate > $LastDay)) 
 		{
 			$Cal .= "<td height='12.5%'>&nbsp;</td>";
 		}

14- حالا میگیم که اگر این شرط برقرار نبود (یعنی روزی که محاسبه شده جز روزهای ماه بوده) روز رو تو یه خونه جدید چاپ کنه:
PHP:
elseif (($StartDate >= 1) && ($StartDate <= $LastDay))
 		{
 			$Cal .= "<td height='12.5%' align=center ".$st." bgcolor='"; 
 			 			$Cal .= "'>".Num2Fa($StartDate)."</td>";
 		}

15- حالا یه واحد به روز اضافه میکنیم که بشه روز بعدی:
PHP:
$StartDate++;

16- حالا حلقه ها رو می بندیم همچنین جدولی که ایجاد کردیم رو:
PHP:
}
 	$Cal .= "</tr>\n";
}
$Cal .= "</table></div>";

17- و در آخر هم تقویم رو نمایش میدیم:
PHP:
echo $Cal;

راستی بچه ها این کدها رو داخل فایلی به نام calendar.php باید بذارید.
------------------
امیدوارم مورد استفاده بوده باشه....
همیشه خوب باشید...
یاحق...
 
آخرین ویرایش:

1p30

Member
بازم به تو که می یایی یاد می دی بعضی ها زورشون می یاد وقتی یه چیزی می نویسن الگوریتمشو به بقیه بدن
من هم چنتا الگوریتم دارم حتمی می زارمشون
:d
 

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

بالا