Project: Beginners Hotel Management System
Introduction: It is simple management system containing two sections:
1.User : User can find out whether their is any room available at any particular date
2.Admin: Admin can manage,update and create new bookings
Difficulty: Beginner
Estimated Time: 30 minutes
Languages: PHP and Mysql
Tools Required: Xampp, Notepad++
DownloadStep1. Database creation- Open PHPMyAdmin using http://localhost/phpmyadmin in XAMPP
- Create Database: HOTEL
- Create Table:
CREATE TABLE IF NOT EXISTS `rooms_info` (
`booking_id` int(11) NOT NULL AUTO_INCREMENT,
`room_no` varchar(55) NOT NULL,
`check_in` date NOT NULL,
`check_out` date NOT NULL,
`no_of_rooms` int(11) NOT NULL,
PRIMARY KEY (`booking_id`),
KEY `room_no` (`room_no`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=10;
Insert some dummy data for a startINSERT INTO `rooms_info` (`booking_id`, `room_no`, `check_in`, `check_out`, `no_of_rooms`) VALUES
(1, '1', '2013-01-02', '2013-01-03', 3),
(2, '2', '2013-01-03', '2013-01-04', 3),
(3, '3', '2013-01-01', '2013-01-04', 2),
(4, '4,5', '2013-01-04', '2013-01-05', 2),
(5, '2,3,4', '2013-01-05', '2013-01-25', 2),
(6, '5,6,8', '2013-02-07', '2013-02-28', 3),
(7, '4,5,6', '2013-10-05', '2013-11-09', 3),
(8, '2,3,4', '2013-03-05', '2013-03-08', 3),
(9, '5,6,7', '2013-01-05', '2013-01-08', 3);
Step2. User InterfaceCreate index.php file where user can submit reservation form as well as gets update about reservation status
index.php<?php
include('config.php');
if (isset($_GET['submit'])) {
/* Getting data from form submitted at index.php page */
$user_checkin_date = $_GET['checkin_date'];
$user_checkin_month = $_GET['checkin_month'];
$user_checkin_year = $_GET['checkin_year'];
$user_checkout_date = $_GET['checkout_date'];
$user_checkout_month = $_GET['checkout_month'];
$user_checkout_year = $_GET['checkout_year'];
$persons = $_GET['persons']; // this variable will be used when we scale up this application
$rooms = $_GET['rooms'];
/* End of collecting data */
//Check for any invalid submissions, you should apply as much validation as possible
if ($user_checkin_month == 2 || $user_checkin_month == 4 || $user_checkin_month == 6 || $user_checkin_month == 9 || $user_checkin_month == 11 || $user_checkout_month == 2 || $user_checkout_month == 4 || $user_checkout_month == 6 || $user_checkout_month == 9 || $user_checkout_month == 11) {
if ($user_checkin_date >= 31 || $user_checkout_date >= 31) {
$error = 1;
$error_type[] = "For month $user_checkin_month 31st is invalid Date";
} else if ($user_checkin_month == 2 || $user_checkout_month == 2) {
if ($user_checkin_date >= 28 || $user_checkout_date >= 28) {
$error = 1;
$error_type[] = 'Feb Date Error';
}
} else {
$error = 0;
}
} else {
$error = 0;
}
if ($user_checkin_date >= $user_checkout_date) {
$error = 1;
$error_type[] = "Check out date can't be equal or lesser than check in date , please try again!!";
}
// converting date into yyyy-mm-dd format
$user_checkin_date = "$user_checkin_year" . "-" . "$user_checkin_month" . "-" . "$user_checkin_date";
$user_checkout_date = "$user_checkout_year" . "-" . "$user_checkout_month" . "-" . "$user_checkout_date";
// info convert into unix timestamp
$user_checkin_date = strtotime($user_checkin_date);
$user_checkout_date = strtotime($user_checkout_date);
global $total_rooms_available;
$total_rooms_available = 10;
while ($row = mysql_fetch_array($result)) {
$check_in = $row['check_in'];
$check_out = $row['check_out'];
$no_of_rooms = $row['no_of_rooms'];
$check_in = strtotime($check_in);
$check_out = strtotime($check_out);
// test for availability with check in and check out date
if ($check_in <= $user_checkin_date && $user_checkin_date < $check_out) {
$room_available = 0;
$total_rooms_available = $total_rooms_available - $no_of_rooms;
} // end of if check in loop
else {
if ($check_in < $user_checkout_date && $user_checkout_date <= $check_out) {
$room_available = 0;
$total_rooms_available = $total_rooms_available - $no_of_rooms;
} // end of if checkout loop
else {
$room_available = 1;
} // end of else check out loop
}
}
}// end of if submit button has pressed
?>
<h3>Reservation:</h3>
<form action="index.php" id="reservation-form">
<fieldset>
<div class="field"><label>Check In:</label><select class="select1" name="checkin_date"><option>01</option><option>02</option><option>03</option><option>04</option><option>05</option><option>06</option><option>07</option><option>08</option><option>09</option><option>10</option><option>11</option><option>12</option><option>13</option><option>14</option><option>15</option><option>16</option><option>17</option><option>18</option><option>19</option><option>20</option><option>21</option><option>22</option><option>23</option><option>24</option><option>25</option><option>26</option><option>27</option><option>28</option><option>29</option><option>30</option><option>31</option></select><select class="select1" name="checkin_month"><option>01</option><option>02</option><option>03</option><option>04</option><option>05</option><option>06</option><option>07</option><option>08</option><option>09</option><option>10</option><option>11</option><option>12</option></select><select class="select2" name="checkin_year"><option>2013</option><option>2014</option><option>2015</option><option>2016</option></select></div>
<div class="field"><label>Check Out:</label><select class="select1" name="checkout_date"><option>01</option><option>02</option><option>03</option><option>04</option><option>05</option><option>06</option><option>07</option><option>08</option><option>09</option><option>10</option><option>11</option><option>12</option><option>13</option><option>14</option><option>15</option><option>16</option><option>17</option><option>18</option><option>19</option><option>20</option><option>21</option><option>22</option><option>23</option><option>24</option><option>25</option><option>26</option><option>27</option><option>28</option><option>29</option><option>30</option><option>31</option></select><select class="select1" name="checkout_month"><option>01</option><option>02</option><option>03</option><option>04</option><option>05</option><option>06</option><option>07</option><option>08</option><option>09</option><option>10</option><option>11</option><option>12</option></select><select class="select2" name="checkout_year"><option>2013</option><option>2014</option><option>2015</option><option>2016</option></select></div>
<div class="field"><label>Persons:</label> <select class="select1" name="persons"><option>1</option><option>2</option><option>3</option><option>4</option><option>5</option></select> </div>
<div class="field"><label>Rooms:</label><select class="select1" name="rooms"><option>1</option><option>2</option><option>3</option><option>4</option><option>5</option></select></div>
<div class="button"><span><span><input type="submit" name="submit" value="Check Availability" /></span></span></div>
</fieldset>
</form>
<?php if (isset($_GET['submit'])) { ?>
<h2>Reservation Update!</h2>
<?php
if ($error) {
foreach ($error_type as $value) {
echo"$value<br />";
}
} else {
if ($rooms < $room_available && $room_available != 0) {
echo "Only $room_available room is available instead of $rooms rooms required by you";
} else {
echo "$total_rooms_available rooms are available , call 0000000(hotel number) to book now";
}
}// end of else about check in date lesser than check out date
} // end of if isset get submit loop
?>
Step3. Admin Section In admin section, we will need mainly three files and one class, first admin/index.php and second admin/login_success.php third admin/Logout.php and fourth one is third party class
tc_calendar(optional) which helps us to show javascript calendar.
- Create new folder Admin
- Create index file and paste php source shown below
// user name and password for admin, preferred way is to create database user table inside database
$username = "hotel";
$password = "123456";
if (isset($_POST['Submit'])) {
// username and password sent from form
$myusername = $_POST['myusername'];
$mypassword = $_POST['mypassword'];
// To protect MySQL injection
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
} // end of isset post submit
?>
<p><br /><br />Welcome to Administrator Page of <a href="http://hotel.url">Hotel!</a></p>
<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form name="form1" method="post" action="./">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3"><strong>Member Login </strong></td>
</tr>
<tr>
<td width="78">Username</td>
<td width="6">:</td>
<td width="294"><input name="myusername" type="text" id="myusername"></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input name="mypassword" type="password" id="mypassword"></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="submit" name="Submit" value="Login"></td>
</tr>
<?php
if (isset($_POST['Submit'])) {
echo"<tr><td COLSPAN=3>";
// If result matched $myusername and $mypassword, table row must be 1 row
if ($myusername == $username && $mypassword == $password) {
// Register $myusername, $mypassword and redirect to file "login_success.php"
$_SESSION['username'] = $username;
header("location:login_success.php");
} else {
echo "<p style=\"background-color:#FFE0FF\">Wrong Username or Password ! <a href=\"../Admin\">Login Again</a></p>";
}
echo"</td></tr>";
}
?>
</table>
</td>
</form>
</tr>
</table>
login_sucess.php<?php
############### Code
// Check if session is not registered, redirect back to main page.
// Put this code in first line of web page.
session_start();
if (!isset($_SESSION["username"])) {
echo"Invalid username and password<br />";
echo"Please try again";
echo"<a href=\"./index.php\">Click Here</a>";
header("location:index.php");
}
include("../config.php");
?>
<script language="javascript" src="calendar.js"></script>
<h1> Admin Page </h1>
<p><br /><br />Welcome to Administrator Page of <a href="http://hotel.url">Hotel!</a></p>
<?php
if (isset($_SESSION["username"])) {
echo"<a href=\"./Logout.php\">Log Out!</a>";
}
if (isset($_POST['submit'])) {
$booking_1 = $_POST['booking1'];
$room_no_1 = $_POST['room_no1'];
$check_in_1 = $_POST['check_in1'];
$check_out_1 = $_POST['check_out1'];
$no_of_rooms_1 = $_POST['no_of_rooms1'];
$result = mysql_query("UPDATE `hotel`.`rooms_info` SET `room_no` = '$room_no_1',
`check_in` = '$check_in_1',
`check_out` = '$check_out_1',
`no_of_rooms` = '$no_of_rooms_1' WHERE `rooms_info`.`booking_id` = $booking_1;")
or die(mysql_error());
$booking_2 = $_POST['booking2'];
$room_no_2 = $_POST['room_no2'];
$check_in_2 = $_POST['check_in2'];
$check_out_2 = $_POST['check_out2'];
$no_of_rooms_2 = $_POST['no_of_rooms2'];
$result = mysql_query("UPDATE `hotel`.`rooms_info` SET `room_no` = '$room_no_2',
`check_in` = '$check_in_2',
`check_out` = '$check_out_2',
`no_of_rooms` = '$no_of_rooms_2' WHERE `rooms_info`.`booking_id` = $booking_2;")
or die(mysql_error());
$booking_3 = $_POST['booking3'];
$room_no_3 = $_POST['room_no3'];
$check_in_3 = $_POST['check_in3'];
$check_out_3 = $_POST['check_out3'];
$no_of_rooms_3 = $_POST['no_of_rooms3'];
$result = mysql_query("UPDATE `hotel`.`rooms_info` SET `room_no` = '$room_no_3',
`check_in` = '$check_in_3',
`check_out` = '$check_out_3',
`no_of_rooms` = '$no_of_rooms_3' WHERE `rooms_info`.`booking_id` = $booking_3;")
or die(mysql_error());
$booking_4 = $_POST['booking4'];
$room_no_4 = $_POST['room_no4'];
$check_in_4 = $_POST['check_in4'];
$check_out_4 = $_POST['check_out4'];
$no_of_rooms_4 = $_POST['no_of_rooms4'];
$result = mysql_query("UPDATE `hotel`.`rooms_info` SET `room_no` = '$room_no_4',
`check_in` = '$check_in_4',
`check_out` = '$check_out_4',
`no_of_rooms` = '$no_of_rooms_4' WHERE `rooms_info`.`booking_id` = $booking_4;")
or die(mysql_error());
$booking_5 = $_POST['booking5'];
$room_no_5 = $_POST['room_no5'];
$check_in_5 = $_POST['check_in5'];
$check_out_5 = $_POST['check_out5'];
$no_of_rooms_5 = $_POST['no_of_rooms5'];
$result = mysql_query("UPDATE `hotel`.`rooms_info` SET `room_no` = '$room_no_5',
`check_in` = '$check_in_5',
`check_out` = '$check_out_5',
`no_of_rooms` = '$no_of_rooms_5' WHERE `rooms_info`.`booking_id` = $booking_5;")
or die(mysql_error());
$booking_6 = $_POST['booking6'];
$room_no_6 = $_POST['room_no6'];
$check_in_6 = isset($_REQUEST["date6"]) ? $_REQUEST["date6"] : "";
$check_out_6 = isset($_REQUEST["date7"]) ? $_REQUEST["date7"] : "";
$no_of_rooms_6 = $_POST['no_of_rooms6'];
if ($room_no_6 != '') {
$result = mysql_query("INSERT INTO `hotel`.`rooms_info` (`booking_id`, `room_no`, `check_in`, `check_out`, `no_of_rooms`) VALUES ('$booking_6', '$room_no_6', '$check_in_6', '$check_out_6', '$no_of_rooms_6');")
or die(mysql_error());
}
echo "<p style=\"background-color:#E0FFFF;\">Saved Successfully, View changes on Site <a href=\"../\" target=\"_blank\">Click Here</a></p>";
}
$result = mysql_query("SELECT *
FROM `rooms_info`
ORDER BY `rooms_info`.`booking_id` DESC
LIMIT 0 , 5")
or die(mysql_error());
while ($data = mysql_fetch_array($result)) {
$booking_id[] = $data['booking_id'];
$room_no[] = $data['room_no'];
$check_in[] = $data['check_in'];
$check_out[] = $data['check_out'];
$no_of_rooms[] = $data['no_of_rooms'];
}
$new_booking_id = $booking_id[0] + 1;
?>
<table border="1">
<tr><th>Booking Details</th><th></th><th>New Booking</th><th>Booked Rooms</th></tr>
<tr><td>
<table>
<form id="form1" name="form1" method="post" action="">
<?php
//get class into the page
require_once('./classes/tc_calendar.php');
//instantiate class and set properties
$myCalendar = new tc_calendar("date6", true);
$myCalendar->setIcon("./images/iconCalendar.gif");
$myCalendar->setDate(2, 1, 2013);
$myCalendar7 = new tc_calendar("date7", true);
$myCalendar7->setIcon("./images/iconCalendar.gif");
$myCalendar7->setDate(3, 1, 2013);
?>
<tr><td> <label>Booking ID</label></td><td> <input name="booking1" type="text" size="32" maxlength="40" value="<?php echo $booking_id[0]; ?>" /></td></tr>
<tr><td><label>Room No</label></td><td> <input name="room_no1" type="text" size="32" maxlength="40" value="<?php echo $room_no[0]; ?>" /></td></tr>
<tr><td><label>Check In</label> </td><td><input name="check_in1" type="text" size="32" maxlength="40" value="<?php echo $check_in[0]; ?>" /></td></tr>
<tr><td><label>Check Out</label> </td><td><input name="check_out1" type="text" size="32" maxlength="40" value="<?php echo $check_out[0]; ?>" /></td></tr>
<tr><td><label>No of Rooms</label> </td><td><input name="no_of_rooms1" type="text" size="32" maxlength="40" value="<?php echo $no_of_rooms[0]; ?>" /></td></tr><br />
</table>
<table>
<tr><td> <label>Booking ID</label></td><td> <input name="booking2" type="text" size="32" maxlength="40" value="<?php echo $booking_id[1]; ?>" /></td></tr>
<tr><td><label>Room No</label></td><td> <input name="room_no2" type="text" size="32" maxlength="40" value="<?php echo $room_no[1]; ?>" /></td></tr>
<tr><td><label>Check In</label> </td><td><input name="check_in2" type="text" size="32" maxlength="40" value="<?php echo $check_in[1]; ?>" /></td></tr>
<tr><td><label>Check Out</label> </td><td><input name="check_out2" type="text" size="32" maxlength="40" value="<?php echo $check_out[1]; ?>" /></td></tr>
<tr><td><label>No of Rooms</label> </td><td><input name="no_of_rooms2" type="text" size="32" maxlength="40" value="<?php echo $no_of_rooms[1]; ?>" /></td></tr><br />
</table>
<table>
<tr><td> <label>Booking ID</label></td><td> <input name="booking3" type="text" size="32" maxlength="40" value="<?php echo $booking_id[2]; ?>" /></td></tr>
<tr><td><label>Room No</label></td><td> <input name="room_no3" type="text" size="32" maxlength="40" value="<?php echo $room_no[2]; ?>" /></td></tr>
<tr><td><label>Check In</label> </td><td><input name="check_in3" type="text" size="32" maxlength="40" value="<?php echo $check_in[2]; ?>" /></td></tr>
<tr><td><label>Check Out</label> </td><td><input name="check_out3" type="text" size="32" maxlength="40" value="<?php echo $check_out[2]; ?>" /></td></tr>
<tr><td><label>No of Rooms</label> </td><td><input name="no_of_rooms3" type="text" size="32" maxlength="40" value="<?php echo $no_of_rooms[2]; ?>" /></td></tr><br />
</table>
<table>
<tr><td> <label>Booking ID</label></td><td> <input name="booking4" type="text" size="32" maxlength="40" value="<?php echo $booking_id[3]; ?>" /></td></tr>
<tr><td><label>Room No</label></td><td> <input name="room_no4" type="text" size="32" maxlength="40" value="<?php echo $room_no[3]; ?>" /></td></tr>
<tr><td><label>Check In</label> </td><td><input name="check_in4" type="text" size="32" maxlength="40" value="<?php echo $check_in[3]; ?>" /></td></tr>
<tr><td><label>Check Out</label> </td><td><input name="check_out4" type="text" size="32" maxlength="40" value="<?php echo $check_out[3]; ?>" /></td></tr>
<tr><td><label>No of Rooms</label> </td><td><input name="no_of_rooms4" type="text" size="32" maxlength="40" value="<?php echo $no_of_rooms[3]; ?>" /></td></tr>
</table>
<table>
<tr><td> <label>Booking ID</label></td><td> <input name="booking5" type="text" size="32" maxlength="40" value="<?php echo $booking_id[4]; ?>" /></td></tr>
<tr><td><label>Room No</label></td><td> <input name="room_no5" type="text" size="32" maxlength="40" value="<?php echo $room_no[4]; ?>" /></td></tr>
<tr><td><label>Check In</label> </td><td><input name="check_in5" type="text" size="32" maxlength="40" value="<?php echo $check_in[4]; ?>" /></td></tr>
<tr><td><label>Check Out</label> </td><td><input name="check_out5" type="text" size="32" maxlength="40" value="<?php echo $check_out[4]; ?>" /></td></tr>
<tr><td><label>No of Rooms</label> </td><td><input name="no_of_rooms5" type="text" size="32" maxlength="40" value="<?php echo $no_of_rooms[4]; ?>" /></td></tr><br />
</table>
</td>
<td> </td>
<td>
<table>
<tr><td> <label>Booking ID</label></td><td> <input name="booking6" type="text" size="32" maxlength="40" value="<?php echo $new_booking_id; ?>" /></td></tr>
<tr><td><label>Room No</label></td><td> <input name="room_no6" type="text" size="32" maxlength="40" value="" /></td></tr>
<tr><td><label>Check In</label> </td><td><?php //output the calendar
$myCalendar->writeScript();
?></td></tr>
<tr><td><label>Check Out</label> </td><td><?php //output the calendar
$myCalendar7->writeScript();
?></td></tr>
<tr><td><label>No of Rooms</label> </td><td><input name="no_of_rooms6" type="text" size="32" maxlength="40" value="" /></td></tr><br />
</table>
</td>
<td>
<?php
$result = mysql_query("SELECT *
FROM `rooms_info`
ORDER BY `rooms_info`.`booking_id` DESC")
or die(mysql_error());
global $total_rooms_available;
$total_rooms_available = 10;
$booked_room = array();
$today_date = date("Y-m-d");
$today_date = strtotime($today_date);
$tommorow_date = date("Y-m-d", strtotime("+1 day"));
$tommorow_date = strtotime($tommorow_date);
while ($row = mysql_fetch_array($result)) {
$check_in = $row['check_in'];
$check_out = $row['check_out'];
$room_no = $row['room_no'];
$no_of_rooms = $row['no_of_rooms'];
$check_in = strtotime($check_in);
$check_out = strtotime($check_out);
// test for availability with check in and check out date
if ($check_in <= $today_date && $today_date < $check_out) {
$room_available = 0;
$total_rooms_available = $total_rooms_available - $no_of_rooms;
$booked_room[] = $room_no;
} // end of if check in loop
else {
if ($check_in < $tommorow_date && $tommorow_date <= $check_out) {
$room_available = 0;
$total_rooms_available = $total_rooms_available - $no_of_rooms;
$booked_room[] = $room_no;
} // end of if checkout loop
else {
$room_available = 1;
} // end of else check out loop
}
}
echo "Available Rooms: $total_rooms_available";
echo "<br />Booked Room No. <br />";
foreach ($booked_room as $value) {
echo "<br />$value<br />";
}
?>
</td>
</tr>
<tr><td><input name="submit" type="submit" value="Save" /> </td></tr>
</form>
</table>
</div>
</body>
</html>
Logout.php<?php
// Put this code in first line of web page.
session_start();
session_destroy();
header("location:index.php");
?>
In this tutorial we have covered basics of hotel management system.You can extend it as much as you want. I hope it helped you to understand logic behind these type of systems.