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,027

HOME > PHP > PHP Forum > ขอปรึกษาในเรื่องของการตรวจสอบช่วงวันที่ในการเก็บข้อมูลแบบ 2ฟิว



 

ขอปรึกษาในเรื่องของการตรวจสอบช่วงวันที่ในการเก็บข้อมูลแบบ 2ฟิว

 



Topic : 118936



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

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

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



เป็นโปรแกรมวันลาครับ

ผมมีการเก็บข้อมูลวันที่แบบนี้ครับ

วันที่เริ่มลา
วันสิ่นสุดการลา

หากว่า ตัวผมลาตั้งแต่วันที่ 17 - 20

แล้วผมก็จะมีตารางวันที่ เพื่อแสดงเครื่องหมาย นาฬิกาว่าวันนี้ผมได้ลา ผมสงสัยว่า ในวันที่ 18 กับ 19
ต้องใช้อะไรตรวจสอบครับว่า ในสองวันนี้ผมก็ได้ทำการลาด้วย เพราะข้อมูลในฟิว จะมีสองวันคือ 17 กับ 20

ใน PHP จะใช้ตรวจไหนหรือใช้วิธีใดในการหาค่า สองวันที่เหลือนี้ได้บ้างครับ

ขอบคุณครับ



Tag : PHP, MySQL







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2015-09-17 14:45:36 By : nerobenz View : 775 Reply : 13
 

 

No. 1



โพสกระทู้ ( 2,311 )
บทความ ( 1 )



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


ความคิดผม(ไม่แน่ใจนะครับว่าเป็นวิธีที่ดีที่สุดป่าว?)
ผมจะสร้าง 2 ตาราง
1. ตาราง tbl_leave ใช้เก็บข้อมูลของผู้ลาทั้งหมด ได้แก่ ชื่อ เบอร์โทร เมล์ วันเริ่มลา วันสิ้นสุดการลา วันเวลาที่บันทึกข้อมูล ip
2. ตาราง tbl_leave_date จะเก็บวันย่อยของรายการที่ทำลานั้นๆ โดยจะเก็บ id ของตาราง tbl_leave เพื่อเป็น FK ง่ายต่อการใช้งานต่อไป ตย.
ผมออกแบบให้ตาราง tbl_leave_date มีฟิลด์ id,ref_leave_id(อ้างอิง),leave_date
คุณลา 17-20 ในตาราง tbl_leave_date ก็จะเก็บ
id | ref_leave_id | leave_date
1 | 1 | 2015-09-17
2 | 1 | 2015-09-18
3 | 1 | 2015-09-19
4 | 1 | 2015-09-20

****แนะนำ ให้คุณออกแบบตารางแยกตารางข้อมูลส่วนบุคคลออกไปอีกตารางนึงจะดีกว่ามาก แล้วอ้างอิง FK ของ id มาใส่ใน 2 ตารางนี้ด้วย เพื่อความถูกต้องของข้อมูลและง่ายต่อการใช้งาน

ปล. ไม่แน่ใจว่าเข้าใจที่บอกรึป่าวนะ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-09-17 15:59:51 By : arm8957
 


 

No. 2



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

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

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

ตอบความคิดเห็นที่ : 1 เขียนโดย : arm8957 เมื่อวันที่ 2015-09-17 15:59:51
รายละเอียดของการตอบ ::

นั้นแหละครับ ที่ผมอยากได้ แต่........................โปรแกรมที่ใช้มามันเก็บเป็นแบบ อย่าที่ผมได้บอกไปครับ ประมาณว่า ผู้พัฒนาคนก่อนเค้าไม่ได้เก็บแยกไว้ครับ แต่ผมเป็นคนมาพัฒนาต่อครับ ก็เลยไปไม่ถูกในเรื่องนี้นิดนึง

แล้วพอดีจะต้องทำรายงานสรุปการลาในแต่ละวันด้วยหน่ะครับว่า วันไหนลากันเท่าไหร่

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-09-17 16:22:30 By : nerobenz
 

 

