Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 107,529

HOME > PHP > PHP Forum > ตัวอย่าง : โปรแกรมจัดตารางเวรแบบง่าย Demo : OT Generator by DevPSK





 

ตัวอย่าง : โปรแกรมจัดตารางเวรแบบง่าย Demo : OT Generator by DevPSK

 



Topic : 133750



โพสกระทู้ ( 34 )
บทความ ( 0 )



สถานะออฟไลน์




- ตัวอย่าง : โปรแกรมจัดตารางเวรแบบง่าย 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
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2019-06-14 17:38:13 By : dev View : 766 Reply : 1
 

 

No. 1



โพสกระทู้ ( 73,942 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

เยี่ยมเลยครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-06-19 11:01:15 By : mr.win
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ตัวอย่าง : โปรแกรมจัดตารางเวรแบบง่าย Demo : OT Generator by DevPSK
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: Voake, Comcube, รับทำเว็บไซต์ รับเขียนโปรแกรม

Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2019 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 , 08-9968-0655 อัตราราคา คลิกที่นี่