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.