ข้ามไปที่เนื้อหาหลัก

การเขียน if หรือ else เกี่ยวกับระยะเวลามันมีสิ่งที่ต้องคิดประกอบด้วยนะ

"ทำไมไม่มีความเคลื่อนไหว แต่ผ่านเงื่อนไขเราไปได้"


เรื่องมีอยู่ว่า จะเขียนโค๊ดตรวจสอบเงื่อนไขตรวจสอบความเคลื่อนไหวของข้อมูล ถ้าผ่านมาเกิน 6 เดือนให้แจ้งเตือนถึงสิ่งที่อาจจะทำให้เกิดข้อผิดพลาด หากผู้ใช้ยังฝืนดันทุรังใช้ข้อมูลนั้นต่อไป

IF Month > 6 THEN
     DISPLAY แบร่ๆๆๆ ข้อมูลเก่าเกินไปแล้วนะ ไปตรวจสอบหน่อยซิว่ายังใช้ได้จริง

END IF

Month = ระยะเวลาที่ทำรายการครั้งสุดท้ายเทียบกับปัจจุบัน

ถ้ากำหนดให้วันที่ล่าสุด คือ 2014-05-15
และวันที่ปัจจุบัน คือ 2014-09-04

Month จะมีค่าเท่ากับผลต่างของเดือนคือ 3 เดือนกว่า ซึ่งจะไม่นับเศษ Month ก็จะได้เท่ากับ 3

กรณีนี้ก็คือสามารถทำรายการได้ปกติ เพราะว่ามีการทำรายการไม่เกิน 6 เดือน นั่นก็คือข้อมูลยังใหม่ๆสดๆร้อนๆอยู่นั่นเอง


แล้วถ้าเพิ่งผ่านมาไม่กี่วันอย่างกรณีนี้ล่ะ
ถ้ากำหนดให้วันที่ล่าสุด คือ 2014-09-01
และวันที่ปัจจุบัน คือ 2014-09-04

เห็นมั้ยผ่านมาแค่ 4 วัน ผลต่างของเดือนก็คือ 0 ซึ่งก็ยังไม่เกิน 6 เดือน ก็ทำรายการได้ปกติ


และแล้วก็เกิดปัญหากับเลข 0 ขึ้นจนได้


กรณีที่ข้อมูลเก่า เพิ่มเอาไว้เฉยๆ ไม่ได้ทำรายการใดๆเลย เพราะเปลี่ยนไปใช้ข้อมูลอื่นแทน แต่แล้ววันดีคืนดีก็หยิบกลับมาใช้ซะงั้น


เอาล่ะ...ถึงเวลาที่โค๊ดเช็คเงื่อนไขของเราได้ออกโรงตรวจสอบเสียที 555+


เริ่มจาก ค้นหารายการครั้งล่าสุดที่นำไปใช้ แล้วก็มาคำนวณกับปัจจุบัน
ผลลัพธ์ที่ได้ก็คือ 0 ซึ่งไม่เกิน 6 เอาไปใช้งานได้เลย


แต่แล้ว....


"ข้อมูลนี้ใช้ไม่ได้นะน้อง มันเป็นข้อมูลเก่าเขาไม่ใช้งานแล้ว ปล่อยให้เลือกได้ไง"


"เอ่อ...ผมก็เช็คแล้วนะ T___T"



ได้เวลากลับมาดูโค๊ดตัวเองอีกที "โอ้...ซานต้า" ปล่อยไก่ตัวเบอเร่อเลย ผมเช็คเงื่อนไขไม่หมดครับ เพราะแหล่งที่ต้องเช็คที่จริงมันต้องมี 2 ที่นี่เอง นอกจากตารางความเคลื่อนไหวล่าสุดแล้ว ต้องไปเช็ควันที่เพิ่มข้อมูลหลักด้วยนั่นเอง!!!



ก็ที่มันได้ค่าเป็น 0 ก็แหงอยู่แล้วล่ะ ก็มันไม่เคยนำไปใช้งานจะไปมีค่าออกมาได้ไงกันเล่า!!


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




Month = -1

IF ค้นหาความเคลื่อนไหวเจอ = True THEN

     Month = เปรียบเทียบด้วยวันที่ทำรายการครั้งล่าสุด

Else
     Month = นำวันที่เพิ่มข้อมูลครั้งแรก มาคำนวณ
End IF




จากตัวอย่างถ้าไม่พบข้อมูลใดๆ เลยก็จะได้ค่า น้อยกว่า 0 เวลาตรวจสอบก็เปลี่ยนเป็น




IF Month > 6 OR Month < 0 THEN
     DISPLAY แบร่ๆๆๆ ข้อมูลเก่าเกินไปแล้วนะ ไปตรวจสอบหน่อยซิว่ายังใช้ได้จริง

END IF




แล้วก็ผ่านไปอีกงานนึง ไว้โอกาสหน้า มาบอกเล่าเรื่องราวกันใหม่ สวัสดีครับ ^___^

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

การแชร์สแกนเนอร์ ถึงทำไม่ได้แต่ก็มีวิธีช่วยประหยัดขั้นตอนการทำงาน

