Bir oy va bir yil uchun PHP taqvimini qanday yozish kerak? Kalendar yuk php

Yangi yil arafasida juda ahamiyatsiz vazifa paydo bo'ldi - har oy uchun o'z taqvimini bir oy davomida ko'rsatish kerak bo'lgan taqvim saytini yaratish. Muammoni hal qilishda birinchi qadam tayyor echimlarni izlash edi. Internetda berilgan o'nlab echimlarni ko'rib chiqib, tanlov qilindi. Ba'zi versiyalar umuman ishlamay qoldi, ba'zilari juda og'ir edi - kerakli natijani olish uchun ularni deyarli "kesish" kerak edi. Shunday qilib, keling, php -da oddiy kalendar yozishni ko'rib chiqaylik.

Skriptning asosi Internetda topildi, xatolar tuzatildi, nimadir yakunlandi, xususan, dam olish kunlarini alohida CSS klassi bilan ajratib ko'rsatish funksiyasi qo'shildi.

MySQL, jQuery va boshqalarni ishlatmasdan sof PHPda oy taqvimini amalga oshirish. quyida keltirilgan:

"; // haftaning kunlarini ko'rsatish $ headings = array (" Mon "," Shshanba "," Chor "," Thu "," Fri "," Shanba "," Quyosh "); $ taqvim. =" "; uchun ($ head_day = 0; $ head_day<= 6; $head_day++) { $calendar.= ""; $ taqvim. ="

". $ sarlavhalari [$ head_day]."
"; $ taqvim. ="";) $ taqvim. =""; // hafta boshini dushanbaga belgilang $ running_day = date (" w ", mktime (0,0,0, $ oy, 1, $ yil)); $ running_day = $ running_day - 1; if ($ running_day == -1) ($ running_day = 6;) $ days_in_month = sana ("t", mktime (0,0,0, $ oy, 1, $ yil)); $ day_counter = 0; $ days_in_this_week = 1; $ date_array = array (); // taqvimning birinchi qatori $ taqvim. = " "; // bo'sh xujayralarni ko'rsatish ($ x = 0; $ x< $running_day; $x++) { $calendar.= ""; $ days_in_this_week ++;) // biz raqamlarga yetdik, ularni birinchi qatorga yozamiz ($ list_day = 1; $ list_day<= $days_in_month; $list_day++) { $calendar.= ""; // raqamni $ təqvim katakchasiga yozing. ="
". $ list_day."
"; $ taqvim. =""; // haftaning oxirgi kuniga yetdi, agar ($ running_day == 6) (// $ təqvim satrini yoping. =""; // agar kun oyning oxirgi kuni bo'lmasa, keyingi qatorni boshlang, agar (($ day_counter + 1)! = $ days_in_month) ($ calendar. =" ";) // hisoblagichlarni asl holatiga qaytaring $ running_day = -1; $ days_in_this_week = 0;) $ days_in_this_week ++; $ running_day ++; $ day_counter ++;) // o'tgan haftaning oxirida bo'sh hujayralarni ko'rsatish, agar ( $ kun_bu_ haftada< 8) { for($x = 1; $x <= (8 - $days_in_this_week); $x++) { $calendar.= " ";)) $ taqvim. =""; $ taqvim. =""; $ taqvimini qaytaring;)?>

Draw_calendar funktsiyasi kirish sifatida oy va yilning tartib raqamini oladi. Funktsiyaning bajarilishining natijasi ko'rsatilgan oy uchun taqvimning html-kodidir. Yuqoridagi funktsiyadan foydalanish qiyin emas, hatto veb -ishlab chiqarishni yangi boshlovchi ham qila oladi. Quyidagi misolda 2016 yil yanvar oyining taqvimi ko'rsatilgan.

Yanvar "16

Oy va yil nomini o'z ichiga olgan taqvim imzosi displeyi ataylab funktsiyaga kiritilmagan, shuning uchun uni erkin o'zgartirish mumkin va hatto umuman olib tashlash mumkin.

Yil uchun php kalendar

Yuqoridagi funktsiyadan siz bir yilga va har qanday taqvim uchun php-skriptni osongina olishingiz mumkin. Buni amalga oshirish uchun barcha oylarni takrorlash kifoya qiladi va ularning har biri uchun taqvimni bir oy davomida ko'rsatish funktsiyasi chaqiriladi.

Ammo, bu holda, siz rus tilidagi oylarning nomlari ro'yxatini o'z ichiga olgan qator yaratishingiz kerak bo'ladi, chunki siz php -dan faqat ingliz tilida oy nomlarini olishingiz mumkin.

Bu holda kod quyidagicha bo'ladi:

