CHAPTER 6
Coding
Index.php
<?php
include('functions.php');
if(isset($_GET['page']))
$page = $_GET['page'];
else
$page = null;
if(isset($_GET['action']))
$action = $_GET['action'];
else
$action = null; //echo md5(123);
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SM PAYROLL</title>
<!-- Core CSS - Include with every page -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="font-awesome/css/font-awesome.css" rel="stylesheet">
<!-- SB Admin CSS - Include with every page -->
<link href="css/sb-admin.css" rel="stylesheet">
</head>
<body>
<div class="container">
<?php require_once 'controller/IndexController.php'; ?>
</div>
<!-- Core Scripts - Include with every page -->
<script src="js/jquery-1.10.2.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/plugins/metisMenu/jquery.metisMenu.js"></script>
<!-- SB Admin Scripts - Include with every page -->
<script src="js/sb-admin.js"></script>
</body>
</html>
Login.php
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="login-panel panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Please Sign In</h3>
</div>
<div class="panel-body">
32 | P a g e
<form role="form" action="index.php?page=index&action=check_user_process"
method="post"> <fieldset>
<div class="form-group">
<select class="form-control" placeholder="User Type" name="user_type"
id="user_type" autofocus>
<div class="form-group">
<input class="form-control" placeholder="E-mail" name="emp_email"
type="email">
</div>
<div class="form-group">
<input class="form-control" placeholder="Password" name="password"
type="password" value="">
</div>
<div class="checkbox">
<label>
<input name="remember" type="checkbox" value="Remember
Me">Remember Me
</label>
</div>
<!-- Change this to a button or input when using this as a form -->
<button type="submit" name="submit" class="btn btn-lg btn-success btn-block">Login</button>
</fieldset>
</form>
</div>
</div>
</div>
</div>
Dbclass.php
<?php
class Model_DBClass {
public $_hostName = "localhost";
public $_userName = "root";
public $_userPass = "root123";
public $_dbName = "sm_payroll";
protected $_link;
function __construct(){
if(!$this->_link = @mysql_pconnect($this->_hostName, $this->_userName,
$this->_userPass)){
echo 'Could not connect to the database Server!';
}
mysql_select_db($this->_dbName, $this->_link);
mysql_query('SET CHARACTER SET utf8');
mysql_query("SET SESSION collation_connection= 'utf8_general_ci'");
}
33 | P a g e
public function doQuery($query){
$result = mysql_query($query, $this->_link);
return $result;
}
public function fetchObject($result){
$row = mysql_fetch_object($result);
return $row;
}
public function fetchArray($result){
$row1 = mysql_fetch_array($result);
return $row1;
}
public function numRows($result){
$num = mysql_num_rows($result);
return $num;
}
public function test_db(){
echo ("<script>window.alert('Check test DBclass successfully.');</script>");
}
function __destruct(){
//echo "<script>window.alert('Calling destructor.');</script>";
}
}
Sm_payroll_model.php
<?php
require_once 'dbclass.php';
class Model_sm_payroll extends Model_DBClass {
/*
* Function for COMPANY
*/
public function addCompany($data){
$query = "INSERT INTO company
SET
com_name = '{$data[com_name]}',
com_address = '{$data[com_address]}',
com_phone = '{$data[com_phone]}',
com_email = '{$data[com_email]}',
com_beginning= '{$data[com_beginning]}'";
$result = mysql_query($query);
return $result;
}
public function editCompany($data){
$query = "UPDATE company
SET com_name = '{$data[com_name]}',
com_address = '{$data[com_address]}',
34 | P a g e
com_phone = '{$data[com_phone]}',
com_email = '{$data[com_email]}',
com_beginning= '{$data[com_beginning]}'
WHERE com_id = '{$data[com_id]}'";
$result = mysql_query($query);
return $result;
}
public function getCompany($com_id){
$query = "SELECT * FROM company WHERE com_id='$com_id' ORDER BY com_id";
$result = mysql_query($query);
return $result;
}
/*
* Function for DEPARTMENT
*/
public function addDepartment($data){
$query = "INSERT INTO department
SET dep_name = '{$data[dep_name]}'";
$result = mysql_query($query);
return $result;
}
public function editDepartment($data){
$query = "UPDATE department
SET dep_name = '{$data[dep_name]}'
WHERE dep_id = '{$data[dep_id]}'";
$result = mysql_query($query);
return $result;
}
public function getDepartment($dep_id){
$query = "SELECT * FROM department WHERE dep_id='{$dep_id}' ORDER BY dep_id";
$result = mysql_query($query);
return $result;
}
/*
* Function for EMPLOYEE
*/
public function addEmployee($data){
$query = "INSERT INTO employee
SET
emp_com_id = '{$data[emp_com_id]}',
emp_name = '{$data[emp_name]}',
emp_father_name =
'{$data[emp_father_name]}',
emp_dep_id = '{$data[emp_dep_id]}',
emp_designation =
'{$data[emp_designation]}',
emp_joining = '{$data[emp_joining]}',
emp_sex = '{$data[emp_sex]}',
emp_dob = '{$data[emp_dob]}',
35 | P a g e
emp_blood_group =
'{$data[emp_blood_group]}',
emp_address = '{$data[emp_address]}',
emp_phone = '{$data[emp_phone]}',
emp_email = '{$data[emp_email]}'";
mysql_query($query) or die('Error in insert - '.mysql_error());
}
public function editEmployee($data){
$query = "UPDATE employee
SET
emp_com_id = '{$data[emp_com_id]}',
emp_name = '{$data[emp_name]}',
emp_father_name =
'{$data[emp_father_name]}',
emp_dep_id = '{$data[emp_dep_id]}',
emp_designation =
'{$data[emp_designation]}',
emp_joining = '{$data[emp_joining]}',
emp_sex = '{$data[emp_sex]}',
emp_dob = '{$data[emp_dob]}',
emp_blood_group =
'{$data[emp_blood_group]}',
emp_address = '{$data[emp_address]}',
emp_phone = '{$data[emp_phone]}',
emp_email = '{$data[emp_email]}'
WHERE emp_id = '{$data[emp_id]}'"; //echo $query;
exit;
mysql_query($query) or die('Error in Update - '.mysql_error());
}
public function getEmployee($emp_id){
$query = "SELECT * FROM employee WHERE emp_id='{$emp_id}' ORDER BY
emp_designation"; //echo $query;exit;
$result = mysql_query($query) or die('Error in insert - '.mysql_error());
return $result;
}
}
SQL
CREATE DATABASE IF NOT EXISTS sm_payroll;
USE sm_payroll;
CREATE TABLE `attendence` (
`att_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`att_emp_id` int(10) unsigned DEFAULT NULL,
`att_date` date NOT NULL COMMENT ' indicate the Month/Year of the attendence\r\n & also vouchar date',
`att_value` int(10) unsigned NOT NULL,
`att_status` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT ' 1 if Payroll created, 0 if Not created',
PRIMARY KEY (`att_id`),
KEY `FK_attendence_1` (`att_emp_id`),
36 | P a g e
KEY `Index_3` (`att_status`),
CONSTRAINT `FK_attendence_1` FOREIGN KEY (`att_emp_id`) REFERENCES `employee` (`emp_id`)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1;
CREATE TABLE `comdep` (
`comdep_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`comdep_com_id` int(10) unsigned NOT NULL,
`comdep_dep_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`comdep_id`),
KEY `FK_comdep_1` (`comdep_com_id`),
KEY `FK_comdep_2` (`comdep_dep_id`),
CONSTRAINT `FK_comdep_1` FOREIGN KEY (`comdep_com_id`) REFERENCES `company` (`com_id`)
ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `FK_comdep_2` FOREIGN KEY (`comdep_dep_id`) REFERENCES `department` (`dep_id`)
ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
CREATE TABLE `company` (
`com_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`com_name` varchar(45) NOT NULL,
`com_address` varchar(45) DEFAULT NULL,
`com_phone` varchar(45) DEFAULT NULL,
`com_email` varchar(45) DEFAULT NULL,
`com_beginning` date NOT NULL,
PRIMARY KEY (`com_id`)
) ENGINE=InnoDB AUTO_INCREMENT=158 DEFAULT CHARSET=latin1;
CREATE TABLE `department` (
`dep_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`dep_name` varchar(45) NOT NULL,
PRIMARY KEY (`dep_id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;
CREATE TABLE `employee` (
`emp_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`emp_com_id` int(10) unsigned NOT NULL,
`emp_dep_id` int(10) unsigned NOT NULL,
`emp_name` varchar(25) NOT NULL,
`emp_father_name` varchar(25) DEFAULT NULL,
`emp_designation` varchar(25) DEFAULT NULL,
`emp_joining` date DEFAULT NULL,
`emp_sex` varchar(10) DEFAULT NULL,
`emp_dob` date DEFAULT NULL,
`emp_blood_group` varchar(10) DEFAULT NULL,
`emp_address` varchar(45) DEFAULT NULL,
`emp_phone` varchar(45) NOT NULL,
`emp_email` varchar(45) NOT NULL,
PRIMARY KEY (`emp_id`),
KEY `FK_employee_1` (`emp_com_id`),
KEY `FK_employee_2` (`emp_dep_id`),
CONSTRAINT `FK_employee_1` FOREIGN KEY (`emp_com_id`) REFERENCES `company` (`com_id`)
ON DELETE CASCADE ON UPDATE CASCADE,
37 | P a g e
CONSTRAINT `FK_employee_2` FOREIGN KEY (`emp_dep_id`) REFERENCES `department` (`dep_id`)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=latin1;
DROP TABLE IF EXISTS `payhead`;
CREATE TABLE `payhead` (
`payh_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`payh_name` varchar(45) NOT NULL,
`payh_calculation_type` tinyint(3) unsigned NOT NULL COMMENT '1=Attendance, 2=On Computed ,
3=Flat Rate, 4=User Defined [ 5=Loan( reducing upto loan amount), 6=PF( increasing PF amount) ]',
`payh_e_or_d` tinyint(3) unsigned NOT NULL COMMENT '1=earning, 2=deduction',
PRIMARY KEY (`payh_id`),
KEY `Index_2` (`payh_id`,`payh_calculation_type`),
KEY `Index_3` (`payh_e_or_d`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
CREATE TABLE `payhead_details` (
`payh_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`payh_computed_on` int(10) unsigned NOT NULL COMMENT 'list of existing payh_id',
`payh_parcentage` int(11) unsigned NOT NULL,
PRIMARY KEY (`payh_id`),
KEY `Index_2` (`payh_id`,`payh_computed_on`),
CONSTRAINT `FK_payhead_details_1` FOREIGN KEY (`payh_id`) REFERENCES `payhead` (`payh_id`)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
CREATE TABLE `payroll` (
`payr_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`payr_emp_id` int(10) unsigned NOT NULL,
`payr_att_id` int(10) unsigned NOT NULL,
`payr_sal_id` int(10) unsigned NOT NULL,
`payr_amount` double unsigned NOT NULL,
`payr_date` date NOT NULL,
PRIMARY KEY (`payr_id`),
KEY `FK_payroll_1` (`payr_att_id`),
KEY `FK_payroll_2` (`payr_sal_id`),
KEY `FK_payroll_3` (`payr_emp_id`),
CONSTRAINT `FK_payroll_1` FOREIGN KEY (`payr_att_id`) REFERENCES `attendence` (`att_id`) ON
DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `FK_payroll_2` FOREIGN KEY (`payr_sal_id`) REFERENCES `salary` (`sal_id`) ON
DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `FK_payroll_3` FOREIGN KEY (`payr_emp_id`) REFERENCES `employee` (`emp_id`) ON
DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=latin1;
CREATE TABLE `salary` (
`sal_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`sal_emp_id` int(10) unsigned NOT NULL,
`sal_payh_id` int(10) unsigned NOT NULL,
`sal_effective_date` date NOT NULL,
PRIMARY KEY (`sal_id`),
KEY `FK_salary_2` (`sal_payh_id`),
38 | P a g e
KEY `Index_4` (`sal_emp_id`,`sal_payh_id`),
CONSTRAINT `FK_salary_1` FOREIGN KEY (`sal_emp_id`) REFERENCES `employee` (`emp_id`) ON
DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `FK_salary_2` FOREIGN KEY (`sal_payh_id`) REFERENCES `payhead` (`payh_id`) ON
DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;
CREATE TABLE `salary_details` (
`sal_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`sal_base_amount` double NOT NULL,
`sal_update_amount` double DEFAULT '0',
PRIMARY KEY (`sal_id`),
CONSTRAINT `FK_salary_details_1` FOREIGN KEY (`sal_id`) REFERENCES `salary` (`sal_id`) ON
DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;
CREATE TABLE `user` (
`user_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_emp_id` int(10) unsigned NOT NULL,
`user_type` varchar(45) NOT NULL,
`user_password` varchar(45) NOT NULL,
`user_passwordmd5` varchar(45) NOT NULL,
PRIMARY KEY (`user_id`),
KEY `FK_user_1` (`user_emp_id`),
CONSTRAINT `FK_user_1` FOREIGN KEY (`user_emp_id`) REFERENCES `employee` (`emp_id`) ON
DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
39 | P a g e