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

การเขียนโปรแกรมเพื่อดึงรายงานมาแสดงผล ต้องระวังเรื่องวันที่ให้ดี



การดึงรายงาน บางครั้งต้องกำหนดเงื่อนไขวันที่ให้รัดกุม และแยกแยะรายละเอียดให้ชัดเจนว่ารายงานไหน เป็นรายงานไหน และข้อกำหนดของรายงานนั้นมีเงื่อนไขอะไรบ้าง ไม่เช่นนั้นแล้วรายงานอาจจะแสดงผลผิดพลาดได้ เหมือนกรณีที่ผมเจอมากับตัวเอง ^^”

ตัวอย่างข้อมูลที่จะใช้ดึงรายงาน
การตลาดออกไปติดต่อลูกค้าที่ต้องการมาลงโฆษณากับนิตยสารฉบับหนึ่ง ในเดือน มกราคม พ.ศ. 2556 ซึ่งมีผู้ประกอบการหลายรายที่สนใจลงโฆษณาในนิตยสาร โดยมีรายงานดังนี้


วันที่ 05/01/2556      
1. ร้าน สวยบิ้วตี้ & ซาลอน       
2. ร้าน ทนดีคอมพิวเตอร์ 

วันที่ 11/01/2556      
1. บริษัท สนุกทัวร์ จำกัด 


วันที่ 16/01/2556      
1. บริษัท ขายทุกอย่าง จำกัด       
2. บริษัท ก่อสร้างอลังการ จำกัด




สามารถเก็บค่าลงโฆษณาได้แล้ว 3 ราย ส่วนอีก 2 รายจะขอจ่ายในเดือนถัดไปซึ่งเป็นเดือน กุมภาพันธ์ ก่อนที่นิตยสารจะตีพิมพ์ และในเดือนกุมภาพันธ์ ก็มีลูกค้าสนใจเพิ่มอีก 3 ราย ซึ่งมีรายชื่อดังต่อไปนี้

วันที่ 11/02/2556
1.    ร้าน ข้าวมันไก่รสเลิศ
2.    ร้าน ผลิตภัณฑ์บำรุงผิว

วันที่ 18/02/2556
1.    หจก. ส่งออกเสื้อผ้า


นิตยสารฉบับนี้จะส่งพิมพ์สิ้นเดือนกุมภาพันธ์นี้ และสามารถเก็บค่าลงโฆษณาได้ครบตามจำนวนเรียบร้อย ซึ่งตัวอย่างฐานข้อมูลทั้งหมด ที่ได้มีดังนี้

ข้อมูลที่ต้องการจะเก็บเป็น 2 ตาราง คือ 

1. ข้อมูลลูกค้าที่ตกลงโฆษณา (tb_opportunity)

opp_id date วันที่สนใจ  cus_name ชื่อลูกค้า emp_name พนักงานที่ติดต่อ
105/01/2556 ร้าน สวยบิ้วตี้ & ซาลอน        นายมุ่งมั่น ตั้งใจ
2 05/01/2556  ร้าน ทนดีคอมพิวเตอร์  นายมุ่งมั่น ตั้งใจ
3 11/01/2556 บริษัท สนุกทัวร์ จำกัด  นางสาวจงรัก ภักดี
4 16/01/2556 บริษัท ขายทุกอย่าง จำกัด     นางสาวจงรัก ภักดี
5 16/01/2556 บริษัท ก่อสร้างอลังการ จำกัด นายมุ่งมั่น ตั้งใจ
6 11/02/2556 ร้าน ข้าวมันไก่รสเลิศ นางสาวจงรัก ภักดี
7 12/02/2556 ร้าน ผลิตภัณฑ์บำรุงผิว นายมุ่งมั่น ตั้งใจ
8 18/02/2556 หจก. ส่งออกเสื้อผ้า นางสาวจงรัก ภักดี


2. ข้อมูลลูกค้าที่จ่ายค่าโฆษณา (tb_payment)


