کد PHP ساختن جدول تاریخ و تقویم

‏  3 دقیقه
۱۰ بهمن ۱۳۹۱
کد PHP ساختن جدول تاریخ و تقویم

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

تابع ساختن یک جدول تاریخ و تقویم یک ماهه

تابع ساختن جدول تقویم یک ماهه رو به این شکل خواهیم داشت . تابع build_calendar دو تا پارامتر ورودی می‌گیره که به ترتیب عدد ماه و سال رو نشون میده و در نهایت جدول مربوط به اون ماه رو بر می‌گردونه :

<?php
function build_calendar($month,$year) {
// Create array containing abbreviations of days of week.
$daysOfWeek = array('S','M','T','W','T','F','S');

// What is the first day of the month in question?
$firstDayOfMonth = mktime(0,0,0,$month,1,$year);

// How many days does this month contain?
$numberDays = date('t',$firstDayOfMonth);

// Retrieve some information about the first day of the
// month in question.
$dateComponents = getdate($firstDayOfMonth);

// What is the name of the month in question?
$monthName = $dateComponents['month'];

// What is the index value (0-6) of the first day of the
// month in question.
$dayOfWeek = $dateComponents['wday'];

// Create the table tag opener and day headers
$calendar = "<table class='calendar'>";
$calendar .= "<caption>$monthName $year</caption>";
$calendar .= "<tr>";

// Create the calendar headers
foreach($daysOfWeek as $day) {
$calendar .= "<th class='header'>$day</th>";
}

// Create the rest of the calendar
// Initiate the day counter, starting with the 1st.
$currentDay = 1;
$calendar .= "</tr><tr>";

// The variable $dayOfWeek is used to ensure that the calendar
// display consists of exactly 7 columns.
if ($dayOfWeek > 0) {
$calendar .= "<td colspan='$dayOfWeek'>&nbsp;</td>";
}

$month = str_pad($month, 2, "0", STR_PAD_LEFT);
while ($currentDay <= $numberDays) {
// Seventh column (Saturday) reached. Start a new row.
if ($dayOfWeek == 7) {
$dayOfWeek = 0;
$calendar .= "</tr><tr>";
}

$currentDayRel = str_pad($currentDay, 2, "0", STR_PAD_LEFT);
$date = "$year-$month-$currentDayRel";
$calendar .= "<td class='day' rel='$date'>$currentDay</td>";

// Increment counters
$currentDay++;
$dayOfWeek++;
}

// Complete the row of the last week in month, if necessary
if ($dayOfWeek != 7) {
$remainingDays = 7 - $dayOfWeek;
$calendar .= "<td colspan='$remainingDays'>&nbsp;</td>";
}

$calendar .= "</tr>";
$calendar .= "</table>";
return $calendar;
}
?>

این تابع جدول ماه دریافتی رو در یک table بر می‌گردونه .

نحوه استفاده از تابع جدول تقویم

برای استفاده از این تابع کافیه عدد ماه و سال مورد نظر رو به اون بدید و خروجیش رو چاپ کنید . می‌تونید این دو عدد رو به عنوان پارامترهای get از طریق url هم دریافت کنید و در تابع استفاده کنید .

به طور مثال اگر جدول مربوط به اولین ماه سال 2000 رو رو بخواید به این شکل استفاده می‌کنید :

<?php
$m1y2000=build_calendar(1,2000);
echo $m1y2000;
?>

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

<?php
$currentDate = getdate();
$month = $currentDate['mon'];
$year = $currentDate['year'];
echo build_calendar($month,$year);
?>

جدول چاپ شده هم دارای ویژگی class برابر با calendar هست که می‌تونید با css ظاهرش رو تغیر بدید .

چه امتیازی به این مقاله می دید؟
نویسنده لقمان آوند
بیش از 15 سال هست که برنامه نویسی می کنم و از بین همه زبون هایی که کار کردم جاوا، اسمبلی و php رو دوست دارم. دانشجوی دکترای نرم افزارم و توی دانشگاه روی پردازش بیگ دیتا و پردازش موازی کار کردم و عاشق چالش از هر نوعیش هستم! سون لرن مثل بچه منه که 12 سال براش وقت گذاشتم، اینجا همه تلاش می کنیم از شروع یادگیری تا ورود به بازر کار حوزه برنامه نویسی و IT همراهتون باشیم.
ارسال دیدگاه
خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :

 

