PHP - kalendarz
| DZIAŁANIE: |
|
||||||||||||||||||||||||||||||||||||||||||||||
Kod:

Ewentualne Objaśnienia:
Wszystkie możliwe parametry funkcji date znajdziecie na : http://pl.php.net/manual/pl/function.date.php .
Oto całkiem prosty skrypt generujący nam kalendarz z zaznaczeniem
dzisiejszego dnia zobaczmy co się dzieje na przykład dla daty 8 Grudnia 2007 :
- określamy
rok = 2007
numer miesiąca = 12
dni w miesiącu = 31
dzień tygodnia = 6 (sobota - funkcja date z parametrem w
zwraca niedzielę jako 0 )
dzień miesiąca = 8
pierwszy dzień miesiąca = czyli 1 grudnia 2007 to sobota więc
zwraca 6
- jeżeli dzień tygodnia lub pierwszy dzień w miesiącu zwracają 0 czyli jest to
niedziela - zamieniamy 0 na 7 ( łatwiej będzie dalej liczyć )
- określamy sobie polskie nazwy dla miesięcy
- wyświetlamy nagłówek kalendarza oraz 7 komórek ze skrótami nazw dnia tygodnia
- obliczamy $k czyli ile powtórzeń powinna wykonać pętla, czyli liczba dni w
miesiącu + numer 1 dnia miesiąca ( bo nie zawsze jest tak, że pierwszy dzień
miesiąca to poniedziałek, więc przed wyświetleniem 1 dnia w miesiącu należy
wyświetlić jakieś puste pola ) - 1 aby nie zacząć wyświetlać o dzień za późno (
pętla pójdzie od $i = 0 więc nasz 8 Grudzień 2007 będzie wyświetlony przy $i = 5
a nie 6 )
- w pętli :
- jeżeli $i jest mniejsza od pierwszego dnia miesiąca
wyświetlamy po prostu puste komórki pokolorowane na biało, pętla rozpoczyna się
od nowa
- jeżeli liczba powtórzenia pętli jest podzielna bez reszty
przez 0 należy zacząć wyświetlać nowy wiersz tabeli ponieważ "minęło już 7 dni"
- dlatego między innymi też pętla zaczyna od $i = 7 a nie $i=1 co mogłoby się
wydawać prostsze
- jeżeli aktualny dzień przez, który przechodzimy w pętli
czyli numer powtórzenia - numer pierwszego dnia miesiąca + 2 (bo "tracimy" 1 na
tym, że $i zaczyna się od 0, oraz pierwszy dzień miesiąca czyli tutaj 6 to już
numer dnia, od którego należy wypisywać dni ) jest równy sprawdzonemu na
początku dniu miesiąca określamy sobie tło dla komórki jako żółte, w przeciwnym
razie czyli dla innego dnia jako białe
- wyświetlamy komórkę z odpowiednim tłem ( żółte albo białe )
oraz dzień
- po wszystkim zamykamy tabelę oraz gdzieś w kodzie wywołujemy sobie naszą
funkcję wyświetlającą kalendarz.
Proste prawda :)