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 ”