No. 3



โพสกระทู้ ( 2,311 )
บทความ ( 1 )



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


แล้วคนเก่าออกแบบไว้ยังไงละครับ?
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-09-17 16:29:16 By : arm8957
 


 

No. 4



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

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

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

ตอบความคิดเห็นที่ : 3 เขียนโดย : arm8957 เมื่อวันที่ 2015-09-17 16:29:16
รายละเอียดของการตอบ ::
มาตารางวันลาตารางเดียว แล้วก็เก็บแค่ start_la และ end_la ครับผม ก็คือใส่วันเริ่มลา และวันสิ่นสุดลาในเรคคอดเดียวกันเลยครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-09-17 16:44:29 By : nerobenz
 


 

No. 5



โพสกระทู้ ( 2,311 )
บทความ ( 1 )



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


ก็ทำเพิ่มไปอีกตารางนึงไม่ได้หรือครับ? tbl_leave_date ไง อย่างที่แนะนำไป หรือไม่ก็ใช้ datediff หาระยะเวลาของวันที่ลาเอา ยุ่งยากรึป่าวอันนี้ไม่รู้ต้องลองทำดู
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-09-17 16:54:44 By : arm8957
 


 

No. 6



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

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

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

ตอบความคิดเห็นที่ : 5 เขียนโดย : arm8957 เมื่อวันที่ 2015-09-17 16:54:44
รายละเอียดของการตอบ ::
ครับผม จะลองดูครับ ขอบคุณครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-09-17 17:00:05 By : nerobenz
 


 

No. 7



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

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

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

ตอบความคิดเห็นที่ : 5 เขียนโดย : arm8957 เมื่อวันที่ 2015-09-17 16:54:44
รายละเอียดของการตอบ ::
สอบถามเพิ่มเติมครับ ถ้าสมติว่า ผมจะทำอย่างวิธีที่ท่านแนะนำมา ต้อนนำข้อมูล เข้าในฐานข้อมูล ถ้าสมติว่าลา วันที่

30/09/2558 - 2/10/2558

ถ้าเป็นแบบนี้ ตอนนำเข้าตาราง tbl_leave_date ใช้วิธีไหนที่จะเก้บข้อมูลเป็น

30/09/2558
01/10/2558
02/10/2558

ครับ ถ้ามีวิธีชี้แนะหน่อยนะครับ ขอบคุณครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-09-17 17:04:04 By : nerobenz
 


 

No. 8



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



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

where '$วันที่เป้าหมาย' between start_la and end_la
ถ้ามี record $วันที่เป้าหมาย อยู่ในวันลา

แต่เนื่องจาก type ของวันที่เก็บ ไม่ใช่ datetime และไม่ได้เรียงลำดับความสำคัญ ไว้ซ้ายมือ Y-m-d
ดังนั้นต้องทำการแปลงรูปแบบวันที่ให้ถูกต้องก่อน

where '$วันที่เป้าหมาย' between STR_TO_DATE(start_la,'%d/%m/%Y') and STR_TO_DATE(end_la,'%d/%m/%Y')

และ $วันที่เป้าหมายก็ต้องอยู่ในรูปแบบ Y-m-d ด้วยนะครับ

ปล. ถ้าเปลี่ยน type ได้ก็เปลี่ยนซะดีกว่าครับ แต่คิดว่าคงยาก เพราะต้องไล่เปลี่ยนโค๊ดที่เกี่ยวข้องด้วย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-09-18 06:44:17 By : NewbiePHP
 


 

No. 9



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

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

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

ตอบความคิดเห็นที่ : 8 เขียนโดย : NewbiePHP เมื่อวันที่ 2015-09-18 06:44:17
รายละเอียดของการตอบ ::
ขอตัวอย่างเพิ่มเติม ด้วยครับ ยังงงกับ คำว่า '$วันที่เป้าหมาย' ตรงส่วนนี้ให้แทมนที่ด้วยตัวแปลที่เก้บวันที่เหรอครับ อย่างเช่นว่า

