A comprehensive web-based restaurant table reservation system built with PHP, MySQL, HTML, and CSS.
RTRMS is a complete solution for managing restaurant reservations and operations. It serves two main user types:
- Customers: Can browse menus, view tables, make reservations, and manage their bookings
- Staff: Manage all restaurant operations including reservations, tables, menus, and customers
- π Book tables at preferred dates and times
- π½οΈ Browse restaurant menu items
- π View available tables with capacity information
- π Manage and track reservations
- β Cancel reservations if needed
- π€ Secure user authentication
- π Dashboard with key statistics
- β Approve/confirm reservations
- π½οΈ Manage restaurant tables
- π΄ Add/edit/delete menu items
- π₯ View and manage customers
- π Monitor daily reservations
- Backend: PHP 7.4+
- Database: MySQL 5.7+
- Frontend: HTML5, CSS3
- Security: Password hashing, prepared statements, session management
RTRMS_2/
β
βββ config/
β βββ database.php # Database connection
β βββ database_schema.sql # Database setup script
β
βββ auth/
β βββ login.php # User login
β βββ register_customer.php # Customer registration
β βββ register_staff.php # Staff registration (admin only)
β βββ logout.php # Logout handler
β
βββ customer/
β βββ dashboard.php # Customer home
β βββ make_reservation.php # Create reservation
β βββ view_reservations.php # View/manage reservations
β βββ menu.php # Browse menu
β βββ tables.php # View available tables
β
βββ staff/
β βββ dashboard.php # Admin home
β βββ manage_reservations.php # Manage all reservations
β βββ manage_tables.php # Add/edit/delete tables
β βββ manage_menu.php # Add/edit/delete menu items
β βββ manage_customers.php # View customers
β
βββ includes/
β βββ navbar.php # Navigation bar
β βββ footer.php # Footer
β βββ session_check.php # Session validation
β
βββ assets/
β βββ css/
β β βββ style.css # Main stylesheet
β βββ images/
β βββ (restaurant images)
β
βββ index.php # Landing page
- XAMPP or similar PHP/MySQL server
- PHP 7.4 or higher
- MySQL 5.7 or higher
Extract the RTRMS_2 folder to your htdocs directory:
C:\xampp\htdocs\RTRMS_2\
- Open phpMyAdmin (http://localhost/phpmyadmin)
- Click "New" to create a new database
- Name it:
rtrms_db - Click "Create"
- Select the database and go to "Import"
- Upload and execute the
config/database_schema.sqlfile
The database configuration is already set in config/database.php:
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'rtrms_db');Update these values if your MySQL credentials are different.
Open your browser and navigate to:
http://localhost/RTRMS_2/
- Email: demo@customer.com
- Password: Passw0rd! (or create a new account)
Note: Create a customer account using the registration page
- Email: admin@rtrms.com
- Password: Passw0rd!
Alternative:
- Email: manager@rtrms.com
- Password: Passw0rd!
β Password Hashing: Using PHP's password_hash() and password_verify()
β Prepared Statements: SQL injection protection
β Session Management: 30-minute session timeout
β Access Control: Role-based access for customers and staff
β Input Validation: Sanitized inputs throughout
β CSRF Protection: Form validation
staff
- staff_id (Primary Key)
- full_name
- email (Unique)
- password (hashed)
- role (admin, manager, staff)
- created_at, updated_at
customers
- customer_id (Primary Key)
- full_name
- email (Unique)
- phone
- password (hashed)
- created_at, updated_at
tables
- table_id (Primary Key)
- table_number (Unique)
- capacity
- location
- description
- status (available, occupied, maintenance)
reservations
- reservation_id (Primary Key)
- customer_id (Foreign Key)
- table_id (Foreign Key)
- reservation_date
- reservation_time
- number_of_guests
- reservation_status (pending, confirmed, cancelled, completed)
- notes
- created_at, updated_at
menu_items
- item_id (Primary Key)
- item_name
- category (Appetizer, Main Course, Dessert, Beverage)
- description
- price
- availability (available, unavailable)
- created_at, updated_at
orders (Optional - Advanced Feature)
- order_id (Primary Key)
- customer_id (Foreign Key)
- reservation_id (Foreign Key)
- order_date
- total_amount
- status (pending, preparing, ready, delivered, cancelled)
- Primary: Dark Red (#8B0000)
- Secondary: Gold (#D4AF37)
- Background: Light Gray (#F5F5F5)
- Text: Black (#333), Dark Gray (#666)
- Mobile-friendly layout
- Tablet optimized
- Desktop full experience
- Breakpoints at 768px and 480px
- Register/Login
- Browse available tables and menu
- Select table and date/time
- Submit reservation
- Wait for staff confirmation
- View/manage reservations
- Cancel if needed
- Login to staff dashboard
- View pending reservations
- Confirm or reject reservations
- Manage tables (add/edit/delete)
- Manage menu items
- View customer information
- Monitor daily activities
Edit /assets/css/style.css and modify CSS variables:
:root {
--primary-color: #8B0000;
--secondary-color: #D4AF37;
/* ... other colors ... */
}In database and style.css badge classes
Add to select options in menu management pages
For issues or questions:
- Check database connection in
config/database.php - Verify MySQL service is running
- Ensure folder permissions are correct
- Check browser console for JavaScript errors
This project is provided as-is for educational and commercial use.
This system demonstrates:
- β MVC pattern principles
- β Database design and normalization
- β Secure authentication
- β Role-based access control
- β Responsive web design
- β Form validation
- β Session management
- β SQL best practices
- Email notifications for reservations
- SMS notifications
- Reservation calendar view
- Payment integration
- Review and rating system
- Online ordering
- QR code integration
- Multi-language support
- Analytics dashboard
- Export to PDF/Excel
Version: 1.0
Last Updated: April 2026
Developed with: PHP, MySQL, HTML5, CSS3