|
|
|
ตัวอย่าง : โปรแกรมจัดตารางเวรแบบง่าย Demo : OT Generator by DevPSK |
|
|
|
|
|
|
|
- ตัวอย่าง : โปรแกรมจัดตารางเวรแบบง่าย Demo : OT Generator by DevPSK
- อ้างอิงตัวอย่างจากบทความ PHP Checking Work Day , Holiday ตรวจสอบวันหยุด และวันหยุดราชการ
- เป็นการเขียนโปรแกรมเพื่อทดสอบและใช้งานเบื้องต้นแบบง่ายๆ ครับ (ลองสร้างแบบบทความแล้วกรอกชื่อ url ไม่ผ่านเลยโพสในนี้แทนนะครับ)
- การใช้งาน สร้างไฟล์ .php copy ไปรัน ได้เลย f5 refresh เพื่อสุ่ม สลับไปเรื่อยๆ
- workday -> จำนวนวันธรรมดา สูงสุดที่ต้องการอยุ่ fixworkday -> กำำหนดวันที่ต้องการอยุ่ (จำนวนไม่เกินจากค่าสูงสุด)
- holiday -> จำนวนวันหยุด สูงสุดที่ต้องการอยุ่ fixholiday-> กำำหนดวันที่ต้องการอยุ่ (จำนวนไม่เกินจากค่าสูงสุด)
- ไม่ได้เข้ามานาน คิดถึงที่นี่มากครับ *-*
ตย. ผลลัพธ์
Code (PHP)
<!DOCTYPE html>
<html>
<head>
<title>Demo : OT Generator</title>
<style>
.holiday{
background-color: #ffcccc
}
</style>
</head>
<body>
<h2>Demo : OT Generator by DevPSK</h2>
<?php
$employee = array(
array('name' => 'mo', 'surname' => '', 'workday' => 3, 'holiday' => 2, 'fixworkday' => array(4, 8, 25), 'fixholiday' => array(7, 14)),
array('name' => 'mid', 'surname' => '', 'workday' => 3, 'holiday' => 2, 'fixworkday' => array(2, 10, 24), 'fixholiday' => 0),
array('name' => 'jame', 'surname' => '', 'workday' => 3, 'holiday' => 2, 'fixworkday' => 0, 'fixholiday' => array(13, 6)),
array('name' => 'kong', 'surname' => '', 'workday' => 3, 'holiday' => 2, 'fixworkday' => array(1), 'fixholiday' => array(27, 28)),
);
$strStartDate = '2019-07-01';
$strEndDate = '2019-07-31';
$intWorkDay = 0;
$intHoliday = 0;
$intTotalDay = ((strtotime($strEndDate) - strtotime($strStartDate)) / ( 60 * 60 * 24 )) + 1;
while (strtotime($strStartDate) <= strtotime($strEndDate)) {
$DayOfWeek = date("w", strtotime($strStartDate));
if ($DayOfWeek == 0 or $DayOfWeek == 6) { // 0 = Sunday, 6 = Saturday;
$intHoliday++;
$keepHoliday[] = $strStartDate;
// echo "$strStartDate = <font color=red>Holiday</font><br>";
} else {
$intWorkDay++;
$keepWorkday[] = $strStartDate;
// echo "$strStartDate = <b>Work Day</b><br>";
}
//$DayOfWeek = date("l", strtotime($strStartDate)); // return Sunday, Monday,Tuesday....
$strStartDate = date("Y-m-d", strtotime("+1 day", strtotime($strStartDate)));
}
echo "<hr>";
echo "Total Day = $intTotalDay";
echo "<br>Work Day = $intWorkDay";
// echo "<br>" . $keepWorkday;
echo "<br>Holiday = $intHoliday";
// echo "<br>" . $keepHoliday;
echo "<hr>";
$highlight = $keepHoliday;
foreach ($employee as $key => $value) {
if ($value['holiday'] > 0) {
if ($value['fixholiday'] > 0 && count($value['fixholiday']) <= $value['holiday']) {
foreach ($value['fixholiday'] as $key5 => $value5) {
foreach ($keepHoliday as $key6 => $value6) {
if (sprintf("%02d", $value5) == date("d", strtotime($value6))) {
$getDate[$value['name']][] = $value6;
unset($keepHoliday[$key6]);
}
}
}
}
}
if ($value['workday'] > 0) {
if ($value['fixworkday'] > 0 && count($value['fixworkday']) <= $value['workday']) {
foreach ($value['fixworkday'] as $key5 => $value5) {
foreach ($keepWorkday as $key6 => $value6) {
if (sprintf("%02d", $value5) == date("d", strtotime($value6))) {
$getDate[$value['name']][] = $value6;
unset($keepWorkday[$key6]);
}
}
}
}
}
}
foreach ($employee as $key => $value) {
if ($value['holiday'] > 0) {
if ($value['fixholiday'] > 0 && count($value['fixholiday']) <= $value['holiday']) {
$calRandHoliday = $value['holiday'] - count($value['fixholiday']);
if ($calRandHoliday > 0) {
$random_keyHoliday[$value['name']] = array_rand($keepHoliday, $calRandHoliday);
foreach ($random_keyHoliday as $key2 => $value2) {
if ($key2 == $value['name']) {
foreach ($value2 as $key3 => $value3) {
foreach ($keepHoliday as $key4 => $value4) {
if ($value3 == $key4) {
$getDate[$value['name']][] = $value4;
unset($keepHoliday[$key4]);
}
}
}
}
}
}
} else {
$random_keyHoliday[$value['name']] = array_rand($keepHoliday, $value['holiday']);
foreach ($random_keyHoliday as $key2 => $value2) {
if ($key2 == $value['name']) {
foreach ($value2 as $key3 => $value3) {
foreach ($keepHoliday as $key4 => $value4) {
if ($value3 == $key4) {
$getDate[$value['name']][] = $value4;
unset($keepHoliday[$key4]);
}
}
}
}
}
}
}
if ($value['workday'] > 0) {
if ($value['fixworkday'] > 0 && count($value['fixworkday']) <= $value['workday']) {
$calRandWorkday = $value['workday'] - count($value['fixworkday']);
if ($calRandWorkday > 0) {
$random_keyWorkday[$value['name']] = array_rand($keepWorkday, $calRandWorkday);
foreach ($random_keyWorkday as $key2 => $value2) {
if ($key2 == $value['name']) {
foreach ($value2 as $key3 => $value3) {
foreach ($keepWorkday as $key4 => $value4) {
if ($value3 == $key4) {
$getDate[$value['name']][] = $value4;
unset($keepWorkday[$key4]);
}
}
}
}
}
}
} else {
$random_keyWorkday[$value['name']] = array_rand($keepWorkday, $value['workday']);
foreach ($random_keyWorkday as $key2 => $value2) {
if ($key2 == $value['name']) {
foreach ($value2 as $key3 => $value3) {
foreach ($keepWorkday as $key4 => $value4) {
if ($value3 == $key4) {
$getDate[$value['name']][] = $value4;
unset($keepWorkday[$key4]);
}
}
}
}
}
}
}
}
// echo '<pre>', print_r($random_keyHoliday), '</pre>';
// echo '<pre>', print_r($random_keyWorkday), '</pre>';
// echo '<pre>', print_r($getDate), '</pre>';
echo "<hr>";
echo '<table border="1">';
echo '<thead>';
echo '<tr>';
echo '<th>employee</th>';
$i = 1;
while ($i <= $intTotalDay) {
$showclass = '';
foreach ($highlight as $key2 => $value2) {
if (sprintf("%02d", $i) == date("d", strtotime($value2))) {
$showclass = 'class="holiday"';
}
}
echo '<th ' . $showclass . '>' . sprintf("%'02d", $i) . '</th>';
$i++;
}
echo '</tr>';
echo '</thead>';
echo '<tbody>';
foreach ($getDate as $key => $value) {
echo '<tr>';
echo '<td>' . $key . '</td>';
$i2 = 1;
while ($i2 <= $intTotalDay) {
$showclass2 = '';
foreach ($highlight as $key3 => $value3) {
if (sprintf("%02d", $i2) == date("d", strtotime($value3))) {
$showclass2 = 'class="holiday"';
}
}
$show = '';
foreach ($value as $key2 => $value2) {
if (sprintf("%02d", $i2) == date("d", strtotime($value2))) {
$show = 'x';
}
}
echo '<td ' . $showclass2 . '>' . $show . '</td>';
$i2++;
}
echo '</tr>';
}
echo '</tbody>';
echo '</table>';
echo "<hr>";
echo '<table border="1">';
echo '<thead>';
echo '<tr>';
echo '<th>employee</th>';
$i = 1;
while ($i <= $intTotalDay) {
$showclass = '';
foreach ($highlight as $key2 => $value2) {
if (sprintf("%02d", $i) == date("d", strtotime($value2))) {
$showclass = 'class="holiday"';
}
}
echo '<th ' . $showclass . '>' . sprintf("%'02d", $i) . '</th>';
$i++;
}
echo '</tr>';
echo '</thead>';
echo '<tbody>';
echo '<tr>';
echo '<td>no select</td>';
$i2 = 1;
while ($i2 <= $intTotalDay) {
$showclass2 = '';
foreach ($highlight as $key3 => $value3) {
if (sprintf("%02d", $i2) == date("d", strtotime($value3))) {
$showclass2 = 'class="holiday"';
}
}
$show = '';
foreach ($keepWorkday as $key => $value) {
if (sprintf("%02d", $i2) == date("d", strtotime($value))) {
$show = 'x';
}
}
echo '<td ' . $showclass2 . '>' . $show . '</td>';
$i2++;
}
echo '</tr>';
echo '</tbody>';
echo '</table>';
echo "<hr>";
$query_date = '2019-07-01';
// First day of the month.
echo date('Y-m-01', strtotime($query_date));
echo ' - ';
// Last day of the month.
echo date('Y-m-t', strtotime($query_date));
echo "<hr>";
// ระบุจำนวนวัน work day และ holiday ได้ หรือจะสุ่มก็ได้
// ตัวแปร เก็บค่า วัน ธรรมดา ที่เลือกไปแล้ว
// ตัวแปร เก็บค่า วัน เสาร์ อาทิตย์ ที่เลือกไปแล้ว
// echo '<pre>', print_r($employee), '</pre>';
// echo '<pre>', print_r($keepHoliday), '</pre>';
// echo '<pre>', var_dump($keepHoliday), '</pre>';
// echo '<pre>', print_r($keepWorkday), '</pre>';
// echo '<pre>', print_r($highlight), '</pre>';
?>
<div>ref. https://www.thaicreate.com/community/php-workday-holiday-sunday-saturday.html</div>
<div>credit. https://www.thaicreate.com</div>
<div>by. devpsk.com</div>
</body>
</html>
ref. https://www.thaicreate.com/community/php-workday-holiday-sunday-saturday.html
credit. https://www.thaicreate.com
by. devpsk.com
Tag : PHP, HTML, CSS, HTML5, JavaScript
|
ประวัติการแก้ไข 2019-06-14 17:41:38 2019-06-14 17:43:45 2019-06-14 17:55:32 2019-06-15 12:04:32
|
|
|
|
|
Date :
2019-06-14 17:38:13 |
By :
dev |
View :
8876 |
Reply :
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เยี่ยมเลยครับ
|
|
|
|
|
Date :
2019-06-19 11:01:15 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
มีบริการรับจัดตารางเวรที่ทำงานตลอด24ชั่วโมง แบ่งเป็น 8 8 8 ชั่วโมง พร้อมให้บริการครับ ผลที่ได้ ตารางถูกต้อง ยุติธรรม สอดคล้องกับความต้องการ ท่านใดสนใจติดต่อได้ที่อีเมล [email protected] หรือ facebook Kriangkrai Tidaruang ครับ ทดลองใช้บริการฟรี2เดือนครับ
|
|
|
|
|
Date :
2021-07-03 00:45:37 |
By :
เกรียงไกร |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|