Łączenia strony z bazą danych SQL

1. Dlaczego baza danych jest „sercem” nowoczesnych stron?

Bez bazy danych strona jest tylko ulotką – ładną, ale statyczną. Podłączenie bazy zmienia witrynę w aplikację.

  • Dynamika: Treść strony (artykuły, produkty) zmienia się bez edycji kodu HTML.

  • Interakcja: Użytkownik może zostawić ślad (komentarz, zamówienie, konto).

  • Trwałość: Dane nie znikają po odświeżeniu przeglądarki.

  • Personalizacja: Wyświetlanie treści dopasowanych do konkretnego użytkownika.

2. Anatomia połączenia (PHP + MySQLi)

Na egzaminie INF.03 najczęściej korzystamy z proceduralnego podejścia biblioteki mysqli. Rozbijmy standardowy „boilerplate” na czynniki pierwsze:

$conn = mysqli_connect(„localhost”, „root”, „”, „szkola”);

  • mysqli_connect(): Funkcja otwierająca „tunel” między serwerem PHP a serwerem MySQL.

  • "localhost": Adres serwera bazy danych (zazwyczaj ten sam, na którym jest strona).

  • "root": Użytkownik bazy danych (standard w XAMPP).

  • "": Hasło (domyślnie puste w środowisku lokalnym).

  • "szkola": Nazwa konkretnej bazy danych, z którą chcemy pracować.

Gdzie dokładnie wstawić plik PHP

  1. Otwórz folder, w którym zainstalowałeś XAMPP, np.:

    C:\xampp\
     
  2. Wejdź do folderu:

    C:\xampp\htdocs\
     
  3. Tam utwórz np. folder projektu:

    C:\xampp\htdocs\moj_projekt\
     
  4. W nim umieść plik z połączeniem z bazą, np.:

    C:\xampp\htdocs\moj_projekt\db.php


Przykład struktury projektu

xampp
└── htdocs
           └── moj_projekt
                          ├── index.php
                          ├── db.php ← plik z połączeniem do bazy (można również dopisać kod w pliku index.php)
                          └── style.css

3. Przykład praktyczny: Formularz „Zapisz się na kółko informatyczne”

To zadanie odwzorowuje typową strukturę arkusza egzaminacyjnego.

Krok 1: Przygotowanie bazy (SQL)

Proszę najpierw stworzyć strukturę w phpMyAdmin:

CREATE DATABASE technikum;
USE technikum;

CREATE TABLE uczniowie (
id INT PRIMARY KEY AUTO_INCREMENT,
imie VARCHAR(50),
nazwisko VARCHAR(50),
klasa VARCHAR(10)
);

Krok 2: Kod strony z formularzem i skryptem (index.php):

<!DOCTYPE html>
<html lang=”pl”>
<head>
<meta charset=”UTF-8″>
<title>Rejestracja na zajęcia</title>
</head>
<body>
<h2>Formularz zgłoszeniowy</h2>
<form method=”POST” action=”index.php”>
Imię: <input type=”text” name=”imie”><br>
Nazwisko: <input type=”text” name=”nazwisko”><br>
Klasa: <input type=”text” name=”klasa”><br>
<button type=”submit” name=”wyslij”>Wyślij zgłoszenie</button>
</form>

<?php
if (isset($_POST[’wyslij’])) {
// 1. Połączenie z bazą
$polaczenie = mysqli_connect(„localhost”, „root”, „”, „technikum”);

// 2. Pobranie danych z formularza
$imie = $_POST[’imie’];
$nazwisko = $_POST[’nazwisko’];
$klasa = $_POST[’klasa’];

// 3. Budowa zapytania SQL
$zapytanie = „INSERT INTO uczniowie (imie, nazwisko, klasa)
VALUES (’$imie’, '$nazwisko’, '$klasa’)”;

// 4. Wykonanie zapytania i sprawdzenie wyniku
if (mysqli_query($polaczenie, $zapytanie)) {
echo „<p>Dane zostały zapisane do bazy!</p>”;
} else {
echo „Błąd: ” . mysqli_error($polaczenie);
}

// 5. Zamknięcie połączenia
mysqli_close($polaczenie);
}
?>
</body>
</html>

Rozłożenie przykładu na czynniki pierwsze:

