Jeśli kiedykolwiek zastanawiałeś się, jak w prosty sposób pobrać dane z bazy danych i wypełnić nimi pola formularza w PHP, to trafiłeś w odpowiednie miejsce! Nie musisz być ekspertem w programowaniu, aby zrozumieć, jak działa ten proces. W tym artykule pokażę Ci krok po kroku, jak to zrobić. Przygotuj kawę, usiądź wygodnie i zanurzmy się w świat kodu.
Czego potrzebujesz, aby zacząć?
Zanim zaczniemy, upewnij się, że masz:
- Serwer lokalny lub hosting – może to być XAMPP, WAMP, MAMP lub cokolwiek innego.
- Baza danych MySQL – nawet najprostsza baza wystarczy.
- PHP – język, w którym będziemy pisać nasz kod.
- Podstawową znajomość HTML i PHP – ale spokojnie, będziemy wszystko tłumaczyć na bieżąco.
Przejdźmy teraz do konkretów!
Tworzenie bazy danych i tabeli
Najpierw potrzebujemy bazy danych z danymi, które będziemy wyciągać. Załóżmy, że tworzymy prostą tabelę użytkowników o nazwie users. W niej przechowujemy takie dane jak id, name, email i phone. Poniżej znajdziesz kod SQL do utworzenia takiej tabeli:
CREATE DATABASE demo_db;
USE demo_db;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL,
phone VARCHAR(15) NOT NULL
);
INSERT INTO users (name, email, phone) VALUES
('Jan Kowalski', 'jan.kowalski@example.com', '123456789'),
('Anna Nowak', 'anna.nowak@example.com', '987654321'),
('Piotr Zieliński', 'piotr.zielinski@example.com', '564738291');
Uruchom ten kod w swoim narzędziu do zarządzania bazą danych, np. phpMyAdmin. Dzięki temu będziesz mieć bazę z danymi.
Podstawowy szkielet aplikacji PHP
Stwórzmy teraz plik o nazwie index.php, który będzie zawierał formularz oraz kod PHP do pobierania danych z bazy.
Formularz HTML
Formularz to miejsce, gdzie będą wyświetlane dane pobrane z bazy. Poniżej znajduje się jego podstawowa struktura:
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Formularz z danymi</title>
</head>
<body>
<h1>Pobranie danych z bazy do formularza</h1>
<form method="GET" action="">
<label for="user">Wybierz użytkownika:</label>
<select name="user_id" id="user">
<!-- Opcje zostaną dodane dynamicznie z bazy -->
</select>
<button type="submit">Pokaż dane</button>
</form>
<h2>Dane użytkownika</h2>
<form method="POST" action="update.php">
<label for="name">Imię:</label>
<input type="text" id="name" name="name" value="" readonly><br>
<label for="email">Email:</label>
<input type="email" id="email" name="email" value="" readonly><br>
<label for="phone">Telefon:</label>
<input type="text" id="phone" name="phone" value="" readonly><br>
</form>
</body>
</html>
Łączenie z bazą danych
Teraz czas na kod PHP, który połączy się z bazą danych i pobierze dane użytkowników. W tym celu stwórzmy połączenie z MySQL w tym samym pliku:
<?php
$host = 'localhost';
$dbname = 'demo_db';
$username = 'root';
$password = '';
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("Błąd połączenia z bazą danych: " . $e->getMessage());
}
?>
Ten kod łączy się z bazą danych za pomocą PDO, co jest nowoczesnym i bezpiecznym podejściem.
Pobieranie listy użytkowników do selektora
Chcemy, aby lista użytkowników w polu wyboru była dynamiczna. Możemy to zrobić w ten sposób:
<?php
// Pobieranie listy użytkowników
$query = "SELECT id, name FROM users";
$stmt = $pdo->query($query);
$options = "";
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$options .= "<option value='{$row['id']}'>{$row['name']}</option>";
}
echo str_replace('<!-- Opcje zostaną dodane dynamicznie z bazy -->', $options, ob_get_clean());
?>
Pobieranie danych wybranego użytkownika
Kiedy użytkownik wybierze wartość z pola wyboru i kliknie przycisk, chcemy wypełnić pozostałe pola formularza. Dodajemy ten kod na górze pliku:
<?php
if (isset($_GET['user_id'])) {
$userId = $_GET['user_id'];
$query = "SELECT * FROM users WHERE id = :id";
$stmt = $pdo->prepare($query);
$stmt->execute(['id' => $userId]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
if ($user) {
echo "
<script>
document.getElementById('name').value = '{$user['name']}';
document.getElementById('email').value = '{$user['email']}';
document.getElementById('phone').value = '{$user['phone']}';
</script>
";
} else {
echo "Nie znaleziono użytkownika.";
}
}
?>
Aktualizacja danych (opcjonalnie)
Jeśli chcesz, aby użytkownik mógł edytować dane i zapisywać je w bazie, musisz umożliwić edycję pól formularza i dodać funkcjonalność w pliku update.php:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$id = $_POST['id'];
$query = "UPDATE users SET name = :name, email = :email, phone = :phone WHERE id = :id";
$stmt = $pdo->prepare($query);
$stmt->execute([
'name' => $name,
'email' => $email,
'phone' => $phone,
'id' => $id
]);
echo "Dane zostały zaktualizowane!";
}
?>
I to tyle! Stworzyliśmy prosty system, który:
- Wyświetla listę użytkowników w polu wyboru.
- Pobiera szczegóły wybranego użytkownika i wypełnia nimi pola formularza.
- (Opcjonalnie) Umożliwia edycję i zapis danych.
To prosty przykład, który można rozbudować o kolejne funkcjonalności, takie jak walidacja danych, obsługa błędów czy stylizacja interfejsu.