ساخت سیستم مدیریت وظایف

ساخت سیستم مدیریت وظایف با PHP

ساخت سیستم مدیریت وظایف با PHP: یک رویکرد علمی و کاربردی

مدیریت وظایف، جزء حیاتی بهره‌وری فردی و تیمی است. یک سیستم مدیریت وظایف کارآمد، به سازماندهی، اولویت‌بندی و پیگیری وظایف کمک می‌کند و از فراموشی یا سردرگمی جلوگیری می‌کند. در این مقاله، به بررسی گام به گام ساخت یک سیستم مدیریت وظایف ساده اما کاربردی با استفاده از PHP خواهیم پرداخت. این سیستم شامل امکانات اصلی مانند افزودن، ویرایش، حذف و علامت‌گذاری وظایف به عنوان انجام‌شده خواهد بود.

۱. طراحی پایگاه داده

قلب هر سیستم مدیریت وظایف، پایگاه داده آن است. برای این سیستم، یک جدول ساده با نام `tasks` کافی خواهد بود. این جدول شامل ستون‌های زیر است:

  • `id`: شناسه یکتا برای هر وظیفه (integer, auto-increment, primary key)
  • `title`: عنوان وظیفه (varchar)
  • `description`: توضیحات وظیفه (text)
  • `due_date`: تاریخ سررسید وظیفه (date)
  • `status`: وضعیت وظیفه (enum: ‘pending’, ‘completed’)
  • `priority`: اولویت وظیفه (enum: ‘low’, ‘medium’, ‘high’)

برای ایجاد این جدول در MySQL می‌توانید از دستور زیر استفاده کنید:

CREATE TABLE tasks (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    description TEXT,
    due_date DATE,
    status ENUM('pending', 'completed') DEFAULT 'pending',
    priority ENUM('low', 'medium', 'high') DEFAULT 'medium'
);

۲. اتصال به پایگاه داده

قبل از شروع به نوشتن کد PHP، باید اتصال به پایگاه داده را برقرار کنیم. برای این کار، از PDO (PHP Data Objects) استفاده می‌کنیم که یک لایه انتزاعی برای دسترسی به پایگاه داده‌های مختلف فراهم می‌کند.

setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
    exit;
}
?>

۳. ایجاد توابع اصلی

اکنون می‌توانیم توابع اصلی برای مدیریت وظایف را ایجاد کنیم. این توابع شامل افزودن، ویرایش، حذف و دریافت وظایف هستند.

۳.۱. افزودن وظیفه

prepare("INSERT INTO tasks (title, description, due_date, priority) VALUES (?, ?, ?, ?)");
    $stmt->execute([$title, $description, $due_date, $priority]);
    return $pdo->lastInsertId();
}
?>

۳.۲. ویرایش وظیفه

prepare("UPDATE tasks SET title = ?, description = ?, due_date = ?, status = ?, priority = ? WHERE id = ?");
    $stmt->execute([$title, $description, $due_date, $status, $priority, $id]);
}
?>

۳.۳. حذف وظیفه

prepare("DELETE FROM tasks WHERE id = ?");
    $stmt->execute([$id]);
}
?>

۳.۴. دریافت وظایف

prepare("SELECT * FROM tasks");
    $stmt->execute();
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
}

function getTaskById($pdo, $id) {
    $stmt = $pdo->prepare("SELECT * FROM tasks WHERE id = ?");
    $stmt->execute([$id]);
    return $stmt->fetch(PDO::FETCH_ASSOC);
}
?>

۴. ایجاد رابط کاربری (UI)

رابط کاربری سیستم مدیریت وظایف می‌تواند بسیار ساده باشد. ما از HTML و CSS برای ایجاد یک فرم برای افزودن وظایف و یک جدول برای نمایش وظایف استفاده می‌کنیم.

۴.۱. فرم افزودن وظیفه

<form action="add_task.php" method="post">
    <label for="title">عنوان:</label>
    <input type="text" id="title" name="title" required><br>

    <label for="description">توضیحات:</label>
    <textarea id="description" name="description"></textarea><br>

    <label for="due_date">تاریخ سررسید:</label>
    <input type="date" id="due_date" name="due_date"><br>

    <label for="priority">اولویت:</label>
    <select id="priority" name="priority">
        <option value="low">کم</option>
        <option value="medium" selected>متوسط</option>
        <option value="high">بالا</option>
    </select><br>

    <input type="submit" value="افزودن وظیفه">
</form>

۴.۲. جدول نمایش وظایف

<table>
    <thead>
        <tr>
            <th>عنوان</th>
            <th>توضیحات</th>
            <th>تاریخ سررسید</th>
            <th>وضعیت</th>
            <th>اولویت</th>
            <th>عملیات</th>
        </tr>
    </thead>
    <tbody>
        <?php
        $tasks = getAllTasks($pdo);
        foreach ($tasks as $task) {
            echo "<tr>";
            echo "<td>" . $task['title'] . "</td>";
            echo "<td>" . $task['description'] . "</td>";
            echo "<td>" . $task['due_date'] . "</td>";
            echo "<td>" . $task['status'] . "</td>";
            echo "<td>" . $task['priority'] . "</td>";
            echo "<td><a href='edit_task.php?id=" . $task['id'] . "'>ویرایش</a> | <a href='delete_task.php?id=" . $task['id'] . "'>حذف</a></td>";
            echo "</tr>";
        }
        ?>
    </tbody>
</table>

۵. پیاده‌سازی منطق سمت سرور

اکنون باید منطق سمت سرور را برای پردازش فرم‌ها و انجام عملیات پایگاه داده پیاده‌سازی کنیم.

۵.۱. `add_task.php`

<?php
require_once 'db_connection.php'; // فایل اتصال به پایگاه داده

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $title = $_POST['title'];
    $description = $_POST['description'];
    $due_date = $_POST['due_date'];
    $priority = $_POST['priority'];

    addTask($pdo, $title, $description, $due_date, $priority);

    header("Location: index.php"); // بازگشت به صفحه اصلی
    exit;
}
?>

۵.۲. `edit_task.php` و `delete_task.php`

این فایل‌ها نیز به طور مشابه پیاده‌سازی می‌شوند و از توابع `updateTask` و `deleteTask` برای ویرایش و حذف وظایف استفاده می‌کنند.

۶. بهبودها و گسترش‌ها

سیستم مدیریت وظایف ساخته شده، یک پایه قوی است که می‌توان آن را با افزودن امکانات بیشتر بهبود بخشید. برخی از این امکانات عبارتند از:

  • اضافه کردن قابلیت جستجو
  • پیاده‌سازی سیستم احراز هویت (login/logout)
  • اضافه کردن قابلیت دسته‌بندی وظایف
  • استفاده از AJAX برای به‌روزرسانی پویا رابط کاربری
  • ایجاد یک API برای دسترسی به داده‌ها از طریق برنامه‌های دیگر

این مقاله، یک راهنمای جامع برای ساخت یک سیستم مدیریت وظایف ساده با PHP ارائه می‌دهد. با استفاده از این پایه، می‌توانید سیستم خود را سفارشی‌سازی کرده و به نیازهای خاص خود تطبیق دهید.