diff($now)->y; } catch (Throwable $e) { return null; } } try { $pdo = getPdoConnection(true); ensureLab04StudentsTable($pdo, false); // Xử lý cập nhật nhanh ngày sinh cho 1 sinh viên hoặc nạp ngày sinh mẫu cho các sinh viên chưa có if ($_SERVER['REQUEST_METHOD'] === 'POST') { $action = (string)($_POST['action'] ?? ''); if ($action === 'update_birthday') { $id = (int)($_POST['id'] ?? 0); $birthday = trim((string)($_POST['birthday'] ?? '')); if ($id > 0) { $stmt = $pdo->prepare("UPDATE students SET birthday = :birthday WHERE id = :id"); $stmt->execute([ ':birthday' => $birthday !== '' ? $birthday : null, ':id' => $id, ]); $msg = "Đã cập nhật ngày sinh cho sinh viên #{$id} thành công!"; } } elseif ($action === 'fill_default_birthdays') { $pdo->exec("UPDATE students SET birthday = '2004-05-15' WHERE birthday IS NULL"); $msg = 'Đã tự động điền ngày sinh mẫu cho tất cả sinh viên chưa có ngày sinh!'; } } $students = $pdo->query("SELECT id, name, email, phone, birthday FROM students ORDER BY id ASC")->fetchAll(); } catch (Throwable $e) { $connectionError = $e; } ?> Bài 08 - Thêm cột Birthday (ALTER TABLE) & Tính tuổi
✅

Bài 08: Quản lý Ngày sinh (birthday) & Tính tuổi

Định dạng hiển thị dd/mm/YYYY và cập nhật trực tiếp bằng PDO Prepared Statement
ID Họ và tên Ngày sinh (dd/mm/YYYY) Tuổi Cập nhật ngày sinh
#
🎂 Chưa cập nhật tuổi —
Nội dung file Bai08/alter_birthday.sql