Jak stworzyć na stronie kalendarzyk z dniami miesiąca na dowolny rok i miesiąc, PHP Skrypty


[PHP] Jak stworzyć na stronie kalendarzyk z dniami miesiąca na dowolny rok i miesiąc?

0x01 graphic

Chcesz umieścić na swojej stronie kalendarzyk, który pokaże wszystkie dni na dowolny rok i miesiąc. Może on wyglądać dokładnie tak, jak poniżej:

Maj 2004

Nd

Pn

Wt

Śr

Cz

Pt

So

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

 

0x01 graphic

Kalendarzyk może być dodatkowym gadżetem na stronie, ale również potrzebnym i przydatnym narzędziem, szczególnie gdy każdy dzień będzie linkiem do określonych zasobów dostępnych dla tego własnie dnia.

Rozkład dni wygląda o wiele ładniej i czytelniej w postaci tabelki niż jako łańcuch znaków. Oto gotowy kod tworzący kalendarz na każdy miesiąc dowolnego roku z uwzględnieniem lat przestępnych.

<?

function kalendarz($rok,$miesiac) {

$znacznik = mktime(0,0,0,$miesiac,1,$rok);

$iledni = date("t", $znacznik);

$poczatek= date("w", $znacznik);

$miesiace = array("Styczeń","Luty","Marzec","Kwiecień","Maj",

"Czerwiec","Lipiec","Sierpień","Wrzesień","Październik",

"Listopad","Grudzień");

echo "<table border=1 cellspacing=0 cellpadding=2>";

echo "<tr><td colspan=7 bgcolor=#eeeedd align=center>";

echo $miesiace[$miesiac-1]." $rok</td>";

echo "<tr bgcolor=#eeeeee><td>Nd</td><td>Pn</td>

<td>Wt</td><td>Śr</td><td>Cz</td><td>Pt</td>

<td>So</td></tr><tr align=right>";

if ($poczatek>0)

echo "<td colspan=$poczatek bgcolor=#eeeeee>&nbsp;</td>";

for ($i=1;$i<=$iledni;$i++) {

$dzien=date("w", mktime(0,0,0,$miesiac,$i,$rok));

if ($dzien==0) {

echo "</tr><tr align=right>"; $bg="red";

} else {

$bg="yellow";

}

if (mktime(0,0,0,date("m"),date("d"),date("Y"))==

mktime(0,0,0,$miesiac,$i,$rok)) $bg="green";

echo "<td bgcolor=$bg>$i</td>";

}

$koniec=7-($poczatek+$iledni)%7;

if ($koniec<>7)

echo "<td colspan=$koniec bgcolor=#eeeeee>&nbsp;</td>";

echo "</tr></table>";

}

kalendarz(2002,11);

?>

Aby wywołać funkcję, musisz podać rok i miesiąc, dla których ma być tworzony kalendarzyk. Aby uzyskać kalendarz dla aktualnego miesiąca możesz wywołać go w następujący sposób:

kalendarz(date("Y"),date("m"));

Do stworzenia kalendarza potrzebne są dwie dane - ile dni ma miesiąc i od którego dnia tygodnia się zaczna. Tydzień ma siedem dni, wiec tabela będzie miała siedem kolumn. Ilość rzędów może być różna w zależności od tego, w jakim dniu wypada początek miesiąca i ile dni ma miesiąc.

Ponieważ nie każdy dzień zaczyna się od niedzieli, najpierw trzeba wyliczyć początkowy odstęp (puste kratki, a raczej jedną, poszerzoną komórkę tabeli). To akurat łatwo jest zrobić bo numer dnia mówi nam ile kratek trzeba opuścić. Niedziela to dzień nr 0, a zaczynamy przecież liczyć od niedzieli - jeżeli mamy piątek (dzień nr 5), to odstęp wyniesie 5 dni.

Następnie w pętli dodawane są kolejne dni w osobnych komórkach tabeli. Jeżeli wypadnie niedziela, zaczynamy nowy rząd. Dodatkowo ustawiane są kolory dla dni powszednich i niedzieli. Jeżeli podczas tworzenia kalendarza trafimy na aktualny dzień, zostanie on pokolorowany na zielono.

Na końcu występuje podobny problem jak na początku - trzeba znowu wyliczyć brakujące elementy tabeli, bo przecież nie zawsze wypełnia się ona do końca dniami. Sposób jest prosty - sprawdzam ile dni zostaje po podzieleniu przez 7 wszystkich dni miesiąca oraz dni dodanych na początku tabeli i odejmuje wynik od siedmiu. Jeżeli wartość jest różna od 7 to znaczy, że są jakieś puste pola.

