ขอความช่วยเหลือสร้างตารางกิจกรรมแบบสัปดาห์
ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ขอความช่วยเหลือสร้างตารางกิจกรรมแบบสัปดาห์
ขอความช่วยเหลือสร้างตารางกิจกรรมแบบสัปดาห์
ผมเก็บข้อมูลของกิจกรรม DB แบบนี้
อยากทำเป็นตารางในลักษณะดังรูปครับ code php ครับ
ทำได้แล้ว
1. สร้างตารางกิจกรรม
2. แสดงรายการกิจกรรม
3. สร้างหัวตารางรายเดือน (วนลูปเดือน ม.ค. - ธ.ค.)
ปัญหาคือ
1. จะเขียนโค๊ดยังไงว่าในปีแต่ละปี มีกี่สัปดาห์
2. แต่ละเดือนมีกีสัปดาห์ (ช่องของ week รายเดือน)
3. จะเอาวันเริ่มต้นและวันสุดท้ายของแต่ละกิจกรรมมาใส่ให้ ตรงสัปดาห๋ของแต่ละเดือนได้อย่างไร (ไอไลน์ในช่องตารางสัปดาห์)
*** ขอตัวอย่างหน่อยครับ ศึกษาจากตารางสอน ไม่รู้จะไปต่ออย่างไร ***
id | activity | startDate | endDate |
1 | AAAA | 2020-01-03 | 2020-01-10 |
2 | BBBB | 2020-03-10 | 2020-03-24 |
3 | CCCC | 2020-03-25 | 2020-04-06 |
4 | DDDD | 2020-04-06 | 2020-04-10 |
5 | EEEE | 2020-04-10 | 2020-07-07 |
6 | FFFF | 2020-07-08 | 2020-07-31 |
อยากทำเป็นตารางในลักษณะดังรูปครับ code php ครับ
ทำได้แล้ว
1. สร้างตารางกิจกรรม
2. แสดงรายการกิจกรรม
3. สร้างหัวตารางรายเดือน (วนลูปเดือน ม.ค. - ธ.ค.)
ปัญหาคือ
1. จะเขียนโค๊ดยังไงว่าในปีแต่ละปี มีกี่สัปดาห์
2. แต่ละเดือนมีกีสัปดาห์ (ช่องของ week รายเดือน)
3. จะเอาวันเริ่มต้นและวันสุดท้ายของแต่ละกิจกรรมมาใส่ให้ ตรงสัปดาห๋ของแต่ละเดือนได้อย่างไร (ไอไลน์ในช่องตารางสัปดาห์)
*** ขอตัวอย่างหน่อยครับ ศึกษาจากตารางสอน ไม่รู้จะไปต่ออย่างไร ***


