I'm working on an app that will be used for employee management and I'm using MySQL for the database. You can add employees, view/update/delete them, and on the dashboard I'm listing them in different tables depending on what's needed.
I was wondering if my insert and update code can be improved somehow. Because my update code I think it looks hard to maintain/edit. I was also wondering if there is a more simple way to do it. It's huge and I'm not even at the middle of adding all of the fields I need to edit/update info for.
This is my insert code (for adding new employees to my db):
<?php
$server = "localhost";
$user = "root";
$pass = "";
$dbname = "employees";
// Create connection
$conn = mysqli_connect($server, $user, $pass, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$fname = mysqli_real_escape_string($conn, $_POST['fname']);
$lname = mysqli_real_escape_string($conn, $_POST['lname']);
$dob = mysqli_real_escape_string($conn, $_POST['dob']);
$embg = mysqli_real_escape_string($conn, $_POST['embg']);
$address = mysqli_real_escape_string($conn, $_POST['address']);
$city = mysqli_real_escape_string($conn, $_POST['city']);
$mobile = mysqli_real_escape_string($conn, $_POST['mobile']);
$email = mysqli_real_escape_string($conn, $_POST['email']);
$workplace = mysqli_real_escape_string($conn, $_POST['workplace']);
$workposition = mysqli_real_escape_string($conn, $_POST['workposition']);
$jobstartdate = mysqli_real_escape_string($conn, $_POST['jobstartdate']);
$contractfrom = mysqli_real_escape_string($conn, $_POST['contractfrom']);
$contractto = mysqli_real_escape_string($conn, $_POST['contractto']);
$healthbookfrom = mysqli_real_escape_string($conn, $_POST['healthbookfrom']);
$healthbookto = mysqli_real_escape_string($conn, $_POST['healthbookto']);
$bankaccount = mysqli_real_escape_string($conn, $_POST['bankaccount']);
$bank = mysqli_real_escape_string($conn, $_POST['bank']);
$workcode = mysqli_real_escape_string($conn, $_POST['workcode']);
$gender = mysqli_real_escape_string($conn, $_POST['gender']);
$bloodtype = mysqli_real_escape_string($conn, $_POST['bloodtype']);
$notes = mysqli_real_escape_string($conn, $_POST['notes']);
$contract_file = basename($_FILES['contractupload']['name']);
$contract_path = "files/contracts/$contract_file";
$contract_file = mysqli_real_escape_string($conn, $contract_file);
copy($_FILES['contractupload']['tmp_name'], $contract_path); // copy the file to the folder
$sql = "INSERT INTO addemployees (fname, lname, dob, embg, address, city, mobile, email, workplace, workposition, jobstartdate, contractfrom, contractto, healthbookfrom,
healthbookto, contractupload, bankaccount, bank, workcode, gender, bloodtype, notes)
VALUES ('$fname', '$lname', '$dob', '$embg', '$address', '$city', '$mobile', '$email', '$workplace', '$workposition', '$jobstartdate', '$contractfrom', '$contractto',
'$healthbookfrom', '$healthbookto', '$contract_file', '$bankaccount', '$bank', '$workcode', '$gender', '$bloodtype', '$notes')";
if (mysqli_query($conn, $sql)) {
header("location: employees.php");
// echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
//Close the connection
mysqli_close($conn);
?>
And this is my update user info code:
<?php
// Include config file
require_once "config.php";
// Define variables and initialize with empty values
$fname = $lname = $dob = $embg = $address = $city = $mobile = $email = $workplace =
$workposition = $jobstartdate = $contractfrom = "";
$fname_err = $lname_err = $dob_err = $embg_err = $address_err = $city_err = $mobile_err =
$email_err = $workplace_err = $workposition_err = $jobstartdate_err = $contractfrom_err = "";
// Processing form data when form is submitted
if(isset($_POST["id"]) && !empty($_POST["id"])){
// Get hidden input value
$id = $_POST["id"];
// Validate First Name ($fname)
$input_fname = trim($_POST["fname"]);
if(empty($input_fname)){
$lname_err = "Please enter your First Name.";
} else{
$fname = $input_fname;
}
// Validate Last Name ($lname)
$input_lname = trim($_POST["lname"]);
if(empty($input_lname)){
$lname_err = "Please enter your Last Name.";
} else{
$lname = $input_lname;
}
// Validate Date of Birth ($dob)
$input_dob = trim($_POST["dob"]);
if(empty($input_dob)){
$dob_err = "Please enter your Date of Birth.";
} else{
$dob = $input_dob;
}
// Validate EMBG ($embg)
$input_embg = trim($_POST["embg"]);
if(empty($input_embg)){
$embg_err = "Please enter your EMBG.";
} else{
$embg = $input_embg;
}
// Validate Address ($address)
$input_address = trim($_POST["address"]);
if(empty($input_address)){
$address_err = "Please enter an address.";
} else{
$address = $input_address;
}
// Validate City ($city)
$input_city = trim($_POST["city"]);
if(empty($input_city)){
$city_err = "Please enter your City.";
} else{
$city = $input_city;
}
// Validate Mobile Number ($mobile)
$input_mobile = trim($_POST["mobile"]);
if(empty($input_mobile)){
$mobile_err = "Please enter your Mobile.";
} else{
$mobile = $input_mobile;
}
// Validate E-mail ($email)
$input_email = trim($_POST["email"]);
if(empty($input_email)){
$email_err = "Please enter your E-mail.";
} else{
$email = $input_email;
}
// Validate WorkPlace ($workplace)
$input_workplace = trim($_POST["workplace"]);
if(empty($input_workplace)){
$workplace_err = "Please choose your Work Place.";
} else{
$workplace = $input_workplace;
}
// Validate Work Position ($workposition)
$input_workposition = trim($_POST["workposition"]);
if(empty($input_workposition)){
$workposition_err = "Please choose your Work Position.";
} else{
$workposition = $input_workposition;
}
// Validate Job Start Date ($jobstartdate)
$input_jobstartdate = trim($_POST["jobstartdate"]);
if(empty($input_jobstartdate)){
$jobstartdate_err = "Please enter your Date of Birth.";
} else{
$jobstartdate = $input_jobstartdate;
}
// Validate Contract From ($contractfrom)
$input_contractfrom = trim($_POST["contractfrom"]);
if(empty($input_contractfrom)){
$contractfrom_err = "Please enter your Date of Birth.";
} else{
$contractfrom = $input_contractfrom;
}
// Check input errors before inserting in database jobstartdate
if(empty($fname_err) && empty($lname_err) && empty($dob_err) && empty($embg_err) && empty($address_err) && empty($city_err) && empty($mobile_err) &&
empty($email_err) && empty($workplace_err) && empty($workposition_err) && empty($jobstartdate_err) && empty($contractfrom_err)){
// Prepare an update statement
$sql = "UPDATE addemployees SET fname=?, lname=?, dob=?, embg=?, address=?, city=?, mobile=?, email=?, workplace=?,
workposition=?, jobstartdate=?, contractfrom=? WHERE id=?";
if($stmt = $mysqli->prepare($sql)){
// Bind variables to the prepared statement as parameters
$stmt->bind_param("ssssssssssssi", $param_fname, $param_lname, $param_dob, $param_embg, $param_address, $param_city, $param_mobile, $param_email,
$param_workplace, $param_workposition, $param_jobstartdate, $param_contractfrom, $param_id);
// Set parameters
$param_id = $id;
$param_fname = $fname;
$param_lname = $lname;
$param_dob = $dob;
$param_embg = $embg;
$param_address = $address;
$param_city = $city;
$param_mobile = $mobile;
$param_email = $email;
$param_workplace = $workplace;
$param_workposition = $workposition;
$param_jobstartdate = $jobstartdate;
$param_contractfrom = $contractfrom;
// Attempt to execute the prepared statement
if($stmt->execute()){
// Records updated successfully. Redirect to landing page
header("location: employees.php");
exit();
} else{
echo "Something went wrong. Please try again later.";
}
}
// Close statement
$stmt->close();
}
// Close connection
$mysqli->close();
} else{
// Check existence of id parameter before processing further
if(isset($_GET["id"]) && !empty(trim($_GET["id"]))){
// Get URL parameter
$id = trim($_GET["id"]);
// Prepare a select statement
$sql = "SELECT * FROM addemployees WHERE id = ?";
if($stmt = $mysqli->prepare($sql)){
// Bind variables to the prepared statement as parameters
$stmt->bind_param("i", $param_id);
// Set parameters
$param_id = $id;
// Attempt to execute the prepared statement
if($stmt->execute()){
$result = $stmt->get_result();
if($result->num_rows == 1){
/* Fetch result row as an associative array. Since the result set contains only one row, we don't need to use while loop */
$row = $result->fetch_array(MYSQLI_ASSOC);
// Retrieve individual field value
$fname = $row["fname"];
$lname = $row["lname"];
$dob = $row["dob"];
$embg = $row["embg"];
$address = $row["address"];
$city = $row["city"];
$mobile = $row["mobile"];
$email = $row["email"];
$workplace = $row["workplace"];
$workposition = $row["workposition"];
$jobstartdate = $row["jobstartdate"];
$contractfrom = $row["contractfrom"];
} else{
// URL doesn't contain valid id. Redirect to error page
header("location: error.php");
exit();
}
} else{
echo "Oops! Something went wrong. Please try again later.";
}
}
// Close statement
$stmt->close();
// Close connection
$mysqli->close();
} else{
// URL doesn't contain id parameter. Redirect to error page
header("location: error.php");
exit();
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Update Record</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">
<style type="text/css">
.wrapper{
width: 500px;
margin: 0 auto;
}
</style>
</head>
<body>
<div class="wrapper">
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<div class="page-header">
<h2>Измени Податоци</h2>
</div>
<form action="<?php echo htmlspecialchars(basename($_SERVER['REQUEST_URI'])); ?>" method="post">
<div class="form-group <?php echo (!empty($fname_err)) ? 'has-error' : ''; ?>">
<label>Име</label>
<input type="text" id="fname" name="fname" class="form-control" value="<?php echo $fname; ?>">
<span class="help-block"><?php echo $fname_err;?></span>
</div>
<div class="form-group <?php echo (!empty($lname_err)) ? 'has-error' : ''; ?>">
<label>Презиме</label>
<input type="text" name="lname" id="lname" class="form-control" value="<?php echo $lname; ?>">
<span class="help-block"><?php echo $lname_err;?></span>
</div>
<div class="form-group <?php echo (!empty($dob_err)) ? 'has-error' : ''; ?>">
<label>Дата на Раѓање</label>
<input type="date" name="dob" id="dob" class="form-control" value="<?php echo $dob; ?>">
<span class="help-block"><?php echo $dob_err;?></span>
</div>
<div class="form-group <?php echo (!empty($embg_err)) ? 'has-error' : ''; ?>">
<label>ЕМБГ</label>
<input type="text" name="embg" id="embg" class="form-control" maxlength="13" value="<?php echo $embg; ?>">
<span class="help-block"><?php echo $embg_err;?></span>
</div>
<div class="form-group <?php echo (!empty($address_err)) ? 'has-error' : ''; ?>">
<label>Адреса</label>
<input type="text" id="address" name="address" class="form-control" value="<?php echo $address; ?>">
<span class="help-block"><?php echo $address_err;?></span>
</div>
<div class="form-group <?php echo (!empty($city_err)) ? 'has-error' : ''; ?>">
<label>Град</label>
<input type="text" name="city" id="city" class="form-control" value="<?php echo $city; ?>">
<span class="help-block"><?php echo $city_err;?></span>
</div>
<div class="form-group <?php echo (!empty($mobile_err)) ? 'has-error' : ''; ?>">
<label>Мобилен</label>
<input type="text" name="mobile" id="mobile" class="form-control" maxlength="9" value="<?php echo $mobile; ?>">
<span class="help-block"><?php echo $mobile_err;?></span>
</div>
<div class="form-group <?php echo (!empty($email_err)) ? 'has-error' : ''; ?>">
<label>Е-маил</label>
<input type="text" name="email" id="email" class="form-control" value="<?php echo $email; ?>">
<span class="help-block"><?php echo $email_err;?></span>
</div>
<div class="form-group <?php echo (!empty($workplace_err)) ? 'has-error' : ''; ?>">
<label>Работно Место <span style="font-size: 15px; color: rgb(255, 0, 0); margin-right: 15px;">(ПРОВЕРИ)</span></label>
<select type="text" name="workplace" id="workplace" class="form-control" value="<?php echo $workplace; ?>">
<option value="Кафич ГТ-1 - Широк Сокак бр. 55">Кафич ГТ-1 - Широк Сокак бр. 55</option>
<option value="Кафич ГТ-2 - Широк Сокак бр. 94">Кафич ГТ-2 - Широк Сокак бр. 94</option>
<option value="Ланч Бар ГТ - Широк Сокак бр. 55">Ланч Бар ГТ - Широк Сокак бр. 55</option>
<option value="Главен Магацин - Боримечка">Главен Магацин - Боримечка</option>
</select>
<span class="help-block"><?php echo $workplace_err;?></span>
</div>
<div class="form-group <?php echo (!empty($workposition_err)) ? 'has-error' : ''; ?>">
<label>Работна Позиција <span style="font-size: 15px; color: rgb(255, 0, 0); margin-right: 15px;">(ПРОВЕРИ)</span></label>
<select type="text" name="workposition" id="workposition" class="form-control" value="<?php echo $workposition; ?>">
<option value="Келнер">Келнер</option>
<option value="Шанкер">Шанкер</option>
<option value="Колачи">Колачи</option>
<option value="Сладолед">Сладолед</option>
<option value="Производство Сладолед">Производство Сладолед</option>
<option value="Производство Торти">Производство Торти</option>
<option value="Кувар">Кувар</option>
<option value="Помошник Кувар">Помошник Кувар</option>
<option value="Салатер">Салатер</option>
<option value="Пицер">Пицер</option>
<option value="Менаџер">Менаџер</option>
<option value="Книговодител">Книговодител</option>
<option value="Хигиеничар">Хигиеничар</option>
<option value="Стражар">Стражар</option>
<option value="Магационер">Магационер</option>
<option value="Шофер">Шофер</option>
<option value="Дистрибутер">Дистрибутер</option>
</select>
<span class="help-block"><?php echo $workposition_err;?></span>
</div>
<div class="form-group <?php echo (!empty($jobstartdate_err)) ? 'has-error' : ''; ?>">
<label>Дата на Почнување на Работа <span style="font-size: 15px; color: rgb(255, 0, 0); margin-right: 15px;">(Месец/Ден/Година)</span></label>
<input type="date" name="jobstartdate" id="jobstartdate" class="form-control" value="<?php echo $jobstartdate; ?>">
<span class="help-block"><?php echo $jobstartdate_err;?></span>
</div>
<div class="form-group <?php echo (!empty($contractfrom_err)) ? 'has-error' : ''; ?>">
<label>Договор за работа од <span style="font-size: 15px; color: rgb(255, 0, 0); margin-right: 15px;">(Месец/Ден/Година)</span></label>
<input type="date" name="contractfrom" id="contractfrom" class="form-control" value="<?php echo $contractfrom; ?>">
<span class="help-block"><?php echo $contractfrom_err;?></span>
</div>
<input type="hidden" name="id" value="<?php echo $id; ?>"/>
<input type="submit" class="btn btn-primary" value="Submit">
<a href="employees.php" class="btn btn-default">Cancel</a>
</form>
</div>
</div>
</div>
</div>
</body>
</html>