نظرات کاربران

فائزه جعفرپور

سلام میشه لطف کنید نحوی اجراش رو هم بگین ؟
خیلی ضروریه من برای یکی تز درسام تو دانشگاه میخوام ولی نمیدونم چججوری اجراکنم این برنامه رو؟

وحید صالحی

سوالتون رو در انجمن مطرح کنید

mahdizz

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

علی

سلام
من نیاز به کدی دارم که تاریخ روز رو به صورت شمسی و میلادی و قمری نشون بده و در آخرمناسبت روز رو هم نمایش بده ممنون میشم فایلش رو برای دانلود و طرز استفاده ازش رو در سایت قرار بدید خیلی ممنون ❓

وحید صالحی

دوست عزیز گوگل کنید کدهای زیادی وجود داره…

علی

بله پیدا کردم میلادی و قمری و شمسی رو ولی متاسفانه مناسبت روز رو نتونستم پیدا کنم
اگر زحمتی نباشه کد جاواش و فراخوانیش رو بزارید ممنون

وحید صالحی

اکثرشون به حالت ابزار هستند مثل این لینک
اگر می خوای اختصاصی باشه باید خودت کد بزنی یا یه افزونه طراحی کنی که برای این کار در انجمن پست بزار آقای کیوان علی محمدی میتونن کمکت کنن…

ال جی

هنوز تستش نکردم ولی ممنون و سپاسگزار. ایشالا نمره خوبی برای پایان ترم داشته باشه 😀

طراحی سایت

عااااااااااالی بود ممنون

درج آگهی رایگان

ممنون
آموزش هاتون خیلی خیلی خوبه

somayehyari

باسلام و تشکر فراوان
من میخواهم صفحه اصلی که طراحی میکنم از کاربر یک یوزر و پسورد دریافت کند که با زدن دکمه ارسا ل درصورتیکه چنین کاربری با این پسورد در پایگاه داده موجود می باشد وارد صفحه بعدی شود و بتواند ازامکانات استفاده کند لطفا مرا در نوشتن چنین کدی راهنمایی کنید
با تشکر از لطف شما

محمدسینا معراجیان

چقدر با پی اچ پی آشنایی دارید؟سوالتون رو توی انجمن مطرح کنید حتما پاسختون رو میگرید

آرمان

مرسی از مدیران این سایت

محمّد حسن مهرآذر

سلام آقای آوندی باز هم یک سوال دیگه شما این صفحه رو یه نگاه بندازید می بینید که قسمت دانلود در هر پستی وجود دارد میخواستم بدونم آیا افزونه ای برای این کار وجود دارد؟
http://www.gameror.net/%DA%A9%D8%B1%DA%A9-%D8%A8%D8%A7%D8%B2%DB%8C-march-of-the-eagles/

با تشکر

لقمان آوند

میشه با شورتکد ها توی وردپرس میشه چنین چیزی درست کرد . باید بگردی …
مثلا این پلاگینو ببین .

محمّد حسن مهرآذر

سلام ممنون آقای آوند سپاسگزارم.

محمّد حسن مهرآذر

سلام آقای آوندی یه سوال دیگه داشتم میخواستم ببینم دامین در رتبه سایت تاثیر دارد؟

لقمان آوند

خبر ، ولی اگر دامین مرتبط با موضوع سایت داشته باشیداز لحاظ اعتبار و ارتباط می تونه موثر باشه و بهتره که اینطور باشه …

محمّد حسن مهرآذر

سلام ممنون همیشه پاسخگوی سوالات بودید. 😉

لقمان آوند

متاسفانه چون خیلی وقته از این سیستم ها استفاده نکردم راهنمایی درستی نمی تونم بکنم .

ما در سون لرن با محدودسازی دسترسی آزاد به اینترنت مخالفیم     اطلاعات بیشتر