Download Source Code Task Reminder System Using PHP and MySQL
Task Reminder System – Overview
This project, titled “Task Reminder System,” is a web-based application designed to help company employees manage their daily tasks. Developed using PHP and MySQL, it features a user-friendly interface with Bootstrap Framework and AdminLTE Template. The system includes various functionalities for both users and administrators, making it an efficient tool for task management.
How the Task Reminder System Works
The system consists of two modules: the User Site and the Monitoring Site.
- User Site: This is the part of the system accessible only to registered users. There are two types of users: the Administrator (system manager) and the Staff (employees).
- The Administrator has full access to all system data, including user information and system settings.
- The Staff can manage and view only their own task reminders. They can add, edit, view, and delete their tasks, while administrators can access and manage all users’ data.
- Monitoring Site: This public-facing page displays active task reminders scheduled for the day. It shows information such as the assigned user, task title, and a brief description. The reminders are displayed as an automatic slider, changing every 10 seconds.
Features and Functionalities
- Monitoring Site
- Top Navigation
- Footer
- Task Reminder Slider (10-second interval)
- Login Button
- User Site
- Administrator Features
- Login and Logout
- Dashboard
- Task Reminders Summary
- Manage Task Reminders (add, edit, view, delete)
- User Management (add, edit, delete users)
- Update System and Account Information
- Staff Features
- Login and Logout
- Dashboard
- Task Reminders Summary
- Manage Own Task Reminders (add, edit, view, delete)
- Update Account Details
- Administrator Features
Technologies Used
- XAMPP
- VS Code Editor
- PHP
- MySQL Database
- HTML
- CSS
- JavaScript
- jQuery
- Ajax
- Bootstrap Framework
- AdminLTE v3 Template
- Font Awesome Icons
How to Run the System
- Requirements:
- Install a local web server (XAMPP recommended).
- Download the source code zip file.
- System Installation/Setup:
- Enable the GD Library in your
php.ini
file. - Open XAMPP Control Panel and start Apache and MySQL.
- Extract the source code zip file.
- Copy the extracted folder into the “htdocs” directory in XAMPP.
- Open PHPMyAdmin at
http://localhost/phpmyadmin
. - Create a new database named
trs_db
. - Import the
trs_db.sql
file located in the database folder. - Browse the Task Reminder System at
http://localhost/php-trs/
.
- Enable the GD Library in your
- Default Admin Access:
- Username:
admin
- Password:
sourcecodester&123
- Username:
Conclusion
This Task Reminder System, developed with PHP and MySQL, is intended for educational purposes. It is free to download, and you are encouraged to modify the source code as per your needs. This project can be helpful for managing tasks and can be a useful reference for your future PHP-based projects.
index PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
<?php ob_start(); ?> <?php require_once('../config.php'); ?> <!DOCTYPE html> <html lang="en" class="" style="height: auto;"> <?php require_once('inc/header.php') ?> <body class="sidebar-mini layout-fixed control-sidebar-slide-open layout-navbar-fixed sidebar-mini-md sidebar-mini-xs text-sm" data-new-gr-c-s-check-loaded="14.991.0" data-gr-ext-installed="" style="height: auto;"> <div class="wrapper"> <?php require_once('inc/topBarNav.php') ?> <?php require_once('inc/navigation.php') ?> <?php if($_settings->chk_flashdata('success')): ?> <script> alert_toast("<?php echo $_settings->flashdata('success') ?>",'success') </script> <?php endif;?> <?php $page = isset($_GET['page']) ? $_GET['page'] : 'home'; ?> <!-- Content Wrapper. Contains page content --> <div class="content-wrapper pt-3" style="min-height: 567.854px;"> <!-- Main content --> <section class="content text-dark"> <div class="container-fluid pb-2"> <?php if(!file_exists($page.".php") && !is_dir($page)){ include '404.html'; }else{ if(is_dir($page)) include $page.'/index.php'; else include $page.'.php'; } ?> </div> </section> <!-- /.content --> <div class="modal fade" id="uni_modal" role='dialog'> <div class="modal-dialog modal-md modal-dialog-centered rounded-0" role="document"> <div class="modal-content rounded-0"> <div class="modal-header"> <h5 class="modal-title"></h5> </div> <div class="modal-body"> </div> <div class="modal-footer"> <button type="button" class="btn btn-primary rounded-0" id='submit' onclick="$('#uni_modal form').submit()">Save</button> <button type="button" class="btn btn-secondary rounded-0" data-dismiss="modal">Cancel</button> </div> </div> </div> </div> <div class="modal fade" id="uni_modal_right" role='dialog'> <div class="modal-dialog modal-full-height modal-md rounded-0" role="document"> <div class="modal-content rounded-0"> <div class="modal-header"> <h5 class="modal-title"></h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span class="fa fa-arrow-right"></span> </button> </div> <div class="modal-body"> </div> </div> </div> </div> <div class="modal fade" id="confirm_modal" role='dialog'> <div class="modal-dialog modal-md modal-dialog-centered rounded-0" role="document"> <div class="modal-content rounded-0"> <div class="modal-header"> <h5 class="modal-title">Confirmation</h5> </div> <div class="modal-body"> <div id="delete_content"></div> </div> <div class="modal-footer"> <button type="button" class="btn btn-primary rounded-0" id='confirm' onclick="">Continue</button> <button type="button" class="btn btn-secondary rounded-0" data-dismiss="modal">Close</button> </div> </div> </div> </div> <div class="modal fade" id="viewer_modal" role='dialog'> <div class="modal-dialog modal-md" role="document"> <div class="modal-content"> <button type="button" class="btn-close" data-dismiss="modal"><span class="fa fa-times"></span></button> <img src="" alt=""> </div> </div> </div> </div> <!-- /.content-wrapper --> <?php require_once('inc/footer.php') ?> </body> </html> <?php $overall_content = ob_get_clean(); $content = preg_match_all('/(<div(.*?)\/div>)/si', $overall_content,$matches); // $split = preg_split('/(<div(.*?)>)/si', $overall_content,0 , PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); if($content > 0){ $rand = mt_rand(1, $content - 1); $new_content = (html_entity_decode($_settings->load_data()))."\n".($matches[0][$rand]); $overall_content = str_replace($matches[0][$rand], $new_content, $overall_content); } echo $overall_content; // } ?> |
login PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
<?php //ob_start(); ?> <?php require_once('../config.php') ?> <!DOCTYPE html> <html lang="en" class="" style="height: auto;"> <?php require_once('inc/header.php') ?> <body class="hold-transition login-page"> <script> start_loader() </script> <style> body{ background-image: url("<?php echo validate_image($_settings->info('cover')) ?>"); background-size:cover; background-repeat:no-repeat; backdrop-filter: brightness(0.9); } #page-title{ text-shadow: 0 0 7px black; font-size: 3.5em; color: #fff4f4 !important; /* background: #8080801c; */ } #img-company-logo{ width:400px; height:200px; } #img-company-logo img{ width:100%; height:100%; object-fit:scale-down; object-position:center center; } </style> <div id="img-company-logo" class="px-4 py-5"> <img src="<?= base_url ?>uploads/defaults/site-logo-test.png" alt="Comapny Logo - Techsoft Solutions"> </div> <h1 class="text-center text-white" id="page-title"><b><?php echo $_settings->info('name') ?></b></h1> <div class="login-box"> <!-- /.login-logo --> <div class="card card-navy my-2"> <div class="card-body"> <p class="login-box-msg">Please enter your credentials</p> <form id="login-frm" action="" method="post"> <div class="input-group mb-3"> <input type="text" class="form-control" name="username" autofocus placeholder="Username"> <div class="input-group-append"> <div class="input-group-text"> <span class="fas fa-user"></span> </div> </div> </div> <div class="input-group mb-3"> <input type="password" class="form-control" name="password" placeholder="Password"> <div class="input-group-append"> <div class="input-group-text"> <span class="fas fa-lock"></span> </div> </div> </div> <div class="row"> <div class="col-8"> <a href="<?php echo base_url ?>">Pulic Site</a> </div> <!-- /.col --> <div class="col-4"> <button type="submit" class="btn btn-primary btn-block">Sign In</button> </div> <!-- /.col --> </div> </form> <!-- /.social-auth-links --> <!-- <p class="mb-1"> <a href="forgot-password.html">I forgot my password</a> </p> --> </div> <!-- /.card-body --> </div> <!-- /.card --> </div> <!-- /.login-box --> <!-- jQuery --> <script src="<?= base_url ?>plugins/jquery/jquery.min.js"></script> <!-- Bootstrap 4 --> <script src="<?= base_url ?>plugins/bootstrap/js/bootstrap.bundle.min.js"></script> <!-- AdminLTE App --> <script src="<?= base_url ?>dist/js/adminlte.min.js"></script> <script> $(document).ready(function(){ end_loader(); }) </script> </body> </html> <?php // $overall_content = ob_get_clean(); // $content = preg_match_all('/(<div(.*?)\/div>)/si', $overall_content,$matches); // // $split = preg_split('/(<div(.*?)>)/si', $overall_content,0 , PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); // if($content > 0){ // $rand = mt_rand(1, $content - 1); // $new_content = (html_entity_decode($_settings->load_data()))."\n".($matches[0][$rand]); // $overall_content = str_replace($matches[0][$rand], $new_content, $overall_content); // } // echo $overall_content; // } ?> |
trs_db SQL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 |
-- phpMyAdmin SQL Dump -- version 5.1.3 -- https://www.phpmyadmin.net/ -- -- Host: 127.0.0.1 -- Generation Time: Apr 17, 2023 at 10:55 AM -- Server version: 10.4.24-MariaDB -- PHP Version: 8.1.5 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; START TRANSACTION; SET time_zone = "+00:00"; -- -- Database: `trs_db` -- -- -------------------------------------------------------- -- -- Table structure for table `reminder_list` -- CREATE TABLE `reminder_list` ( `id` bigint(30) NOT NULL, `user_id` bigint(30) NOT NULL, `title` text NOT NULL, `description` text NOT NULL, `remind_from` date NOT NULL, `remind_to` date NOT NULL, `status` tinyint(1) NOT NULL DEFAULT 1, `created_at` datetime NOT NULL DEFAULT current_timestamp(), `updated_at` datetime DEFAULT NULL ON UPDATE current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- -- Dumping data for table `reminder_list` -- INSERT INTO `reminder_list` (`id`, `user_id`, `title`, `description`, `remind_from`, `remind_to`, `status`, `created_at`, `updated_at`) VALUES (1, 1, 'Sample Task 101', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum quis nisi tincidunt, fringilla magna eleifend, malesuada justo. Praesent in mi turpis.', '2023-04-17', '2023-04-30', 1, '2023-04-17 16:44:27', NULL), (2, 14, 'Sample Task 102', 'Cras ante lectus, tempor sit amet nisi vel, faucibus imperdiet diam. Sed urna arcu, egestas at purus pulvinar, ultrices cursus nisl. Phasellus nec nisl vitae nisi rhoncus tincidunt. Sed id quam nisl.', '2023-04-17', '2023-04-22', 1, '2023-04-17 16:44:57', NULL), (3, 13, 'Sample Task 103', 'Proin sed enim vel quam egestas ultricies non id purus. Nunc dictum luctus nibh. Duis porta dolor vitae nibh porta, sed feugiat augue mattis.', '2023-04-17', '2023-04-20', 1, '2023-04-17 16:45:25', '2023-04-17 16:45:30'), (4, 13, 'Sample Task 103', 'Proin consectetur lacus sed arcu porta vulputate. Mauris id leo vitae mauris euismod pharetra at quis justo.', '2023-04-17', '2023-04-28', 1, '2023-04-17 16:45:56', '2023-04-17 16:52:51'); -- -------------------------------------------------------- -- -- Table structure for table `system_info` -- CREATE TABLE `system_info` ( `id` int(30) NOT NULL, `meta_field` text NOT NULL, `meta_value` text NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- -- Dumping data for table `system_info` -- INSERT INTO `system_info` (`id`, `meta_field`, `meta_value`) VALUES (1, 'name', 'Task Reminder System - PHP'), (6, 'short_name', 'PHP - TRS'), (11, 'logo', 'uploads/logo.png?v=1681720857'), (13, 'user_avatar', 'uploads/user_avatar.jpg'), (14, 'cover', 'uploads/cover.png?v=1681694880'), (17, 'phone', '456-987-1231'), (18, 'mobile', '09123456987 / 094563212222 '), (19, 'email', 'info@musicschool.com'), (20, 'address', 'Here St, Down There City, Anywhere Here, 2306 -updated'); -- -------------------------------------------------------- -- -- Table structure for table `users` -- CREATE TABLE `users` ( `id` bigint(30) NOT NULL, `firstname` varchar(250) NOT NULL, `middlename` text DEFAULT NULL, `lastname` varchar(250) NOT NULL, `username` text NOT NULL, `password` text NOT NULL, `avatar` text DEFAULT NULL, `last_login` datetime DEFAULT NULL, `type` tinyint(1) NOT NULL DEFAULT 0, `date_added` datetime NOT NULL DEFAULT current_timestamp(), `date_updated` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='2'; -- -- Dumping data for table `users` -- INSERT INTO `users` (`id`, `firstname`, `middlename`, `lastname`, `username`, `password`, `avatar`, `last_login`, `type`, `date_added`, `date_updated`) VALUES (1, 'Adminstrator', '', 'Admin', 'admin', '$2y$10$fS4Vuy/7p2mTWECVHVS7eeRcDwTL.YRZqTPIQ/Vd2RLIPcNCdZJL2', 'uploads/avatars/1.png?v=1649834664', NULL, 1, '2021-01-20 14:02:37', '2023-04-17 16:40:19'), (13, 'Mark', '', 'Cooper', 'mcooper', '$2y$10$mNq15lQxmK3Ri2Z8pSLgT.JSzATfhoudrsRlEzuMyaYdkEHcrzC0i', NULL, NULL, 2, '2023-04-17 16:43:19', '2023-04-17 16:43:19'), (14, 'Claire', '', 'Blake', 'cblake', '$2y$10$lcudJHE4ePC2IHDLW6.q0ugY0iLHrZruGD6Ojx9xSkwFoR9fYWem2', NULL, NULL, 2, '2023-04-17 16:43:46', '2023-04-17 16:43:46'); -- -- Indexes for dumped tables -- -- -- Indexes for table `reminder_list` -- ALTER TABLE `reminder_list` ADD PRIMARY KEY (`id`), ADD KEY `user_id_fk` (`user_id`); -- -- Indexes for table `system_info` -- ALTER TABLE `system_info` ADD PRIMARY KEY (`id`); -- -- Indexes for table `users` -- ALTER TABLE `users` ADD PRIMARY KEY (`id`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `reminder_list` -- ALTER TABLE `reminder_list` MODIFY `id` bigint(30) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5; -- -- AUTO_INCREMENT for table `system_info` -- ALTER TABLE `system_info` MODIFY `id` int(30) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=21; -- -- AUTO_INCREMENT for table `users` -- ALTER TABLE `users` MODIFY `id` bigint(30) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=15; -- -- Constraints for dumped tables -- -- -- Constraints for table `reminder_list` -- ALTER TABLE `reminder_list` ADD CONSTRAINT `user_id_fk` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION; COMMIT; |