Podsumowanie trzeciego rozdziału

Coś jest niejasne? Wejdź na Forum PHP i uzyskaj pomoc

Podsumowanie trzeciego rozdziału

Przyszedł czas na podsumowanie nabytej wiedzy z zakresu tworzenia własnych funkcji, używania tablic oraz korzystania z funkcji daty i czasu. Przygotowałem kilka zadań, które pomogą Ci w realizacji tego celu.

Naszym zadaniem będzie napisanie funkcji, która na podstawie wpisanej daty urodzin wyświetli, jaki był to dzień tygodnia. Napiszemy również drugą funkcję, zwracającą ilość dni, które upłynęły od danej daty. Data przekazywana będzie w postaci tablicy ze zdefiniowanymi indeksami.

Napiszmy najpierw plik urodziny.html, który wyświetli formularz umożliwiający wpisanie daty:

 
<html>
<head>
   <title>Wpisz datę urodzenia</title>
</head>
<body>
   <form action="oblicz.php" method="get" >
      Wpisz dzień: <input type="text" name="dzien" /><br/>
      Miesiąc: <input type="text" name="miesiac" /><br/>
      Rok: <input type="text" name="rok" /><br/>
      <input type="submit" value="OK" /><br/>
   </form>
</body>
</html>

Nie dzieje się tutaj nic nadzwyczajnego. Zwykły formularz wysyłający datę dalej. Teraz kolej na plik oblicz.php:

<?php

function wypisz_dzien_tygodnia($data)
{
   echo date("l", mktime (0,0,0,$data['miesiac'],
   $data['dzien'],$data['rok']));
}

function oblicz_dni($data)
{
  // 60 sekund to 1 minuta, 60 minut to 1 godzina, 
  24 godziny to 1 dzień
  $czas = (time() - mktime (0,0,0,$data['miesiac'],
  $data['dzien'],$data['rok']))/60/60/24;
  return $czas;
}

$data['dzien'] = $_GET['dzien'];
$data['miesiac'] = $_GET['miesiac'];
$data['rok'] = $_GET['rok'];

wypisz_dzien_tygodnia($data);

echo oblicz_dni($data); 

?>

Przegląd rozwiązania

Przeanalizujmy wspólnie rozwiązanie tego przykładowego problemu. Funkcja wypisz_dzien_tygodnia przyjmuje $data jako argument. $data to zmienna tablicowa, która przechowuje informacje o dniu, miesiącu oraz roku. Format „l” w funkcji date() oznacza wyświetlenie dnia tygodnia w języku angielskim. Podsumowując, funkcja wypisz_dzien_tygodnia($data) wyświetli dzień tygodnia na podstawie podanej daty.

Kolejna funkcja – oblicz_dni($data), również przyjmuje jako argument $data. Korzysta z funkcji time(), zwracającej liczbę sekund, które upłynęły od 1. stycznia 1970 roku. Mktime() przyjmuje jako argument podaną datę i zwraca liczbę sekund od 1. stycznia 1970 do tej daty. Wynika z tego, że gdy odejmiemy jedną wartość od drugiej otrzymamy szukaną liczbę sekund – od daty do dnia dzisiejszego. Pozostaje tylko podzielić wartość przez 60/60/24, aby zamienić sekundy na dni. Tym razem funkcja zwraca wartość.

Reszta kodu wydaje się być oczywista. Przypisanie danych wysłanych z formularza do zmiennej tablicowej, wywołanie dwóch funkcji i zakończenie pliku. Wartość zwracana przez funkcję oblicz_dni($data) może zostać od razu przekazana do funkcji echo, która spowoduje wyświetlenie liczby dni.

Propozycje dalszych ćwiczeń

Proponuję spróbować rozwiązać następujące zadania:

  • Zmodyfikuj funkcję wypisz_dzien_tygodnia, by wyświetlał nazwy dni tygodnia po polsku. Użyj formatu „w” funkcji date() i instrukcji warunkowej switch.
  • Napisz skrypt sprawdzający pełnoletność użytkownika. Odwiedzający wpisuje swoją datę urodzenia i w zależności od obliczonego wieku wyświetla się stosowny komunikat.
  • Stwórz funkcję, która zapisze do tablicy dni tygodnia dziesięciu kolejnych dni matki (26.05), a następnie zwróci tę tablicę

Na tym kończymy rozdział trzeci. W kolejnym zaprezentuję działania na ciągach znaków w PHP oraz pokażę, jak generować liczby losowe. Nauczymy się również stosowania wyrażeń regularnych do sprawdzania poprawności wprowadzanych danych. Już teraz serdecznie zapraszam!

Spis lekcji w rozdziale trzecim

Poprzednia lekcja: Data i czas Następna lekcja: Rozdział czwarty