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

Registered : 109,038

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


[PHP] ตัวอย่าง : โปรแกรมจัดตารางเวรแบบง่าย 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)
001.<!DOCTYPE html>
002.<html>
003.    <head>
004.        <title>Demo : OT Generator</title>
005.        <style>
006.            .holiday{
007.                background-color: #ffcccc
008.            }
009.        </style>
010.    </head>
011.    <body>
012. 
013.        <h2>Demo : OT Generator by DevPSK</h2>
014. 
015.        <?php
016.        $employee = array(
017.            array('name' => 'mo', 'surname' => '', 'workday' => 3, 'holiday' => 2, 'fixworkday' => array(4, 8, 25), 'fixholiday' => array(7, 14)),
018.            array('name' => 'mid', 'surname' => '', 'workday' => 3, 'holiday' => 2, 'fixworkday' => array(2, 10, 24), 'fixholiday' => 0),
019.            array('name' => 'jame', 'surname' => '', 'workday' => 3, 'holiday' => 2, 'fixworkday' => 0, 'fixholiday' => array(13, 6)),
020.            array('name' => 'kong', 'surname' => '', 'workday' => 3, 'holiday' => 2, 'fixworkday' => array(1), 'fixholiday' => array(27, 28)),
021.        );
022. 
023.        $strStartDate = '2019-07-01';
024.        $strEndDate = '2019-07-31';
025. 
026.        $intWorkDay = 0;
027.        $intHoliday = 0;
028. 
029.        $intTotalDay = ((strtotime($strEndDate) - strtotime($strStartDate)) / ( 60 * 60 * 24 )) + 1;
030.        while (strtotime($strStartDate) <= strtotime($strEndDate)) {
031.            $DayOfWeek = date("w", strtotime($strStartDate));
032.            if ($DayOfWeek == 0 or $DayOfWeek == 6) {  // 0 = Sunday, 6 = Saturday;
033.                $intHoliday++;
034.                $keepHoliday[] = $strStartDate;
035.//                echo "$strStartDate = <font color=red>Holiday</font><br>";
036.            } else {
037.                $intWorkDay++;
038.                $keepWorkday[] = $strStartDate;
039.//                echo "$strStartDate = <b>Work Day</b><br>";
040.            }
041.            //$DayOfWeek = date("l", strtotime($strStartDate)); // return Sunday, Monday,Tuesday....
042.            $strStartDate = date("Y-m-d", strtotime("+1 day", strtotime($strStartDate)));
043.        }
044. 
045.        echo "<hr>";
046.        echo "Total Day = $intTotalDay";
047.        echo "<br>Work Day = $intWorkDay";
048.//      echo "<br>" . $keepWorkday;
049.        echo "<br>Holiday = $intHoliday";
050.//      echo "<br>" .  $keepHoliday;
051.        echo "<hr>";
052. 
053.        $highlight = $keepHoliday;
054.          
055.        foreach ($employee as $key => $value) {
056.            if ($value['holiday'] > 0) {
057.                if ($value['fixholiday'] > 0 && count($value['fixholiday']) <= $value['holiday']) {
058.                    foreach ($value['fixholiday'] as $key5 => $value5) {
059.                        foreach ($keepHoliday as $key6 => $value6) {
060.                            if (sprintf("%02d", $value5) == date("d", strtotime($value6))) {
061.                                $getDate[$value['name']][] = $value6;
062.                                unset($keepHoliday[$key6]);
063.                            }
064.                        }
065.                    }
066.                }
067.            }
068.            if ($value['workday'] > 0) {
069.                if ($value['fixworkday'] > 0 && count($value['fixworkday']) <= $value['workday']) {
070.                    foreach ($value['fixworkday'] as $key5 => $value5) {
071.                        foreach ($keepWorkday as $key6 => $value6) {
072.                            if (sprintf("%02d", $value5) == date("d", strtotime($value6))) {
073.                                $getDate[$value['name']][] = $value6;
074.                                unset($keepWorkday[$key6]);
075.                            }
076.                        }
077.                    }
078.                }
079.            }
080.        }
081.         
082.        foreach ($employee as $key => $value) {
083.            if ($value['holiday'] > 0) {
084.                if ($value['fixholiday'] > 0 && count($value['fixholiday']) <= $value['holiday']) {
085.                    $calRandHoliday = $value['holiday'] - count($value['fixholiday']);
086.                    if ($calRandHoliday > 0) {
087.                        $random_keyHoliday[$value['name']] = array_rand($keepHoliday, $calRandHoliday);
088.                        foreach ($random_keyHoliday as $key2 => $value2) {
089.                            if ($key2 == $value['name']) {
090.                                foreach ($value2 as $key3 => $value3) {
091.                                    foreach ($keepHoliday as $key4 => $value4) {
092.                                        if ($value3 == $key4) {
093.                                            $getDate[$value['name']][] = $value4;
094.                                            unset($keepHoliday[$key4]);
095.                                        }
096.                                    }
097.                                }
098.                            }
099.                        }
100.                    }
101.                } else {
102.                    $random_keyHoliday[$value['name']] = array_rand($keepHoliday, $value['holiday']);
103.                    foreach ($random_keyHoliday as $key2 => $value2) {
104.                        if ($key2 == $value['name']) {
105.                            foreach ($value2 as $key3 => $value3) {
106.                                foreach ($keepHoliday as $key4 => $value4) {
107.                                    if ($value3 == $key4) {
108.                                        $getDate[$value['name']][] = $value4;
109.                                        unset($keepHoliday[$key4]);
110.                                    }
111.                                }
112.                            }
113.                        }
114.                    }
115.                }
116.            }
117.            if ($value['workday'] > 0) {
118.                if ($value['fixworkday'] > 0 && count($value['fixworkday']) <= $value['workday']) {
119.                    $calRandWorkday = $value['workday'] - count($value['fixworkday']);
120.                    if ($calRandWorkday > 0) {
121.                        $random_keyWorkday[$value['name']] = array_rand($keepWorkday, $calRandWorkday);
122.                        foreach ($random_keyWorkday as $key2 => $value2) {
123.                            if ($key2 == $value['name']) {
124.                                foreach ($value2 as $key3 => $value3) {
125.                                    foreach ($keepWorkday as $key4 => $value4) {
126.                                        if ($value3 == $key4) {
127.                                            $getDate[$value['name']][] = $value4;
128.                                            unset($keepWorkday[$key4]);
129.                                        }
130.                                    }
131.                                }
132.                            }
133.                        }
134.                    }
135.                } else {
136.                    $random_keyWorkday[$value['name']] = array_rand($keepWorkday, $value['workday']);
137.                    foreach ($random_keyWorkday as $key2 => $value2) {
138.                        if ($key2 == $value['name']) {
139.                            foreach ($value2 as $key3 => $value3) {
140.                                foreach ($keepWorkday as $key4 => $value4) {
141.                                    if ($value3 == $key4) {
142.                                        $getDate[$value['name']][] = $value4;
143.                                        unset($keepWorkday[$key4]);
144.                                    }
145.                                }
146.                            }
147.                        }
148.                    }
149.                }
150.            }
151.        }
152. 
153.//        echo '<pre>', print_r($random_keyHoliday), '</pre>';
154.//        echo '<pre>', print_r($random_keyWorkday), '</pre>';
155.//        echo '<pre>', print_r($getDate), '</pre>';
156. 
157.        echo "<hr>";
158. 
159.        echo '<table border="1">';
160.        echo '<thead>';
161.        echo '<tr>';
162.        echo '<th>employee</th>';
163.        $i = 1;
164.        while ($i <= $intTotalDay) {
165.            $showclass = '';
166.            foreach ($highlight as $key2 => $value2) {
167.                if (sprintf("%02d", $i) == date("d", strtotime($value2))) {
168.                    $showclass = 'class="holiday"';
169.                }
170.            }
171.            echo '<th ' . $showclass . '>' . sprintf("%'02d", $i) . '</th>';
172.            $i++;
173.        }
174.        echo '</tr>';
175.        echo '</thead>';
176.        echo '<tbody>';
177.        foreach ($getDate as $key => $value) {
178.            echo '<tr>';
179.            echo '<td>' . $key . '</td>';
180.            $i2 = 1;
181.            while ($i2 <= $intTotalDay) {
182.                $showclass2 = '';
183.                foreach ($highlight as $key3 => $value3) {
184.                    if (sprintf("%02d", $i2) == date("d", strtotime($value3))) {
185.                        $showclass2 = 'class="holiday"';
186.                    }
187.                }
188.                $show = '';
189.                foreach ($value as $key2 => $value2) {
190.                    if (sprintf("%02d", $i2) == date("d", strtotime($value2))) {
191.                        $show = 'x';
192.                    }
193.                }
194.                echo '<td ' . $showclass2 . '>' . $show . '</td>';
195.                $i2++;
196.            }
197.            echo '</tr>';
198.        }
199.        echo '</tbody>';
200.        echo '</table>';
201. 
202.        echo "<hr>";
203. 
204.        echo '<table border="1">';
205.        echo '<thead>';
206.        echo '<tr>';
207.        echo '<th>employee</th>';
208.        $i = 1;
209.        while ($i <= $intTotalDay) {
210.            $showclass = '';
211.            foreach ($highlight as $key2 => $value2) {
212.                if (sprintf("%02d", $i) == date("d", strtotime($value2))) {
213.                    $showclass = 'class="holiday"';
214.                }
215.            }
216.            echo '<th ' . $showclass . '>' . sprintf("%'02d", $i) . '</th>';
217.            $i++;
218.        }
219.        echo '</tr>';
220.        echo '</thead>';
221.        echo '<tbody>';
222.        echo '<tr>';
223.        echo '<td>no select</td>';
224.        $i2 = 1;
225.        while ($i2 <= $intTotalDay) {
226.            $showclass2 = '';
227.            foreach ($highlight as $key3 => $value3) {
228.                if (sprintf("%02d", $i2) == date("d", strtotime($value3))) {
229.                    $showclass2 = 'class="holiday"';
230.                }
231.            }
232.            $show = '';
233.            foreach ($keepWorkday as $key => $value) {
234.                if (sprintf("%02d", $i2) == date("d", strtotime($value))) {
235.                    $show = 'x';
236.                }
237.            }
238.            echo '<td ' . $showclass2 . '>' . $show . '</td>';
239.            $i2++;
240.        }
241.        echo '</tr>';
242.        echo '</tbody>';
243.        echo '</table>';
244. 
245.        echo "<hr>";
246. 
247.        $query_date = '2019-07-01';
248.//      First day of the month.
249.        echo date('Y-m-01', strtotime($query_date));
250.        echo ' - ';
251.//      Last day of the month.
252.        echo date('Y-m-t', strtotime($query_date));
253. 
254.        echo "<hr>";
255. 
256.//      ระบุจำนวนวัน work day และ holiday ได้ หรือจะสุ่มก็ได้
257.//      ตัวแปร เก็บค่า วัน ธรรมดา ที่เลือกไปแล้ว
258.//      ตัวแปร เก็บค่า วัน เสาร์ อาทิตย์ ที่เลือกไปแล้ว
259.//        echo '<pre>', print_r($employee), '</pre>';
260.//        echo '<pre>', print_r($keepHoliday), '</pre>';
261.//        echo '<pre>', var_dump($keepHoliday), '</pre>';
262.//        echo '<pre>', print_r($keepWorkday), '</pre>';
263.//        echo '<pre>', print_r($highlight), '</pre>';
264.        ?>
265. 
266. 
267.        <div>ref. https://www.thaicreate.com/community/php-workday-holiday-sunday-saturday.html</div>
268.        <div>credit. https://www.thaicreate.com</div>
269.        <div>by. devpsk.com</div>
270.    </body>
271.</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 : 9392 Reply : 2
 

 

No. 1



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

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

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

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

 
มีบริการรับจัดตารางเวรที่ทำงานตลอด24ชั่วโมง แบ่งเป็น 8 8 8 ชั่วโมง พร้อมให้บริการครับ ผลที่ได้ ตารางถูกต้อง ยุติธรรม สอดคล้องกับความต้องการ ท่านใดสนใจติดต่อได้ที่อีเมล mathkriangkrai@gmail.com หรือ facebook Kriangkrai Tidaruang ครับ ทดลองใช้บริการฟรี2เดือนครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2021-07-03 00:45:37 By : เกรียงไกร
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
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 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)





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