Jeżeli chcesz na stronie umieścić kalendarz dla całego roku możesz fukcję wywołać następująco:

<?

$rok=2001;

echo "<center><table>";

for ($i=0;$i<4;$i++) {

echo "<tr valign=top>";

for ($j=0;$j<3;$j++) {

$k++;

echo "<td>";

kalendarz(2002,$k);

echo "</td>";

}

echo "</tr>";

}

echo "</table></center>";

?>

Jeżeli chcesz zarezerwować jakieś dni i zaznaczyć je na kalendarzu, możesz stworzyć tablicę asocjacyjną $waznedaty z datami istotnymi, a potem w pętli, podczas "rysowania" kalendarza kolorować wybrane dni np. na niebiesko (blue):

<?

function kalendarz($rok,$miesiac) {

$znacznik = mktime(0,0,0,$miesiac,1,$rok);

$iledni = date("t", $znacznik);

$poczatek= date("w", $znacznik);

$miesiace = array("Styczeń","Luty","Marzec","Kwiecień","Maj",

"Czerwiec","Lipiec","Sierpień","Wrzesień","PaŸdziernik",

"Listopad","Grudzień");

echo "<table border=1 cellspacing=0 cellpadding=2>";

echo "<tr><td colspan=7 bgcolor=#eeeedd align=center>";

echo $miesiace[$miesiac-1]." $rok</td>";

echo "<tr bgcolor=#eeeeee><td>Nd</td><td>Pn</td>

<td>Wt</td><td>Śr</td><td>Cz</td><td>Pt</td>

<td>So</td></tr><tr align=right>";

if ($poczatek>0)

echo "<td colspan=$poczatek bgcolor=#eeeeee>&nbsp;</td>";

$waznedaty["2004.4.9"]=1;

$waznedaty["2004.4.14"]=1;

$waznedaty["2004.4.15"]=1;

$waznedaty["2004.4.16"]=1;

$waznedaty["2004.4.27"]=1;

for ($i=1;$i<=$iledni;$i++) {

$dzien=date("w", mktime(0,0,0,$miesiac,$i,$rok));

if ($dzien==0) {

echo "</tr><tr align=right>"; $bg="red";

} else {

$bg="yellow";

}

if (mktime(0,0,0,date("m"),date("d"),date("Y"))==

mktime(0,0,0,$miesiac,$i,$rok)) $bg="green";

if ($waznedaty["$rok.$miesiac.$i"]==1) $bg="blue";

echo "<td bgcolor=$bg>$i</td>";

}

$koniec=7-($poczatek+$iledni)%7;

if ($koniec<>7)

echo "<td colspan=$koniec bgcolor=#eeeeee>&nbsp;</td>";

echo "</tr></table>";

}

kalendarz(2004,04);

?>



Wyszukiwarka

Podobne podstrony:
jak stworzyc system www do edycji plikow tekstowych i stron w wybranyum katalogu, PHP Skrypty
Jak dopisać dane na początku pliku tekstowego, PHP Skrypty
Jak zamienić liczby na kwoty zapisane słownie, PHP Skrypty
Jak zatrzymać wykonywanie skryptu na określoną liczbę sekund, PHP Skrypty
Jak automatycznie pokolorować na przemian wiersze tabeli, PHP Skrypty
Kalendarz uniwersalny na dowolny rok
Jak zapisać dane pochodzące z animacji do pliku lub do bazy danych, PHP Skrypty
Jak sprawdzić czy dwa wyrazy są dla siebie anagramami (są permutacją, PHP Skrypty
Jak w bazie danych skasować automatycznie rekordy starsze niż np. 30 dni, PHP Skrypty
Jak stworzyć losowe porady wyświetlające się na stronie WWW, PHP Skrypty
Jak stworzyć ikonki lub napisy informujące o nowościach na stronie, które same znikną po okreś
Zostań milionerem! Jak zarabiać na własnej stronie WWW
Jak chronić adres e-mail na stronie przed spamem stosując przekierowanie, PHP Skrypty
Jak umieścić na stronie losową grafikę, gdy obrazków w katalogu jest wiele i są ponumerowane rosnąco
Jak stworzyć formularz do przesyłania informacji na podany email, PHP Skrypty
05-12 PAM-Jak stworzyć raj na ziemi, ezoteryka
JAK STWORZYĆ HASŁO NA FOLDER ZA POMOCĄ NOTATNIKA
JAK STWORZYĆ HASŁO NA FOLDER ZA POMOCĄ NOTATNIKA
Zostań milionerem! Jak zarabiać na własnej stronie WWW

więcej podobnych podstron