PHP/Ćwiczenia/Podstawy języka
Ćwiczenia
edytujĆwiczenia utrwalające materiał z pierwszego rozdziału.
Zasada działania PHP
edytuj- PHP jest językiem skryptowym. Co to oznacza?
- Wskaż czynności, które można wykonać przy pomocy PHP. Jeżeli czegoś nie da się zrobić w PHP, jakiej technologii użyjesz?
- Licznik odwiedzin
- Otwarcie pliku na dysku internauty
- Rozwijane menu
- Otwarcie pliku na serwerze
- Rejestrowanie informacji o osobach przychodzących
- System newsów
- Aktualizacja fragmentu załadowanej strony WWW
- Zareagowanie na kliknięcie myszką
- Pobranie adresu MAC karty sieciowej internauty
- Wyszukiwarka treści
- Co powinien generować skrypt PHP uruchamiany na serwerze WWW?
Podstawy języka
edytujSzybkie pytania:
- Do czego służy komenda
echo
? - Dlaczego tekst, który chcemy wyświetlić przy pomocy
echo
nie musi być otoczony nawiasami, a przyprintf
musi? - Objaśnij różnicę w działaniu cudzysłowów i apostrof.
- Do czego służą zmienne? Jakimi atrybutami można je opisać?
- Wskaż niepoprawne nazwy zmiennych:
$_
$zmienna
$Napis383
$dZi33cI_N30
$15newsow
$gżegżółka
$_i
- Opisz na przykładzie, dlaczego powinno się inicjować zmienne przed pierwszym użyciem.
Poniżej pokazane są dwie sytuacje, w których stosujemy zmienne tymczasowe, lecz w jednej z nich są one niepotrzebne. Wskaż "błędną" sytuację oraz objaśnij, dlaczego w jednym przypadku zmienna tymczasowa jest pożądana, a w drugim nie?
- Przykład 1:
<?php
$tresc = $_POST['tresc'];
$tresc = htmlspecialchars($tresc);
$tresc = nl2br($tresc);
zapisz($tresc);
- Przykład 2:
<?php
$wynik = skomplikowaneObliczenia();
if($wynik > 4)
{
przetwarzajDalej($wynik * 536 - 832 / ($wynik / 2));
}
else
{
buforuj($wynik);
}
Pętle i instrukcje warunkowe
edytujSzybkie pytania:
- Jaka musi być wartość wyrażenia w pętli
while
, aby jej treść wykonała się ponownie? - Jaka musi być wartość wyrażenia w pętli
do... while
, aby jej treść wykonała się ponownie? - Co najmniej ile razy wykona się kod w pętli
do... while
, a ile wwhile
? - W jaki sposób wykonać określony kod, gdy żądany przez nas warunek nie jest spełniony?
- Zamień podane wyrażenia logiczne na ich odwrotności (tj. odwrotność ma dawać true, gdy wyrażenie jest fałszywe i na odwrót) bez użycia operatora negacji
!
$a == $b
($a > 8) && ($a < 20)
($a == 7) || ($b < 20)
- Opisz słownie, co opisują wyrażenia oraz ich odwrotności z poprzedniego ćwiczenia.
Funkcje
edytujPoniżej pokazany jest fragment pewnego skryptu. Podana funkcja ma dodawać formatowanie do podanego w argumencie ciągu tekstowego, lecz nie działa zgodnie z zamierzeniami autora. Znajdź błąd i zaproponuj jego rozwiązanie. Jeżeli nie znasz niektórych z funkcji, znajdź je w dokumentacji.
<?php
function formatuj($tekst)
{
echo '<strong>'.$tekst.'</strong>';
} // end formatuj();
// ...
$dane = file('dane.txt');
echo '<ul>';
foreach($dane as $linia)
{
$wiersz = explode('|', trim($linia));
echo '<li>'.formatuj($wiersz[0]).': '.$wiersz[1].'</li>';
}
echo '</ul>';
Ćwiczenia praktyczne
edytujĆwiczenie 1
Matematyczną operację x! (czyt. x silnia) definiujemy następująco: , , - innymi słowy jest to mnożenie wyniku przez kolejne liczby naturalne aż do n. Zaimplementuj silnię w PHP w dwóch wariantach: rekurencyjnym oraz przy użyciu pętli for
. Spróbuj przy pomocy każdej z nich policzyć silnię z 50 oraz 105. Co zaobserwowałeś?
Ćwiczenie 2
Na wielu stronach internetowych wykorzystuje się podział listy wyników na strony, aby ograniczyć ilość jednocześnie wyświetlanych informacji i przyspieszyć ładowanie strony. Wbrew pozorom, Twoja wiedza jest już w pełni wystarczająca, aby stworzyć taki system. Twoim zadaniem jest napisanie funkcji o następujących właściwościach:
- Funkcja przyjmuje za argumenty:
- łączną liczbę elementów,
- liczba elementów na jedną stronę,
- numer aktualnej strony.
- Zwraca tablicę zawierającą:
- kod HTML z listą dostępnych stron,
- numer pierwszego elementu wyświetlonego na aktualnej stronie,
- ilość elementów wyświetlanych na aktualnej stronie (pamiętaj, że na ostatniej stronie nie musi znajdować się pełna liczba elementów).
- Funkcja musi wygenerować kod HTML z odnośnikami do wszystkich dostępnych stron. Aktualna strona musi być wyróżniona, np. pogrubieniem.
- Funkcja musi obliczyć, który element powinien wyświetlać się jako pierwszy na aktualnej stronie.
Napisz skrypt testujący napisaną funkcję, który pobiera numer strony z adresu URL. Uwzględnij sytuację, gdy w adresie URL nie ma podanego numeru. Sprawdź, czy funkcja poprawnie zachowuje się, gdy próbujesz podać np. ujemną albo nieistniejącą stronę. Powinieneś zostać wtedy przerzucony do strony pierwszej. Dodaj do skryptu pętlę for
, którą zasymulujesz wyświetlane elementy poprzez zwykłe wyświetlanie liczb naturalnych.
Ćwiczenie 3
Dodaj napisany system stronicowania do księgi gości z poprzedniego rozdziału.