Pobranie danych z bazy do pól formularza PHP/MySQL

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:

  1. Serwer lokalny lub hosting – może to być XAMPP, WAMP, MAMP lub cokolwiek innego.
  2. Baza danych MySQL – nawet najprostsza baza wystarczy.
  3. PHP – język, w którym będziemy pisać nasz kod.
  4. 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 idnameemail 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:

  1. Wyświetla listę użytkowników w polu wyboru.
  2. Pobiera szczegóły wybranego użytkownika i wypełnia nimi pola formularza.
  3. (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.

Szukasz taniego i dobrego hostingu dla swojej strony www? - Sprawdź Seohost.pl