$date='2015-09-15';

where '$date' between STR_TO_DATE(start_la,'%d/%m/%Y') and STR_TO_DATE(end_la,'%d/%m/%Y')
แบบนี้รึป่าวครับ

ส่วน ,'%d/%m/%Y' ให้ใส่เป็นรูปแบบนี้เลย หรือให้เปลี่ยนให้เหมือนรูปแบบในฐานข้อมูลครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-09-18 09:57:45 By : nerobenz
 


 

No. 10



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



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

ผมคงเข้าใจผิดในวิธีการเก็บ

ถ้า ฟีลด์ type ของ start_la และ end_la ที่เก็บอยู่ เป็น datetime
หรือ varchar แต่รูปแบบการเก็บ เป็น "2558-09-30" ( ลำดับความสำคัญ อยู่ซ้าย ปี - เดือน - วัน ) ให้ใช้แบบนี้
Code (PHP)
$date='2015-09-15';
$where = "where '$date' between start_la and end_la ";


++++++++++++++++++++++++++++++++++++++
แต่ถ้าเก็บเป็น varchar และเก็บเป็นรูปแบบ 30/09/2558 ( ลำดับความสำคัญอยู่ขวา วัน-เดือน-ปี)
ต้องแปลงข้อมูลให้ถูกต้องก่อน ให้ใช้แบบนี้
Code (PHP)
$date='2015-09-15';
$where = "where '$date' between STR_TO_DATE(start_la,'%d/%m/%Y') and STR_TO_DATE(end_la,'%d/%m/%Y')";


คำค้นอ่านเพิ่มเติม MySql STR_TO_DATE()

ปล. คำสั่ง between ของ mysql ไมได้ตรวจสอบแค่ตัวเลข ยังสามารถตรวจสอบ ตัวอักษรได้ได้

select ( 'AX' BETWEEN 'AA' AND 'ZZ') T, ( 'AX' BETWEEN 'XX' AND 'ZZ') F
ให้ลองทดสอบใน phpmyadmin ดูครับ ถ้าเป็นจริงจะได้ค่า 1 ถ้าเป็นเท็จจะได้ค่า 0


ประวัติการแก้ไข
2015-09-18 10:42:10
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-09-18 10:36:32 By : NewbiePHP
 


 

No. 11



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

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

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

ตอบความคิดเห็นที่ : 10 เขียนโดย : NewbiePHP เมื่อวันที่ 2015-09-18 10:36:32
รายละเอียดของการตอบ ::
ขอบคุณมากครับ สำหรับฟิวที่ใช้เก็บวันที่ จะเป็นในรูปแบบของ DATETIME (2015-01-01 00:00:00) ครับผม

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-09-18 10:54:09 By : nerobenz
 


 

No. 12



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

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

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

ตอบความคิดเห็นที่ : 10 เขียนโดย : NewbiePHP เมื่อวันที่ 2015-09-18 10:36:32
รายละเอียดของการตอบ ::
ขอบคุณครับได้แลบ้วครับเรียบ ร้อยครับ ปิดงาน

ตอบความคิดเห็นที่ : 5 เขียนโดย : arm8957 เมื่อวันที่ 2015-09-17 16:54:44
รายละเอียดของการตอบ ::
ขอบคุณครับได้แลบ้วครับเรียบ ร้อยครับ ปิดงาน

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-09-18 11:13:06 By : nerobenz
 


 

No. 13



โพสกระทู้ ( 2,311 )
บทความ ( 1 )



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


ตกลงแก้ปัญหายังไงครับ เผื่อท่านอื่นเค้ามีปัญหาเหมือนกัน จะได้เป็นแนวทางครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2015-09-18 13:42:44 By : arm8957
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ขอปรึกษาในเรื่องของการตรวจสอบช่วงวันที่ในการเก็บข้อมูลแบบ 2ฟิว
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

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