Instrukcje Warunkowe i Pętle w PHP

INF.03.7 (1) — Kontrola przepływu skryptów serwerowych

Wprowadzenie Kontrola Przepływu

Instrukcje warunkowe i pętle pozwalają wykonywać kod w zależności od warunków lub wielokrotnie powtarzać fragmenty logiki, co jest kluczowe dla dynamicznych stron PHP.

  • Dynamiczne HTML: Logika warunkowa decyduje, który fragment HTML zostanie wysłany do przeglądarki.
  • Pętle: Ułatwiają generowanie powtarzalnych elementów, takich jak listy czy wiersze tabeli.

Warunki Instrukcje Decyzyjne

1. Instrukcja if...elseif...else

Konstrukcja if wykonuje różne gałęzie kodu w zależności od spełnienia warunków logicznych.

<?php
    $wynik = 72;
    if ($wynik >= 80) {
        echo "<p>Ocena: Bardzo dobry</p>";
    } elseif ($wynik >= 50) {
        echo "<p>Ocena: Dostateczny</p>";
    } else {
        echo "<p>Ocena: Niedostateczny</p>";
    }
?>

2. Instrukcja switch

switch jest wygodny, gdy porównuje się jedną zmienną z wieloma stałymi wartościami.

<?php
    $kolor = "zielony";
    switch ($kolor) {
        case "czerwony":
            echo "Kolor alarmowy.";
            break;
        case "zielony":
        case "niebieski":
            echo "Kolor bezpieczny/spokojny.";
            break;
        default:
            echo "Nieznany kolor.";
    }
?>

Pętle Powtarzanie Logiki i Treści

1. Pętla for

Pętla for jest używana, gdy znana jest liczba iteracji, np. do generowania listy elementów.

<?php
    echo "<ul>";
    for ($i = 1; $i <= 3; $i++) {
        echo "<li>Element numer $i</li>";
    }
    echo "</ul>";
?>

2. Pętla while

Pętla while działa tak długo, jak warunek pozostaje prawdziwy, więc dobrze nadaje się do sytuacji o nieznanej z góry liczbie powtórzeń.

<?php
    $saldo = 50;
    $koszt = 10;
    $licznik = 0;
    while ($saldo >= $koszt) {
        $saldo -= $koszt;
        $licznik++;
        echo "<p>Wykonano operację $licznik. Saldo: $saldo zł.</p>";
    }
?>

3. break i continue

break przerywa pętlę, a continue pomija bieżącą iterację i przechodzi do następnej.

<?php
    for ($i = 1; $i <= 10; $i++) {
        if ($i == 4) {
            continue;
        }
        if ($i == 7) {
            break;
        }
        echo "$i <br>";
    }
?>

Wyzwanie Złożone Skrypty i HTML

Łączenie PHP z HTML w jednej strukturze pozwala czytelnie generować tabele, listy i formularze.

Generowanie Tabeli z Pętlą for

<table border="1">
    <tr><th>Liczba</th><th>Kwadrat</th></tr>
    <?php
    for ($i = 1; $i <= 5; $i++) {
        $kwadrat = $i * $i;
    ?>
    <tr>
        <td><?php echo $i; ?></td>
        <td><?php echo $kwadrat; ?></td>
    </tr>
    <?php } ?>
</table>

Ćwiczenie Zadania Praktyczne

Zadanie 1: Weryfikacja Dostępności (Podstawowe)

Sprawdź zmienne $czyZalogowany i $rola, aby wyświetlić jeden z trzech komunikatów o poziomie dostępu.

Zadanie 2: Dynamiczne Pole Wyboru (Ponadpodstawowe)

Użyj pętli for, aby wygenerować listę lat w elemencie <select>, zaznaczając domyślnie rok 2020.

Rozwiązania Zadania z Dostępem i Selectem

Rozwiązanie Zadania 1: Weryfikacja Dostępności

Skrypt wykorzystuje if / elseif / else, aby na podstawie roli i zalogowania wyświetlić odpowiedni komunikat.

<?php
/**
 * Zadanie 1: Weryfikacja Dostępności
 */

$czyZalogowany = true;
$rola = "editor";

if ($czyZalogowany && $rola === "admin") {
    echo "<p>Pełny dostęp</p>";
} elseif ($czyZalogowany && $rola === "editor") {
    echo "<p>Dostęp tylko do edycji</p>";
} else {
    echo "<p>Ograniczony dostęp</p>";
}
?>

Rozwiązanie Zadania 2: Dynamiczne Pole Wyboru

Pętla for generuje lata od 2025 do 2015, a rok 2020 oznaczony jest jako wybrany.

<?php
/**
 * Zadanie 2: Dynamiczne Pole Wyboru
 */
?>

<select name="rok">
    <?php
    for ($rok = 2025; $rok >= 2015; $rok--) {
        // Dla roku 2020 ustawiamy selected
        $selected = ($rok == 2020) ? ' selected="selected"' : '';
        echo "<option value=\"{$rok}\"{$selected}>{$rok}</option>";
    }
    ?>
</select>

Materiały Narzędzia i Linki

  • PHP Manual: Instrukcje kontroli przepływu.
  • W3Schools: PHP Loops (pętle for, while, foreach).
  • Dobra praktyka: Dla dużych bloków HTML można używać składni alternatywnej if (...): ... endif;.
Materiały: Instrukcje Warunkowe i Pętle w PHP · Opracowanie na podstawie wymagań INF.03 | Autor: Tomasz Puchała (toloki.pl)