Oktatási naptár (1)

 

Feladat: készítsünk olyan alkalmazást, mely az aktuális tanévre oktatási naptárt készít. Jelölje zöld háttérszínnel a tanítási napokat, a heti pihenőnapot, vasárnapot különböző szürke háttérrel, egyéb nem tanítási napot az előzőektől eltérő háttérszínnel jelenítse meg. Lehessen beállítani a tanév rendjét meghatározó időpontokat. Az adatokat adatbázisba mentse.

 

A megoldás első lépéseként oldjuk meg azt, hogy egy naptár jelenjen meg, melynek első dátuma az aktuális év augusztus elseje, utolsó pedig a következő év július 31-e.

 

 

 

http://gorbem.hu/PH/Naptar1.php

 

A látványt megvalósító kód:

 

<?php

            $honap = array("", "Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December");

            $hnap = array("", "H", "K", "S", "C", "P", "S", "V");

            $ma = getdate();

            $aev = $ma[year];

            $ho = $ma[mon];

            $nap = $ma[mday];

            $ev1 = $aev;

            if ( $ho < 8 ){$ev1--;}

            $ev2 = $ev1+1;

?>

<html>

<head>

<title>Oktatási naptár</title>

</head>

<body>

<center>

<h2><u><b>Oktatási naptár: <?php print "$ev1-$ev2."; ?></u></b></h2>

<font size="2" face="Courier New">

<?php

            print "<table border=1 bordercolor=\"black\" cellpadding=0 cellspacing=0>\n";

            print "<tr>";

            for ($ev=$ev1; $ev<=$ev2; $ev++){

                  for ($ho=1; $ho<13; $ho++){

                        if ( (($ev == $ev1) && ($ho > 7)) || (($ev == $ev2) && ($ho < 8)) ){

                             print "<td>";

                             print "<table border=1 bordercolor=\"#eeeeee\" cellpadding=0 cellspacing=0>\n";

                             print "<tr>";

                             if ( $ho == 8 ){print "<th colspan=\"7\">$ev1. $honap[$ho]</th>";}

                             elseif( $ho == 1 ){print "<th colspan=\"7\">$ev2. $honap[$ho]</th>";}

                             else{print "<th colspan=\"7\">$honap[$ho]</th>";}

                             print "</tr>";

                             print "<tr>";

                             print "<th>H</th><th>K</th><th>S</th><th>C</th><th>P</th><th>S</th><th>V</th>";

                             print "</tr>";

                             print "<tr>";

                             $het = 1;

                             $kezd = TRUE;

                             for ($nap=1; $nap<32; $nap++){

                                   if ( checkdate($ho, $nap, $ev) ){

                                         $d = mktime(0,0,0,$ho,$nap,$ev);

                                         $n = strftime("%u","$d");

                                         if ( $kezd ){for ($i=0; $i<$n-1; $i++){print "<td>&nbsp;</td>";}$kezd = FALSE;}

                                         if ( $n<6 ){print "<td align=\"right\" bgcolor=\"#ffffff\">$nap</td>";}

                                         if ( $n == 6 ){print "<td align=\"right\" bgcolor=\"#dddddd\">$nap</td>";}

                                         if ( $n == 7 ){print "<td align=\"right\" bgcolor=\"#cccccc\">$nap</td>";}

                                         if ( $n == 7 ){$het++; print "</tr>";}

                                   }

                             }

                             if ( $n == 7){$het--;}

                             for ($i=$n; $i<7; $i++){print "<td>&nbsp;</td>";}

                             if ( $het < 6 ){print "<tr>";for ($i=0; $i<7; $i++){print "<td>&nbsp;</td>";}print "</tr>";}

                             print "</tr>";

                             print "</table>";

                             print "</td>";

                        }

                        if ( ($ho == 11) || ($ho == 3) || ($ho == 7) ){print "</tr>";}

                  }

            }

            print "</tr>";

            print "</table>";

?>

</center>

</body>

</html>