pay_idpay_date วันที่ชำระเงินcus_name ชื่อลูกค้าemp_name พนักงานที่บันทึกข้อมูลopp_id_ref
822/01/2556ร้าน สวยบิ้วตี้ & ซาลอน       นางสาวบัญชี อยู่ดี1
1119/01/2556 ร้าน ทนดีคอมพิวเตอร์ นางสาวบัญชี อยู่ดี2
1227/01/2556บริษัท สนุกทัวร์ จำกัด นางสาวบัญชี อยู่ดี3
1520/02/2556บริษัท ขายทุกอย่าง จำกัด    นางสาวบัญชี อยู่ดี4
2419/02/2556บริษัท ก่อสร้างอลังการ จำกัดนางสาวบัญชี อยู่ดี5
2719/02/2556ร้าน ข้าวมันไก่รสเลิศนางสาวจงรัก ภักดี6
2823/02/2556ร้าน ผลิตภัณฑ์บำรุงผิวนางสาวจงรัก ภักดี7
3027/02/2556หจก. ส่งออกเสื้อผ้านางสาวจงรัก ภักดี8


* วันที่ในฐานข้อมูลจะเก็บในรูปแบบ ค.ศ. เช่น 2013-01-25

จากข้อมูลถ้าเราต้องการหาลูกค้าที่สนใจลงโฆษณาในเดือนมกราคม จะได้อยู่ 5 ราย

<?php

$sql = "SELECT * FROM tb_opportunity WHERE date BETWEEN '2013-01-01' AND '2013-01-31' ";

//Query code..


?>


และถ้าเราค้นหารายการที่สนใจในเดือน มกราคม ที่ชำระค่าโฆษณาแล้ว ก็จะได้ 5 รายการ
เพราะลูกค้าที่สนใจลงโฆษณาได้ชำระเงินครบถ้วนแล้ว

<?php
$sql = "SELECT * FROM tb_opportunity ";
$sql .= "INNER JOIN tb_payment ON tb_payment.opp_id = tb_payment .opp_id_ref";
$sql .= "WHERE tb_opportunity.date BETWEEN '2013-01-01' AND '2013-01-31' ";

//Query code..


?>


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

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


<?php
$sql = "SELECT * FROM tb_opportunity ";
$sql .= "INNER JOIN tb_payment ON tb_payment.opp_id = tb_payment .opp_id_ref";
$sql .= "WHERE tb_opportunity.date BETWEEN '2013-01-01' AND '2013-01-31' ";
$sql .= "AND tb_payment.pay_date  BETWEEN '2013-01-01' AND '2013-01-31' ";

//Query code..

?>

จากโค๊ดตัวอย่าง คือเราจะต้องเพิ่มเงื่อนไข WHERE เข้าไปอีก เพื่อดึงเอาเฉพาะลูกค้าที่สนใจลงโฆษณาในเดือนมกราคม และได้จ่ายเงินในเดือนมกราคมเท่านั้น

สนใจ = 5

เก็บได้ = 3
ค้างชำระ = 2 (เพราะเป็นลูกค้าที่ชำระในเดือนถัดไป)

เปอร์เซ็นต์การเรียกเก็บจะได้เท่ากับ (3*100) / 5  = 60%

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


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





PHP CI MANIA PHP Code Generator 

โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม"
ราคาสุดคุ้ม  
http://www.phpcodemania.com

ความคิดเห็น

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

แจกฟรี!! ระบบต่างๆที่พัฒนาด้วย 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...

PHP กับการคิดส่วนลดเป็นเปอร์เซ็น 5%, 10%, 20% ตามช่วงราคาที่กำหนด

<?php     $total_price = 1000;     $discount = 0;         if($total_price >= 500 && $total_price < 1001){         $discount = 5;     }elseif($total_price >= 1001 && $total_price <= 5000){         $discount = 10;     }elseif($total_price >= 5001){         $discount = 20;     }         $discount_bath = ($total_price*$discount)/100; ?> <pre> ซื้อสินค้าครบ 0 ถึง 499 บาท ไม่ได้ส่วนลด ซื้อสินค้าครบ 500 ถึง 1000 บาท ได้ส่วนลด 5% ซื้อสินค้าครบ 1001 ถึง 5000บาท ได้ส่วนลด 10% ซื้อสินค้าครบ 5001 บาทขึ้นไป ได้ส่วนลด 20% </pre> <h3>รวมราคาสินค้า = <?php echo number_format($total_price,2);?></h3> <h5>ส่วนลด = <?php echo $discount;?>%  (<?php echo $discount_bath;?...