A./10. lecke (HTML5, CSS3, PHP5)


Új (PHP manual)


"Névnapok" elkészítése

Másoljuk le az "index9.php" fájlt "indexA.php", a "main9.css" fájlt "mainA.css", valamint a "menu9.inc" fájlt "menuA.inc" néven és javítsuk át a rá való hivatkozásokat!


Szúrjuk be ezt a sort az "indexA.php" fájl tetejére az "include('incl/calendar.php');" alá:

include('incl/nevnap.php');

A "nevnap.php" fájlban a legfontosabb függvény így néz ki:

 function kivalaszt($ev,$ho,$np) {
   switch ($ho) {
      case  1: $nevek = array('','ÚJÉV,Fruzsina','Ábel','Genovéva,Benjámin','Titusz,Leona','Simon','Boldizsár','Attila,Ramóna','Gyöngyvér','Marcell','Melánia','Á
      case  2:
      if ( $ev==2020 ) {
         $nevek = array('','Ignác','Karolina,Aida','Balázs','Ráhel,Csenge','Ágota,Ingrid','Dorottya,Dóra','Tódor,Rómeó','Aranka','Abigél,Alex','Elvira','Bertold', ... ,'Szökőnap', ... ); break;
      } else {
         $nevek = array('','Ignác','Karolina,Aida','Balázs','Ráhel,Csenge','Ágota,Ingrid','Dorottya,Dóra','Tódor,Rómeó','Aranka','Abigél,Alex','Elvira','Bertold ... ); break;
      }
      case  3: $nevek = array('','Albin','Lujza','Kornélia','Kázmér','Adorján,Adrián','Leonóra,Inez','Tamás','NEMZETKÖZI_NŐNAP,Zoltán','Franciska,Fanni','Ildikó'
      case  4: $nevek = array('','Hugó','Áron','Buda,Richárd','Izidor','Vince','Vilmos,Bíborka','Herman','Dénes','Erhard','Zsolt','Leó,Szaniszló','Gyula','Ida','
      ...
      case 12: $nevek = array('','Elza','Melinda,Vivien','Ferenc,Olívia','Barbara,Borbála','Vilma', 'Miklós','Ambrus', 'Mária','Natália', 'Judit','Árpád','Gabrie
   }
 return $nevek[$np];
 }

Ezt a függvényt három paraméterrel hívjuk meg, az aktuális adatokkal. Ezek alapján dől/dőlnek el a megfelelő névnap illetve névnapok. A "switch" egy többirányú elágazás (kétirányú az if ... else), amely a paraméterként kapott "$ho" értékétől függő "case" ágra fut rá. Pl. ha a $ho=3 és $np=5, a névnapok 'Adorján,Adrián', ha $ev=2017, $ho=2 és $np=1, a névnap 'Ignác' (az "else" ágon), de 2020-ban az "if" ágra futva az egyik napon (most nem tudom hányadik!) a névnap 'Szökőnap' is lehet. Figyeljük meg, hogy mindegyik "case" ág "break;"-re végződik, emiatt ugrik majd ki a többirányú elágazásból.


Csomagoljuk ki (leckeA.zip), s másoljuk a helyére a "nevnap.php" fájl!


A "nevnap.php" fő függvénye

A "nevnapok($ev,$ho,$np)" függvény az aktuális dátumon kívül kezeli a rákövetkező két napot is, a részletekbe ne menjünk bele.

 function nevnapok($ev,$ho,$np) {
   $ev = $ev+0; $ho = $ho+0; $np = $np+0; // aktuális nap
   $knevek = kivalaszt($ev,$ho,$np); $txt0 = szetbont($knevek);
   $np = $np+1; $dat = localtime ( mktime (0,0,0,$ho,$np,$ev)); // következő nap
   ...
   $text = "\n<div class='nnap'>\n";
   $text .= "<p>$txt0 napja van ma</p>\n";
   $text .= "<p>$txt1 napja lesz holnap</p>\n";
   $text .= "<p>$txt2 napja lesz holnapután</p>\n";
   $text .= "<p>Gratulálunk a névnaposoknak!</p>\n</div>\n";
 return "$text";

Felhasználjuk a két általános tag-et - a "div" és "span" tag-eket - a névnapok formázására.

A "$text" egy szöveges/string változó. Benne rakosgatjuk/ragasztjuk össze (.=) a kiírandó bekezdéseket. A használt "\n-sortörés" karakterek csak arra szolgálnak, hogy a forrásprogramban (Ctrl+U) ne ragadjanak egybe a bekezdések.

A "return "$text";" sor gondoskodik arról, hogy átadja a "$text" szöveget a hívó főprogramnak.


A PHP modul hívása, kiírás

Tegyük a "<h3>Névnapok</h3>" alá a következő PHP modult:

<?php
   echo nevnapok($aev,$aho,$anp);
?>

Ezután a "Névnapok" címsor alatt remélhetőleg megjelennek az aktuális névnapok.


A névnapok stílusbeállításai

Illesszük a "mainA.css" végére a következő stílusokat!

 aside .nnap p {
   padding-left:10px;
   font-size:80%;
 }
 aside .nnap p span {
   color:DarkSeaGreen;
 }
 aside .nnap p span:hover {
   color:DarkGreen;
 }