if (isset($_POST[’wyslij’])) { … }

  • isset(): Funkcja sprawdzająca, czy zmienna w ogóle istnieje.

  • $_POST['wyslij']: To odwołanie do przycisku <button name="wyslij">. Skrypt „odpali się” tylko wtedy, gdy użytkownik faktycznie kliknie przycisk. Bez tego PHP próbowałby wysłać puste dane do bazy przy każdym odświeżeniu strony.

Nawiązanie połączenia (Most)

Zanim wyślemy dane, musimy otworzyć połączenie.

$polaczenie = mysqli_connect(„localhost”, „root”, „”, „technikum”);

Wyobraź sobie to jako wybranie numeru telefonu do bazy. Jeśli podasz złe parametry (np. złe hasło), połączenie zostanie odrzucone. Na egzaminie INF.03 parametry są zazwyczaj stałe:

  • Serwer: localhost

  • Użytkownik: root

  • Hasło: (puste)

Odbiór danych z formularza

Tutaj „wyciągamy” to, co zostało wpisane w pola tekstowe HTML:

$imie = $_POST[’imie’];
$nazwisko = $_POST[’nazwisko’];
$klasa = $_POST[’klasa’];

  • $_POST['imie']: Zmienna superglobalna, która przechowuje wartość z pola <input name="imie">.

  • Ważne: Nazwa w nawiasie kwadratowym musi być identyczna z atrybutem name w HTML. PHP rozróżnia wielkość liter!

Budowa zapytania SQL (List do bazy)

To najważniejszy i najtrudniejszy etap dla uczniów – połączenie składni PHP ze składnią SQL.

$zapytanie = „INSERT INTO uczniowie (imie, nazwisko, klasa)
VALUES (’$imie’, '$nazwisko’, '$klasa’)”;

  • INSERT INTO uczniowie (...): Standardowy SQL. Mówimy bazie: „Wstaw do tabeli uczniowie do kolumn imie, nazwisko, klasa…”.

  • VALUES ('$imie', ...): Tu wstawiamy nasze zmienne z PHP.

  • Pułapka: Zmienne tekstowe w SQL muszą być w apostrofach (' '). Jeśli o nich zapomnisz, baza zwróci błąd składni.

Wykonanie operacji i weryfikacja

Samo przygotowanie zapytania to tylko napisanie tekstu. Musimy go jeszcze „wysłać” do wykonania.

if (mysqli_query($polaczenie, $zapytanie)) {
echo „<p>Dane zostały zapisane do bazy!</p>”;
} else {
echo „Błąd: ” . mysqli_error($polaczenie);
}

  • mysqli_query(): Funkcja, która bierze nasze połączenie oraz treść zapytania i próbuje je zrealizować w MySQL. Zwraca true (sukces) lub false (porażka).

  • mysqli_error(): Jeśli coś pójdzie nie tak (np. literówka w nazwie tabeli), ta funkcja powie nam dokładnie, co „boli” bazę danych. To najlepszy przyjaciel programisty podczas debugowania.

Sprzątanie (Zamknięcie połączenia)

Dobra praktyka programistyczna.

mysqli_close($polaczenie);

Kończymy rozmowę z bazą, aby nie blokować zasobów serwera. Na prostych stronach PHP robi to automatycznie po zakończeniu skryptu, ale na egzaminie warto to dopisać dla pełnej punktacji.

Najczęstsze błędy przy rozwiązywaniu zadań:

Miejsce błęduPrzykładowy błędny kodDlaczego to nie działa?Poprawna forma
Atrybuty HTML<input type="text">Brak atrybutu name. PHP nie wie, jak odebrać to pole.<input type="text" name="imie">
Metoda formularza<form>Domyślnie formularz używa GET. Dane idą do paska adresu, a nie do $_POST.<form method="POST">
Pobieranie danych$imie = $_POST[imie];Brak cudzysłowów wewnątrz nawiasu kwadratowego.$imie = $_POST['imie'];
Zapytanie SQLVALUES ($imie, $wiek)Brak apostrofów wokół zmiennych tekstowych w SQL.VALUES ('$imie', $wiek)
Logika PHPif ($polaczenie)Sprawdzenie połączenia to nie to samo co wykonanie zapytania.if (mysqli_query($conn, $sql))
Interpunkcja$a = 5Brak średnika na końcu linii w PHP.$a = 5;

Kontakt: mgzsp22@gmail.com

© 2026. Wszystkie prawa zastrzeżone.

error: Content is protected !!