Tworzenie skryptów w PHP

Lekcja: PHP i Bazy Danych – od podstaw do praktyki egzaminacyjnej INF.03

Cele lekcji:

  • Nauka łączenia się z bazą danych MySQL w PHP
  • Tworzenie zapytań SQL i przesyłanie ich do bazy danych
  • Pobieranie i wyświetlanie wyników w różnych formatach
  • Tworzenie formularzy HTML, odbieranie danych metodą POST
  • Obsługa ciasteczek (setcookie) i ich poprawne umiejscowienie w kodzie

1. Połączenie z bazą danych MySQL w PHP

Połączenie z bazą danych wykonujemy za pomocą funkcji mysqli_connect.

$polaczenie = mysqli_connect("localhost", "root", "", "egzamin");

if (!$polaczenie) {
    die("Błąd połączenia z bazą danych: " . mysqli_connect_error());
}
  • localhost – adres serwera bazy danych (zwykle lokalny)
  • root – domyślny użytkownik
  • "" – brak hasła (niezalecane w praktyce produkcyjnej)
  • "egzamin" – nazwa bazy danych

Zamknięcie połączenia:

mysqli_close($polaczenie);

2. Tworzenie zapytań SQL i wysyłanie ich do bazy

Wysyłamy zapytanie do bazy danych:

$zapytanie = "SELECT * FROM uczniowie";
$wynik = mysqli_query($polaczenie, $zapytanie);

if (!$wynik) {
    echo "Błąd zapytania: " . mysqli_error($polaczenie);
}

3. Wyświetlanie wyników zapytania

A. Tabela HTML

echo "<table border='1'>";
while ($wiersz = mysqli_fetch_array($wynik)) {
    echo "
<tr><td>{$wiersz['imie']}</td>
<td>{$wiersz['nazwisko']}</td></tr>";
}
echo "</table>";

B. Lista punktowana

echo "
<ul>";
while ($wiersz = mysqli_fetch_row($wynik)) {
    echo "
<li>{$wiersz['1']} {$wiersz['2']}</li>";
}
echo "</ul>";

C. Sekcje i divy

while ($wiersz = mysqli_fetch_assoc($wynik)) {
    echo "
<section>";
    echo "
<h3>{$wiersz['imie']} {$wiersz['nazwisko']}</h3>";
    echo "
<p>Klasa: {$wiersz['klasa']}</p>";
    echo "</section>";
}

4. Formularz HTML i odbieranie danych metodą POST

Formularz:

<form method="POST" action="formularz.php">
    <label for="id">Podaj ID ucznia:</label>
    <input type="number" name="id" id="id">
    <input type="submit" value="Wyślij">
</form>

Skrypt formularz.php:

if (isset($_POST['id']) && $_POST['id'] != "") {
    $id = $_POST['id'];

    $zapytanie = "SELECT imie, nazwisko FROM uczniowie WHERE id=$id";
    $wynik = mysqli_query($polaczenie, $zapytanie);

    while ($wiersz = mysqli_fetch_assoc($wynik)) {
        echo "
<p>{$wiersz['imie']} {$wiersz['nazwisko']}</p>";
    }
}

Uwaga: Zabezpieczenia typu mysqli_real_escape_string() lub przygotowane zapytania (prepared statements) są wymagane w praktyce, ale niekoniecznie na egzaminie INF.03.


5. Ciasteczka (Cookies) – setcookie i $_COOKIE

Ciasteczka służą do zapisywania informacji o użytkowniku. Muszą być ustawiane zanim wyślemy jakiekolwiek dane do przeglądarki (czyli przed echo, `

`, itp.). ### Przykład: „`php // Ustawiamy ciasteczko, ważne przez 2 godziny if (!isset($_COOKIE[’odwiedzil’])) { setcookie(„odwiedzil”, „tak”, time() + 2 * 3600); echo ”