✅ Warsztat: Menedżer projektów (ToDo, zadania, statusy)

W serii ćwiczeń stworzysz prostą aplikację zarządzania projektami i zadaniami w PHP oraz MySQL, zdobywając przydatne kompetencje z bazy danych i programowania.

1️⃣ Baza danych i tabela „zadania”

Stwórz bazę danych todo oraz tabelę zadania:

CREATE DATABASE IF NOT EXISTS todo;
USE todo;

CREATE TABLE IF NOT EXISTS zadania (
    id INT AUTO_INCREMENT PRIMARY KEY,
    tytul VARCHAR(128) NOT NULL,
    opis TEXT,
    status ENUM('nowe','w trakcie','zakończone') DEFAULT 'nowe',
    deadline DATE
);

INSERT INTO zadania (tytul, opis, deadline) VALUES
('Wdrożenie projektu', 'Ustalenie środowiska produkcyjnego', '2025-11-01'),
('Testy jednostkowe', 'Przygotowanie testów PHP', '2025-10-25'),
('Front-end', 'Implementacja widoków i UX', '2025-10-28');

2️⃣ Połączenie PHP z bazą

Utwórz plik db.php z połączeniem:

<?php
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'todo';

$conn = new mysqli($host, $user, $pass, $db);
if ($conn->connect_error) {
    die("Błąd połączenia: " . $conn->connect_error);
}
?>

3️⃣ Wyświetlanie listy zadań

W pliku index.php pobierz i wyświetl zadania:

<?php include('db.php'); ?>
<html>
<head><title>Lista zadań</title></head>
<body>
<h1>Zadania do wykonania</h1>
<?php
$sql = "SELECT * FROM zadania ORDER BY deadline";
$res = $conn->query($sql);
if ($res->num_rows > 0) {
    while($row = $res->fetch_assoc()) {
        echo "<div>";
        echo "<b>" . $row['tytul'] . "</b>";
        echo " (" . $row['status'] . ", deadline: " . $row['deadline'] . ")";
        echo "<br>" . $row['opis'];
        echo "</div><hr>";
    }
} else {
    echo "Brak zadań.";
}
$conn->close();
?>
</body></html>

4️⃣ Dodawanie nowych zadań

Zaprojektuj formularz umożliwiający dodanie zadania:

<form method="POST">
Tytuł: <input type="text" name="tytul"><br>
Opis: <textarea name="opis"></textarea><br>
Deadline: <input type="date" name="deadline"><br>
<input type="submit" name="dodaj" value="Dodaj">
</form>

<?php
if (isset($_POST['dodaj'])) {
    $tytul = $_POST['tytul'];
    $opis = $_POST['opis'];
    $deadline = $_POST['deadline'];
    $conn->query("INSERT INTO zadania (tytul, opis, deadline) VALUES ('$tytul', '$opis', '$deadline')");
    echo "Dodano zadanie.";
}
?>

5️⃣ Zmiana statusu zadania

Dodaj przyciski umożliwiające zmianę statusu (nowe / w trakcie / zakończone):

<?php
// ... wypisując zadania:
echo '<form method="POST" style="display:inline">';
echo '<input type="hidden" name="id" value="' . $row['id'] . '">';
echo '<select name="status">
      <option>nowe</option>
      <option>w trakcie</option>
      <option>zakończone</option>
      </select>';
echo '<input type="submit" name="zmien_status" value="Aktualizuj">';
echo '</form>';
// ...
if (isset($_POST['zmien_status'])) {
    $id = $_POST['id'];
    $status = $_POST['status'];
    $conn->query("UPDATE zadania SET status='$status' WHERE id=$id");
}
?>

🕵️‍♂️ Zadania dodatkowe


Autor: Tomasz Puchała – INF.03 © 2025 – www.toloki.pl