"พี่ครับขอใช้เครื่องพี่สแกนเอกสารหน่อยครับ" "พี่ครับขอสแกนอีกสักสองแผ่นครับ" "พี่ครับพอดีมีเอกสารต้องสแกนเพิ่มน่ะครับ" ทุกครั้งที่ต้องสแกนเอกสารเป็นไฟล์เก็บไว้ในคอมพิวเตอร์ ผมจะต้องลุกไปขอใช้เครื่องพิมพ์แบบ All-In-One ของพี่โจ้ทุกครั้ง บางครั้งก็เกรงใจแกครับ เห็นกำลังใจจดใจจ่ออยู่กับงานตรงหน้า ไหนจะต้องตอบคำถามคำโน้นคนนี้ทาง MSN บ้าง Facebook บ้าง ^___^ พอไปขอใช้เครื่องทีไรก็ดูแกจะไม่สบอารมณ์เท่าไหร่ พยายามค้นหาวิธีแชร์สแกนเนอร์จากในอินเตอร์เน็ตอยู่หลายวัน ก็ไม่เจอวิธีที่จะสามารถแชร์สแกนเนอร์ให้เครื่องอื่นได้ใช้งานได้เลย แชร์ได้แค่ให้สั่งพิมพ์จากเครื่องอื่นๆได้เท่านั้น สุดท้ายก็เลยตัดสินใจใช้เทคนิคเล็กๆ น้อยๆ ที่ได้พบเจอมาใช้ประหยัดเวลา และไม่รบกวนการทำงานและสนทนาของพี่โจ้ ได้วิธีนึง นั่นก็คือ ตั้งค่าสแกนเนอร์ให้บันทึกอัตโนมัติ ไว้ในโฟลเดอร์ที่กำหนด แล้วก็ทำการแชร์โฟลเดอร์เครื่องพี่โจ้ทิ้งไว้ซะเลย 1. ตั้งค่าให้สแกนอัตโนมัติเมื่อกดปุ่มสแกน 2. กำหนดให้บันทึกลงโฟลเดอร์ที่แชร์ไว้แล้ว (แชร์โฟลเดอร์เก็บเอกสารสแกนของคอมฯเครื่องนั้นไว้) 3. ...

ร้อยละ ทศนิยม 2 ตำแหน่งบวกคืน ไม่เท่ากับ 100 และ ปัญหาการคำนวณเลขทศนิยม เมื่อปัดเศษแล้วค่าที่บวกคืนไม่เท่าเดิม

กรณีนี้เป็นการทดสอบคำนวณเลขที่ต้องหารครึ่ง ตัวอย่างเช่น 2.33 / 2 = 1.165 กรณีนี้ถ้าเก็บค่านี้ในฐานข้อมูลที่กำหนดให้มีทศนิยมเพียง 2 หลัก ในฟิลด์ 2 ฟิลด์ซึ่งแต่ละฟิลด์จะถูกปัดขึ้นเป็น 1.7 เมื่อนำมาบวกกลับ 1.17 + 1.17 = 2.34 ถ้าอย่างนั้นเราก็ต้องกำหนดให้ฟิลด์ที่ใช้เก็บข้อมูลสามารถเก็บเลขทศนิยมได้หลายๆตัว ก็จะเก็บเลขทั้งสามหลักไว้ในฐานข้อมูลเลย 1.165 + 1.165 จะได้ 2.33 พอดี แต่ตอนเราแสดงรายงาน ก็จำเป็นจะต้องแสดงเลขทศนิยมเพียงแค่ 2 หลักอยู่ดี แล้วเราจะทำอย่างไรล่ะทีนี้ ก็เก็บมันเป็นเลขทศนิยมเต็มจำนวนซะแล้วตอนแสดงก็ต้องปัดเศษอยู่ดี เพราะค่า 1.165 ถ้าใช้ฟังก์ชั่นปัดเศษลง ก็จะเหลือ 1.16 แต่ถ้าปัดขึ้นก็จะเป็น 1.17 ซึ่งตัวเลขทั้งสองตัว เมื่อนำมารวมกัน ยังไงๆ ก็ไม่เท่ากับ 2.33 อยู่ดี (1.16+1.16 = 2.32,    1.17+1.17 = 2.34 ) อีกตัวอย่างนึงครับเป็นการถอด VAT ราคาสินค้า การคิดค่าทศนิยม แล้วผลรวมเพี้ยน เนื่องจากการปัดเศษ แล้วยอดเกินบ้าง ขาดบ้าง ตัวอย่างการถอด VAT ซื้อของมา 573.50 บาท ถอด VAT ออกมาได้ (573.50*7) / 100 = 40.145 ราคาสินค้า จะได้เป็น 573.50 - 40.14...

เมื่อโปรแกรมเมอร์ไม่ชอบเขียนโค้ดอีกต่อไป

ในวันที่จิตใจเราเลือกหนทางใหม่ ในวันที่ทุกอย่างยังสับสนวุ่นวายเต็มหัว แต่สิ่งน่ากลัวไม่ใช่ "ทางเลือก" แต่มันคือ "ทางรอด" บางทีมันก็ยากนะ ที่จะตัดสินใจว่าสิ่งที่เลือกดีที่สุดสำหรับเราแล้วหรือไม่!! เพราะอนาคตเป็นสิ่งที่คาดเดาได้ยากเหลือเกิน แม้มันจะมีรูปแบบที่ไม่แตกต่างกันนัก และพอจะคาดเดากรรมที่ตามมาก็ตามที และเมื่อวันนั้น วันที่จะต้องตัดสินใจ มาเร็วกว่าที่คิด เราอาจจะไม่ทันตั้งตัวเลยสักนิด ความคิดที่เคยเชื่อมั่นอาจจะสั่นคลอนลงอย่างง่ายดาย ความฝันที่ไม่เคยเริ่ม มันก็เป็นได้แค่ "ความเพ้อฝัน"

PHP CI MANIA