คำแนะนำ และการใช้งาน
สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก
- ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
ความคิดเห็นที่
1
การที่จะบอกว่าเดือนไหน มีกี่สัปดาห์ หรือ เดือนไหน มีสัปดาห์ที่เท่าไหร่บ้าง
ไม่น่าจะทำได้โดยสมบูรณ์ อาจจะได้ค่าโดยประมาณ สมมติ เช่น
วันที่ 1 เดือน 4 อยู่ในสัปดาห์เดียวกับวันที่ 31 เดือน 3 ดังนั้น ลำดับสำหรับสัปดาห์หนึ่ง
อาจจะอยู่ได้ทั้ง เดือน 3 และ 4
ใน php การดูว่าเป็นสัปดาห์ที่เท่าไหร่ของปี ใช้คำสั่ง
1 2 | echo date ( "W" ); // วันนี้เป็นสัปดาห์ที่เท่าไหร่ echo date ( "W" , strtotime ( "2020-12-31" )); // วันสุดท้ายของปีเป็นสัปดาห์ที่เท่าไหร่ |
ส่วนแนวทางการประยุกต์ดูตัวอย่างโค้ดด้านล่างเป็นแนวทางฃ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | <!doctype html> <html> <head> <meta charset= "utf-8" > <meta name= "viewport" content= "width=device-width, initial-scale=1, shrink-to-fit=no" > <title>Document</title> </head> <body> <style type= "text/css" > .myevent- class { background-color:yellow; } .wrap_event{ width:800px; margin:auto; overflow:hidden; overflow-x:auto; } .block-event { width:50px; } </style> <?php date_default_timezone_set( 'Asia/Bangkok' ); $dayTH = array ( 'อาทิตย์' , 'จันทร์' , 'อังคาร' , 'พุธ' , 'พฤหัสบดี' , 'ศุกร์' , 'เสาร์' ); $monthTH = array (null, 'มกราคม' , 'กุมภาพันธ์' , 'มีนาคม' , 'เมษายน' , 'พฤษภาคม' , 'มิถุนายน' , 'กรกฎาคม' , 'สิงหาคม' , 'กันยายน' , 'ตุลาคม' , 'พฤศจิกายน' , 'ธันวาคม' ); $monthTH_brev = array (null, 'ม.ค.' , 'ก.พ.' , 'มี.ค.' , 'เม.ย.' , 'พ.ค.' , 'มิ.ย.' , 'ก.ค.' , 'ส.ค.' , 'ก.ย.' , 'ต.ค.' , 'พ.ย.' , 'ธ.ค.' ); $_startDate = "2020-01-01" ; $_endDate = date ( "Y-m-d" , strtotime ( $_startDate . "+1 year -1 day" )); // วันสุดท้ายของปี คิดจาก จากวันเริ่มต้นปี $_totalWeek = (int) date ( "W" , strtotime ( $_endDate )); // สัปดาห์สุดท้ายของปี $arr_w = array (); // อาเรย์เก็บสัปดาห์ที่ของวันสุดท้าย แต่ละเดือน $arr_w_num = array (); // อาเรย์เก็บจำนวนสัปดาห์ของแต่ละเดือนโดยประมาณ for ( $i = 0; $i <= 12; $i ++){ // วนลูปให้ครบ 12 เดืนอ $arr_w [ $i ] = (int) date ( "W" , strtotime ( $_startDate . " + $i month -1 day" )); // วันสุดท้ายของเดือน ตรงกับสัปดาห์ที่? if ( $i > 0){ // เริ่มคำนวณหา จำนวนสัปดาห์ของแต่ละเดือนโดยประมาร $arr_w_num [ $i ] = $arr_w [ $i ] - $arr_w [ $i -1]; // ลบสัปดาห์ของเดือน กับเดือนก่อนหน้า หาจำนวนสัปดาห์แต่ละเดือน if ( $i == 12 && $arr_w_num [12] < array_sum ( $arr_w_num )){ // กรณีเดือนสุดท้าย หากจำนวนสัปดาห์ไม่ครบ ให้เพิ่มจนครบ $arr_w_num [12]++; } } else { // ไมใช้ค่าจาก $i = 0 $arr_w_num [ $i ] = 0; } } ?> <?php // อาเรย์ข้อมูลจำลอง database $simpleData = array ( array ( "1" , "AAAA" , "2020-01-03" , "2020-03-10" ), array ( "2" , "BBBB" , "2020-03-10" , "2020-03-24" ), array ( "3" , "CCCC" , "2020-03-25" , "2020-04-06" ), array ( "4" , "DDDD" , "2020-04-06" , " 2020-04-10" ), array ( "5" , "EEEE" , "2020-04-10" , "2020-07-07" ), array ( "6" , "FFFF" , " 2020-07-08" , "2020-07-31" ) ); //$simpleData[0][0] จะเท่ากับ 1; //$simpleData[1][1] จะเท่ากับ BBBB; // หาใช้จาก database ก็จะมีค่าเท่ากับ // $simpleData = $result->fetch_assoc(); // หรือ $result->fetch_array() ?> <div class = "wrap_event" > <table width= "100%" border= "1" cellspacing= "0" cellpadding= "0" > <tr> <td width= "50" rowspan= "2" >A</td> <td width= "50" rowspan= "2" >B</td> <!--วนลูปจำนวนเดือน--> <?php for ( $c = 1; $c <= 12; $c ++){?> <td colspan= "<?=$arr_w_num[$c]?>" width= "50" ><?= $monthTH_brev [ $c ]?></td> <?php } ?> </tr> <tr> <!--วนลูปจำนวนสัปดาห์ทั้งหมด--> <?php for ( $c = 1; $c <= $_totalWeek ; $c ++){?> <td width= "50" > <!--เพิ่ม div คลุม สำหรับกำหนดความกว้างให้แต่ละ week--> <div class = "block-event" >F <?= $c ?></div> </td> <?php } ?> </tr> <!-- วนลูปแสดงข้อมูลแต่ละแถว--> <?php foreach ( $simpleData as $key => $value ){ ?> <?php $bgEvent = "" ; // ตัวแปรสำหรับกำหนด css class ประยุกต์กำหนดสีพื้นหลัง ?> <tr> <td width= "50" ><?= $value [0]?> </td> <td width= "50" ><?= $value [1]?> </td> <!-- วนลูปสัปดาห์ทั้งหมด ในส่วนของข้อมูล--> <?php for ( $c = 1; $c <= $_totalWeek ; $c ++){?> <?php if ( $c >= (int) date ( "W" , strtotime ( $value [2]))){ // เริ่มต้นสัปดาห์กิจกกรม สำหรับกำหนด css class $bgEvent = "myevent-class" ; // กำหนด css class ที่จะใช้งาน if ( $c > (int) date ( "W" , strtotime ( $value [3]))){ // สิ้นสุดสัปดาห์กิจกรรม ยกเลือก css class $bgEvent = "" ; } } else { $bgEvent = "" ; } ?> <td class = "<?=$bgEvent?>" width= "50" >G <?= $c ?></td> <?php } ?> </tr> <?php } ?> <?php // } ?> </table> </div> </body> </html> |
บทความแนะนำที่เกี่ยวข้อง | |
---|---|
การสร้างวันเวลาปัจจุบัน ด้วยฟังก์ชัน date() | อ่าน 37,933 |
แนวทางประยุกต์แสดงสรุปรายการแบบตารางรายเดือนจากฐานข้อมูล | อ่าน 10,237 |
การใช้งานรูปแบบข้อความวันที่และเวลา กับฟังก์ชั่น strtotime() ใน php | อ่าน 56,363 |

ความคิดเห็นที่
2
จะลองดูครับ

ขอบคุณทุกการสนับสนุน
![]()