"Yanvar", 1 => "Fevral", 2 => "Mart", 3 => "Aprel", 4 => "May", 5 => "Iyun", 6 => "Iyul", 7 => " Avgust ", 8 =>" sentyabr ", 9 =>" oktyabr ", 10 =>" noyabr ", 11 =>" dekabr "); uchun ($ oy = 1; $ oy<= 12; $month++) { ?>

"16

Ushbu maqolada keltirilgan misollarni github -dan yuklab olish mumkin.

Zap Cal kutubxonasi - bu iCalendar fayllarini o'qish va yozish uchun PHP ochiq manbali kutubxona. Kutubxona 10 yildan ziyod vaqt mobaynida Zap Calendar dasturini, Joomla CMS uchun ochiq manbali dasturni va yaqinda saytdagi iCalendar validator loyihasini qo'llab -quvvatladi. Endi u PHP ishlab chiquvchilari uchun mustaqil kutubxona sifatida mavjud.

Zap Calendar iCalendar kutubxonasi - bu iCalendar (RFC 5545) standartini qo'llab -quvvatlaydigan PHP kutubxonasi. Kutubxonaga iCalendar fayllarini o'qish va yozishning bir nechta misollari kiritilgan

Bu PHP kutubxonasi iCalendar formatlangan tasmalar va fayllarni o'qish va yozish uchun mo'ljallangan. Kutubxonaning o'ziga xos xususiyatlari quyidagilardan iborat:

  • ICalendar fayllarini qo'llab -quvvatlash va o'qish
  • ICalendar fayllarini ob'ektlar asosida yaratish va manipulyatsiya qilish
  • RRULE -ni takrorlanadigan sanalar ro'yxatiga kengaytirishni qo'llab -quvvatlaydi
  • ICalendar fayliga vaqt mintaqasi ma'lumotlarini qo'shishni qo'llab -quvvatlaydi

Barcha iCalendar ma'lumotlari PHP ob'ektlar daraxtida saqlanadi. Bu har qanday xususiyatni maxsus kutubxona funktsional qo'ng'iroqlarini talab qilmasdan iCalendar tasmasiga qo'shish imkonini beradi. Quvvat bilan mas'uliyat keladi. Yo'qolgan yoki yaroqsiz xususiyatlar natijasida paydo bo'lgan iCalendar faylining yaroqsiz bo'lishiga olib kelishi mumkin.

Bu erda bitta voqea iCalendar faylini yaratish uchun PHP dasturining misoli:

$ title = "(! LANG: oddiy hodisa"; // date/time is in SQL datetime format $event_start = "2020-01-01 12:00:00"; $event_end = "2020-01-01 13:00:00"; // create the ical object $icalobj = new ZCiCal(); // create the event within the ical object $eventobj = new ZCiCalNode("VEVENT", $icalobj->curnode); // add title $eventobj->addNode(new ZCiCalDataNode("SUMMARY:" . $title)); // add start date $eventobj->addNode(new ZCiCalDataNode("DTSTART:" . ZCiCal::fromSqlDateTime($event_start))); // add end date $eventobj->addNode(new ZCiCalDataNode("DTEND:" . ZCiCal::fromSqlDateTime($event_end))); // UID is a required item in VEVENT, create unique string for this event // Adding your domain to the end is a good way of creating uniqueness $uid = date("Y-m-d-H-i-s") . "@demo.. $uid)); // DTSTAMP is a required item in VEVENT $eventobj->addNode(new ZCiCalDataNode("DTSTAMP:" . ZCiCal::fromSqlDateTime())); // Add description $eventobj->addNode(new ZCiCalDataNode("Description:" . ZCiCal::formatContent("This is a simple event, using the Zap Calendar PHP library. " .."))); // write iCalendar feed to stdout echo $icalobj->export();!}

2014 yil 14 sentyabr

JavaScript -da yaratilgan komponentni ishlata olmaydigan holatlar mavjud. Qoidaga ko'ra, bu sizga HTML formatida sana tanlashni avtomatlashtirishga emas, balki kelajakda sodir bo'lgan yoki rejalashtirilgan ba'zi voqealarni bog'lash qobiliyatiga muhtoj bo'lgan holatlardir. Bu ma'lum bir sanadagi yangiliklar soni, Internet -do'konda buyurtma qilingan mahsulotlar yoki xaridlar soni va boshqalar bo'lishi mumkin. Bular. bunday hollarda, ma'lum bir sana uchun ma'lum ma'lumotlarni olish uchun taqvim va ma'lumotlar bazasi o'rtasida aloqa zarurligi aniq bo'ladi. Albatta, JavaScript -da taqvim yaratish va ba'zi voqealar borligi to'g'risida ma'lumot olish uchun Ajax -dan foydalanish mumkin bo'lar edi, lekin amaliyot shuni ko'rsatadiki, bunday yechim optimal emas. Shuning uchun bu taqvim komponenti PHP da ishlab chiqiladi.

Taqvim uslubi sozlamalari faylda mavjud kalendar.css... Va PHP skript faylda kalendar.sinf.

Taqvim bilan ishlash uchun sizga kerak bo'lgan modulga quyidagi kodni kiritish kerak:

// need_once modulini kiriting (dirname (__FILE__). "/Calendar.class.php"); // Unix formatidagi voqea sanalari bilan qator $ Events = array (1409518800, 1409778000,1410210000,1410901200,1411592400); // $ date = (isset ($ _ REQUEST ["date"])) bo'lsa, sanani oling? $ _REQUEST ["sana"]: ""; // Kalendar ob'ektini yaratish $ calendar = new Calendar ($ date, $ Events); // Kalendar echosini ko'rsatish $ calendar-> ShowCalendar ();

Siz taqvimning manba kodini ehtiyojlaringizga qarab o'zgartirishingiz mumkin. Kalendar komponentini yuklab olishingiz mumkin.

Maqola sizga yoqdimi? Do'stlar bilan bo'lishish uchun: