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

PHP คำนวณค่าปรับ เมื่อส่งคืนหนังสือเลยกำหนดส่ง โดยอ้างอิงตามวันที่ปัจจุบัน

       วันก่อนยืมหนังสือมาสี่เล่ม แต่ดันเอาไปส่งเลยวันกำหนดคืน เลยโดยค่าปรับเล่มละบาทต่อวัน วันนี้เลยลองมาเขียนโปรแกรม PHP คำนวณค่าปรับกันเล่นๆ

สอน PHP คำนวณค่าปรับ เมื่อส่งคืนหนังสือเลยกำหนดส่ง

 มาดูซอร์สโค๊ดกันเลยละกันครับ

 

<?php

$pay_per_day = 1;//ค่าปรับต่อวัน (บาท)

$return_date     = '2014-06-22';        //วันที่กำหนดส่งคืน
$today            = date('Y-m-d');    //วันที่ส่งคืนจริง

//หาจำนวนวัน กรณีที่วันส่งคืนจริง เลยวันกำหนดส่ง
$pay = 0;
$day_late_qty = 0;
if($today > $return_date){
    $time_today = strtotime($today);        //แปลงวันที่ส่งคืนจริง เป็นตัวเลข timestamp
    $time_return = strtotime($return_date);    //แปลงวันที่กำหนดส่งคืน เป็นตัวเลข timestamp

    $day_late_qty = ($time_today - $time_return) / ( 60 * 60 * 24 );
    $pay = ceil($day_late_qty) * $pay_per_day;
}
?>
<!DOCTYPE html>
<html>
  <head>
    <title>คำนวณค่าปรับส่งคืนเลยกำหนดส่ง</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <h1>คำนวณค่าปรับ! (ส่งคืนหนังสือ)</h1>
    <p>วันที่กำหนดส่ง : <?php echo $return_date;?></p>
    <p>วันที่ส่งจริง : <?php echo $today;?></p>
    <p>ส่งช้ากว่ากำหนด : <?php echo $day_late_qty;?> วัน</p>
    <p>ค่าปรับต่อวัน : <?php echo $pay_per_day;?> บาท</p>
    <h3>รวมค่าปรับ  : <?php echo $pay;?> บาท</h3>
  </body>
</html>



สำหรับการทำงานของโค๊ดด้านบนนี้มีลำดับดังนี้

  1. กำหนดค่าปรับ ให้มีค่า 1 บาทต่อวัน
  2. รับค่าวันที่กำหนดส่งคืน
  3. รับค่าวันที่ส่งคืนจริง
  4. ถ้าวันที่ส่งคืนจริงเลยกำหนดส่ง
  5. ก็เริ่มหาจำนวนวันที่เกินกำหนด ในขั้นตอนนี้ก็คำนวณโดยแปลงค่าวันที่ด้วยฟังก์ชั่น strtotime() เพื่อให้ได้ตัวเลขวันที่ในรูปแบบ timestamp 
  6. เอาไปหาผลต่าง จากนั้นก็หารด้วยจำนวนเวลาทั้งหมดของ 1 วัน ( 60 * 60 * 24 )
  7. จะได้จำนวนวันที่เลยกำหนด นำไปคูณกับราคาค่าปรับก็จะได้ค่าปรับที่ต้องจ่าย




ดูวิธีหาผลต่างของวันที่และเวลา เพิ่มเติมได้ที่

http://www.thaicreate.com/php/php-date-diff.html



"PHP ไม่ได้สร้างสุดยอดโปรแกรม แต่ PHP ช่วยให้งานคุณง่ายขึ้นต่างหาก"

PHP CI MANIA PHP Code Generator 
โปรแกรมช่วยสร้างโค้ด ลดเวลาการเขียนโปรแกรม

สนใจสั่งซื้อเพียง 4,500 บาท
http://fastcoding.phpcodemania.com/

สนับสนุนค่ากาแฟผู้เขียนได้ที่

PayPal

ความคิดเห็น

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

แจกฟรี!! ระบบต่างๆที่พัฒนาด้วย PHP สำหรับนำไปใช้ในงานต่างๆ

       สำหรับหลายท่านที่ขอโค้ดเข้ามาทาง Inbox ของเฟซบุ๊กแฟนเพจ หรือถามถึงระบบต่างๆหลังไมค์มานั้น ส่วนใหญ่ก็มีแจกอยู่แล้วในเว็บบอร์ด ThaiCreate.Com นะครับ และด้านล่างนี้ก็เป็นระบบต่างๆที่แจกให้นำไปลองใช้ลองศึกษากันครับ

สอนเขียน PHP แสดงการจองห้องประชุมแบบไฮไลท์ตามช่วงเวลา (แบบเชื่อมต่อฐานข้อมูล MySQL)

ตัวอย่าง ผลลัพธ์ที่ได้จากการจองในฐานข้อมูล ตาราง tb_room สร้างตารางรายชื่อห้องประชุม สำหรับ id นั้นเป็น Primarykey จะกำหนดให้สร้างอัตโนมัติ ทุกครั้งที่เราเพิ่มชื่อห้องประชุมใหม่ -- -- Database: `tobedev_example` -- -- -------------------------------------------------------- -- -- Table structure for table `tb_room` -- CREATE TABLE IF NOT EXISTS `tb_room` (   `id` int(11) NOT NULL,   `name` varchar(30) NOT NULL ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; -- -- Dumping data for table `tb_room` -- INSERT INTO `tb_room` (`id`, `name`) VALUES (1, 'ห้องประชุม 1'), (2, 'ห้องประชุม 2'), (3, 'ห้องประชุม 3'), (4, 'ห้องประชุม 4'), (5, 'ห้องประชุม 5'); -- -- Indexes for dumped tables -- -- -- Indexes for table `tb_room` -- ALTER TABLE `tb_room`   ADD PRIMARY KEY (`id`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `tb_room` -- ALTER TABLE `tb_room`   MODIFY `i...

การดึงข้อมูล MySQL มาแสดงในปฏิทิน Fullcalendar ด้วย PHP

หลักการทำงาน เรียกข้อมูลจากตาราง tb_event ด้วยฟังก์ชั่นของ MySQLi ข้อมูลจากฐานข้อมูลจะถูกวนลูปเก็บไว้ใน $data และจะถูกส่งไปที่ Fullcalendar ด้วยการแปลงข้อมูลจาก PHP ให้อยู่ในรูปแบบ JSON อาร์เรย์ด้วยฟังก์ชั่น json_encode() PHP Code <?php //Database $data = array(); $link = mysqli_connect("127.0.0.1", "tobedev", "1234", "tobedev_example"); mysqli_set_charset($link, 'utf8'); if (!$link) {     echo "Error: Unable to connect to MySQL." . PHP_EOL;     echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;     echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;     exit; } $query = "SELECT * FROM tb_event"; if ($result = $link->query($query)) {     /* fetch object array */     while ($obj = $result->fetch_object()) {        $data[] = array(                 ...