แจกโค้ด PHP : รวมลิงค์ แจกฟรี!! ตัวอย่างโปรเจ็กต์ ที่พัฒนาด้วย PHP

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

และด้านล่างนี้ก็เป็น Source Code PHP ระบบต่างๆ ที่มีเหล่าผู้ใจดีแจกฟรี!! ให้นำไปลองใช้ลองศึกษากันครับ


แจกฟรี !! ตัวอย่างการ PHP Booking #จองห้องประชุม ผ่านเว็บครับ
http://www.thaicreate.com/php/forum/090558.html
แจกฟรี !! ตัวอย่างการ PHP Booking #จองห้องประชุม ผ่านเว็บ


ระบบแบบสอบถาม
https://www.thaicreate.com/php/forum/099342.html




แจก code!! การทำประเมินออนไลน์มี ไว้สำหรับพัฒนาต่อยอด
https://www.thaicreate.com/php/forum/102203.html








แจกฟรี PHP CodeIgniter CMS ให้ทุกท่านได้ลอง (รองรับ Responsive)
http://www.thaicreate.com/php/forum/122929.html
โดย : https://www.cszcms.com/


แจก PHP : ระบบยืม-คืนเอกสาร (จากตัวอย่าง เอกสารข้อมูลวัตถุดิบสินค้า)http://www.thaicreate.com/php/forum/103428.html
http://www.thaicreate.com/php/forum/103428.html




แจกระบบ PHP Shopping Cart ระบบตะกร้าสินค้า ระบบสั่งซื้อ มีระบบตัดสต๊อก, สั่งซื้อวัตถุดิบคงเหลือ
http://www.thaicreate.com/community/php-shooping-cart-free.html
http://www.thaicreate.com/community/php-shooping-cart-free.html

ดูตัวอย่างการติดตั้งที่นี่ >> https://www.youtube.com/watch?v=50tCdyuYtsM



แจกระบบ จัดการข้อมูลครุภัณฑ์ในสำนักงาน ด้วย Codeigniter 2.13 / 3 เพื่อการศึกษา และพัฒนาต่อจร้า
http://www.thaicreate.com/php/forum/122713.html
http://www.thaicreate.com/php/forum/122713.html



โปรแกรม C2M (ระบบงานขายสินค้าหน้าร้าน และ สินค้าออนไลน์) PHP Codeigniter 3
https://software.thaiware.com/13053-C2M-Download.html
https://software.thaiware.com/13053-C2M-Download.html
 ปล. ลิงค์สำหรับดาวน์โหลด https://github.com/yogolas/c2m/


[แจกฟรี] PHP #Student ระบบจัดการข้อมูลนักเรียนสำหรับโรงเรียนสอนพิเศษ
http://www.thaicreate.com/php/forum/122813.html
[แจกฟรี PHP] #Student ระบบจัดการข้อมูลนักเรียน


#PHP [แจกฟรี] #Repair (รีแพร์) ระบบออกใบสั่งซ่อม/เคลม สินค้า
http://www.thaicreate.com/php/forum/122766.html
#PHP [แจกฟรี] #Repair (รีแพร์) ระบบออกใบสั่งซ่อม/เคลม สินค้า


แจกฟรี !! PHP #Booking ระบบจองห้องประชุม โดยใช้ #Yii #framework
http://www.thaicreate.com/php/forum/119510.html
แจกฟรี !! #Booking ระบบจองห้องประชุม โดยใช้ #Yii #framework





PHP Script บันทึกการขอใช้รถยนต์
สร้างจาก #FullCalendar2,SB-Admin2,bootstrap-editable,fancybox-popup,ภาษาไทย
http://www.thaicreate.com/community/php-fullcalendar-bootstrap.html
Script บันทึกการขอใช้รถยนต์ สร้างจาก #FullCalendar2,SB-Admin2,bootstrap-editable,fancybox-popup,ภาษาไทย


แจก!! PHP ระบบบันทึกข้อมูลส่วนบุคคล (Personal)
http://www.thaicreate.com/php/forum/110312.html
แจก!! PHP ระบบบันทึกข้อมูลส่วนบุคคล (Personal)



แจกฟรี PHP Free E-Learning อ่านบทความ
พร้อมแบบทดสอบและคำตอบ random
http://www.thaicreate.com/php/forum/093167.html
แจกฟรี Free PHP E-Learning อ่านบทความ พร้อมแบบทดสอบและคำตอบ random


แนะนำการใช้งาน PHP #CRUDigniter 3 + #Bootstrap เบื้องต้น
http://www.thaicreate.com/community/crudigniter-framework-bootstrap-css.html
แนะนำการใช้งาน PHP #CRUDigniter 3 + #Bootstrap เบื้องต้น




แจกระบบจัดการเอกสารออนไลน์
โดยใช้ Codeigniter Framework [PHP+MySQL]
http://www.itoffside.com/sourcecode-edocument-online-codeigniter-php-mysql
แจกระบบจัดการเอกสารออนไลน์ โดยใช้ Codeigniter Framework [PHP+MySQL]


แจกระบบจองตั๋วหนังออนไลน์ PHP
http://www.thaicreate.com/php/forum/101843.html
http://www.thaicreate.com/php/forum/101843.html


แจกฟรี สคริปต์ระบบบันทึกรายรับ-รายจ่าย PHP
https://www.kotchasan.com/knowledge/แจกฟรี_สคริปต์ระบบบันทึกรายรับ_รายจ่าย_php.html
แจกฟรี สคริปต์ระบบบันทึกรายรับ-รายจ่าย PHP


PHP Checking Work Day , Holiday ตรวจสอบวันหยุด และวันหยุดราชการ http://www.thaicreate.com/community/php-workday-holiday-sunday-saturday.html
PHP Checking Work Day , Holiday ตรวจสอบวันหยุด และวันหยุดราชการ


ว่าด้วยเรื่องการ สั่ง print สลิปผ่านหน้าเว็บเบราเซอร์
http://www.thaicreate.com/php/forum/099263.html



ลองเลือกดาวน์โหลดไปศึกษากันดูนะครับ ^^
#อยากได้อะไรลองเข้าไปค้นหากันในบอร์ดเพิ่มเติมกันเลยนะครับ


PHP CI MANIA PHP Code Generator 
โปรแกรมช่วยสร้างโค้ด ลดเวลาการเขียนโปรแกรม เขียนโปรแกรมง่ายและสะดวกขึ้น
สนใจสั่งซื้อราคาสุดคุ้ม >> http://fastcoding.phpcodemania.com/



บทความแนะนำ
PHP กับจัดการฐานข้อมูลหมวดหมู่สินค้า MySQL แบบใช้ตารางเพียงตารางเดียวเท่านั้น 
เว็บ StackOverFlow ใช้งานยังไง จะเอาโค้ดมาใช้งานจากส่วนไหนมือใหม่หัดเขียน PHP
การเขียนโปรแกรม PHP ดึงข้อมูล VAT จาก Web Service ของกรมสรรพากร ด้วย NuSoap
การเขียนโปรแกรม JavaScript เพื่อรับค่าพารามิเตอร์ GET จาก URL ของหน้าเว็บเพจ 
เขียนโปรแกรม PHP เชื่อมข้อมูลหลายตารางแบบไม่ใช้ INNER/LEFT JOIN
เขียนโปรแกรม PHP รายงานยอดจองประจำเดือนด้วย Array
การทำ Index ให้ MySQL Database เพื่อเพิ่มความเร็ว
PHP การแสดงสถานะการจอง ด้วยเก้าอี้ สีเขียว สีแดง
สร้างหน้าเว็บ PHP ไฟล์เดียว แต่เปลี่ยนข้อมูลหลายๆหน้า

มาฝึกเขียน PHP กันเถอะ

โดย SONGCHAI SAETERN

มาเริ่มต้นฝึกเขียน PHP สไตล์ "Cyberman" กันเถอะ


"จะเริ่มจากตรงไหนดี" เป็นคำถามที่เกิดขึ้นในใจหลายๆท่าน เมื่อต้องเริ่มต้นทำอะไรสักอย่างหนึ่ง

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

แต่สำหรับการเรียนรู้แบบเร่งรัดด้วยตัวเองนั้น ผมขอแนะนำดังนี้

กรณีที่ไม่ได้รีบร้อน

ให้ท่านตรงไปที่ร้านหนังสือแล้วไปยังโซนหนังสือคอมพิวเตอร์ แล้วเลือกเล่มที่ระบุว่าเป็นคู่มือ หรือ PHP พื้นฐานอะไรประมาณนี้ แล้วซื้อเก็บไว้สัก 1 เล่ม อ่านผ่านๆไปหนึ่งรอบเพื่อดูภาพรวม

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

กรณีที่มีเวลาจำกัด หรืออยากจะทำโปรเจ็กต์เร่งด่วน

ค้นหาข้อมูลในอินเตอร์เน็ต ดาวน์โหลดซอร์สโค้ดที่แจกให้ใช้มาลองใช้งานดู (แจกโค้ด PHP : รวมลิงค์ แจกฟรี!! ตัวอย่างโปรเจ็กต์ ที่พัฒนาด้วย PHP) และปรับแต่งส่วนต่างๆให้เข้ากับงานของตัวเอง ซึ่งตรงนี้ถ้ายังรู้สึกว่ายากเกินไป ก็ให้เริ่มจากทำตาม Workshop ง่ายๆก่อน เช่น

เตรียมความพร้อมก่อนเขียนโปรแกรม PHP

เตรียมตัวก่อนเขียน PHP 5.5:
http://www.youtube.com/playlist?list=PLEFxdFJkMLu78rEFPPzkpeieOGEJp730g
เตรียมพร้อมก่อนเขียน PHP





มาทำความคุ้นเคยกับ MySQL 

PHP เบื้องต้น การใช้งานคลาส CRUD ด้วย PDO: 

ตัวอย่างการเกี่ยวกับการทำงานร่วมกับฐานข้อมูล MySQL

PHP กับฐานข้อมูล MySQL:
http://www.youtube.com/playlist?list=PLEFxdFJkMLu5wbiLarsm-OoIk_BR6N99g

ตัวอย่างอื่นๆ เกี่ยวกับฐานข้อมูล MySQL

PHP สำหรับผู้เริ่มต้น: 

การค้นหา "คำตอบ"

เราจะค้นหาข้อมูลในอินเตอร์เน็ตอย่างไรจึงจะเจอคำตอบที่ใช่?

เรื่องนี้ไม่ยากครับ เพียงแต่ต้องพยายามเลือกคำที่ตรงกับสิ่งที่ต้องการให้มากที่สุด เช่น ถ้าเราต้องการฟังก์ชั่นหรือคำสั่งที่เกี่ยวกับวันที่ อย่างการแปลงวันที่สากลเป็นวันที่แบบตัวอักษรไทย เราก็พิมพ์คำว่า PHP นำหน้าไปก่อนเลยทุกครั้ง

PHP วันที่ไทย

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


นอกจากนี้ ก็หาได้จากการกำหนดเว็บไซต์ที่ต้องการอย่างเจาะจงได้โดยการต่อชื่อเว็บไว้ด้านท้ายครับ

PHP วันที่ไทย thaicreate.com

หรือถ้าหาไม่เจอจริงๆ ก็ให้ต่อท้ายด้วยเว็บนี้ครับ StackOverflow.Com เพียงแต่ว่าต้องแปลเป็นภาษาอังกฤษก่อนนะครับ 

PHP date format stackoverflow.com

ซึ่งส่วนใหญ่ผมจะใช้กรณีค้นหาบทความภาษาไทยไม่เจอเท่านั้น เพราะอ่านยากครับ ^O^

สำหรับวิธีฝึกเขียน PHP ด้วยตนเองแบบคร่าวๆ ก็มีเพียงเท่านี้ครับ ท่านใดมีวิธีน่าสนใจก็อย่าลืมคอมเมนต์ไว้ท้ายบทความแนะนำกันได้นะครับ



เครื่องมือสร้างโค้ด PHP
https://phpcodemania.blogspot.com/p/php-ci-mania.html



PHP CI MANIA PHP Code Generator 
โปรแกรมช่วยสร้างโค้ด ลดเวลาการเขียนโปรแกรม เขียนโปรแกรมง่ายและสะดวกขึ้น
สนใจสั่งซื้อราคาสุดคุ้ม >> http://fastcoding.phpcodemania.com/

เขียนโปรแกรม PHP ตัดข้อความเป็นตัวๆ ด้วยฟังก์ชั่น chunk_split()

โดย CyberMAN

ฟังก์ชั่น chunk_split()

ใช้สำหรับแยกตัวอักษรออกเป็นทีละตัวโดยคั่นด้วย "\n" ที่เป็นการเว้นบรรทัด
เมื่อนำมา echo เพื่อแสดงผลในแท็ก <pre> จะมีการจัดรูปแบบให้เห็นชัดเจนว่าขึ้นบรรทัดใหม่ทีละตัว


สำหรับฟังก์ชั่น word_chunk() จะเป็นฟังก์ชั่นที่ผู้ใช้สร้างขึ้นมาเองเพื่อตัดข้อความออกเป็นชุดติดกัน จะต่างกับ  chunk_split() ที่ตัดทีละตัว

อ้างอิง : http://php.net/manual/en/function.chunk-split.php




<?php
header('Content-Type: text/html; charset=utf-8');

function word_chunk($str, $len = 76, $end = "\n") {
    $pattern = '~.{1,' . $len . '}~u'; // like "~.{1,76}~u"
    $str = preg_replace($pattern, '$0' . $end, $str);
    return rtrim($str, $end);
}

$str = 'สวัสดีครับ';

echo '<pre style="margin:10px">';
echo chunk_split($str, 3) ."<br/>";
echo word_chunk($str, 3) . "<br/>";
echo '</pre>';
?>



PHP CI MANIA PHP Code Generator 
โปรแกรมช่วยสร้างโค้ด ลดเวลาการเขียนโปรแกรม เขียนโปรแกรมง่ายและสะดวกขึ้น
สนใจสั่งซื้อราคาสุดคุ้ม >> http://fastcoding.phpcodemania.com/

 

PHP Array เขียนโปรแกรม PHP รายงานยอดจองประจำเดือนด้วย Array

โดย SONGCHAI SAETERN

ผลลัพธ์ของโปรแกรมดังภาพ เกิดการเขียนโปรแกรม PHP ดึงข้อมูลจากฐานข้อมูล MySQL มาเก็บไว้ใน Array จากนั้นก็วนลูปอาร์เรย์ออกมาแสดงผลและเปรียบเทียบรหัสพนักงานใน $allReportData หากตรงกันก็แสดงยอดที่พนักงานทำได้ออกมาตามวันที่


วิดีโอแสดงการทำงาน



SQL สร้างตารางข้อมูลทดสอบ



--
-- Table structure for table `tb_report_booking`
--
CREATE TABLE IF NOT EXISTS `tb_report_booking` (
`bk_id` int(13) NOT NULL AUTO_INCREMENT,
`bk_user_code` bigint(10) NOT NULL,
`bk_date` date NOT NULL,
`bk_customer_code` bigint(10) NOT NULL,
`bk_customer_name` varchar(40) NOT NULL,
`bk_remark` varchar(225) NOT NULL,
PRIMARY KEY (`bk_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=15 ;
--
-- Dumping data for table `tb_report_booking`
--
INSERT INTO `tb_report_booking` (`bk_id`, `bk_user_code`, `bk_date`, `bk_customer_code`, `bk_customer_name`, `bk_remark`) VALUES(1, 2556020001, '2013-07-01', 2147483647, 'Mr.Brain', '');
INSERT INTO `tb_report_booking` (`bk_id`, `bk_user_code`, `bk_date`, `bk_customer_code`, `bk_customer_name`, `bk_remark`) VALUES(2, 2556020001, '2013-07-04', 32123, 'Mr.BomBae', '');
INSERT INTO `tb_report_booking` (`bk_id`, `bk_user_code`, `bk_date`, `bk_customer_code`, `bk_customer_name`, `bk_remark`) VALUES(3, 2556020001, '2013-07-05', 2147483647, 'Mr.Brain', '');
INSERT INTO `tb_report_booking` (`bk_id`, `bk_user_code`, `bk_date`, `bk_customer_code`, `bk_customer_name`, `bk_remark`) VALUES(4, 2556020001, '2013-07-17', 32123, 'Mr.BomBae', '');
INSERT INTO `tb_report_booking` (`bk_id`, `bk_user_code`, `bk_date`, `bk_customer_code`, `bk_customer_name`, `bk_remark`) VALUES(5, 2556020001, '2013-07-04', 25560, 'Mr.Brain', '');
INSERT INTO `tb_report_booking` (`bk_id`, `bk_user_code`, `bk_date`, `bk_customer_code`, `bk_customer_name`, `bk_remark`) VALUES(6, 2556020001, '2013-07-05', 121212, 'Mr.Brain333', '');
INSERT INTO `tb_report_booking` (`bk_id`, `bk_user_code`, `bk_date`, `bk_customer_code`, `bk_customer_name`, `bk_remark`) VALUES(7, 2556020002, '2013-07-05', 32123, 'asdfasdf', '');
INSERT INTO `tb_report_booking` (`bk_id`, `bk_user_code`, `bk_date`, `bk_customer_code`, `bk_customer_name`, `bk_remark`) VALUES(8, 2556020003, '2013-07-02', 20002, 'Mr.Brain44', '');
INSERT INTO `tb_report_booking` (`bk_id`, `bk_user_code`, `bk_date`, `bk_customer_code`, `bk_customer_name`, `bk_remark`) VALUES(9, 2556020005, '2013-07-25', 5601249, 'Mr.Lee JungKi', '');
INSERT INTO `tb_report_booking` (`bk_id`, `bk_user_code`, `bk_date`, `bk_customer_code`, `bk_customer_name`, `bk_remark`) VALUES(10, 2556020005, '2013-07-10', 5601249, 'Mr.Jang Okjong', '');
INSERT INTO `tb_report_booking` (`bk_id`, `bk_user_code`, `bk_date`, `bk_customer_code`, `bk_customer_name`, `bk_remark`) VALUES(11, 2556020005, '2013-07-10', 5601249, 'Mr.Jang Okjong', '');
INSERT INTO `tb_report_booking` (`bk_id`, `bk_user_code`, `bk_date`, `bk_customer_code`, `bk_customer_name`, `bk_remark`) VALUES(12, 2556020005, '2013-07-10', 5601249, 'Mr.Jang Okjong', '');
INSERT INTO `tb_report_booking` (`bk_id`, `bk_user_code`, `bk_date`, `bk_customer_code`, `bk_customer_name`, `bk_remark`) VALUES(13, 2556020001, '2013-07-10', 5601249, 'Mr.Jang Okjong', '');
INSERT INTO `tb_report_booking` (`bk_id`, `bk_user_code`, `bk_date`, `bk_customer_code`, `bk_customer_name`, `bk_remark`) VALUES(14, 2556020003, '2013-07-21', 5601249, 'Mr.Jang Okjong', '');
-- --------------------------------------------------------
--
-- Table structure for table `tb_user`
--
CREATE TABLE IF NOT EXISTS `tb_user` (
`user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'อัตโนมัติ',
`user_code` varchar(20) NOT NULL COMMENT 'รหัสสมาชิก',
`user_name` varchar(30) NOT NULL COMMENT 'ชื่อล็อกอิน',
`user_password` varchar(60) NOT NULL COMMENT 'รหัสผ่าน',
`user_fullname` varchar(100) NOT NULL COMMENT 'ชื่อนามสกุล',
`user_nickname` varchar(30) NOT NULL COMMENT 'ชื่อเล่น',
`user_school` varchar(50) NOT NULL COMMENT 'โรงเรียน',
`user_level` int(1) NOT NULL COMMENT 'ระดับ',
`user_active_status` int(1) NOT NULL COMMENT 'สถานะ',
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='ข้อมูลสมาชิก' AUTO_INCREMENT=8 ;
--
-- Dumping data for table `tb_user`
--
INSERT INTO `tb_user` (`user_id`, `user_code`, `user_name`, `user_password`, `user_fullname`, `user_nickname`, `user_school`, `user_level`, `user_active_status`) VALUES(6, '2556020006', 'sunzandesign6', 'abc123', 'นายณัฐพงษ์ คงรี', '', '', 2, 1);
INSERT INTO `tb_user` (`user_id`, `user_code`, `user_name`, `user_password`, `user_fullname`, `user_nickname`, `user_school`, `user_level`, `user_active_status`) VALUES(5, '2556020005', 'sunzandesign5', 'abc123', 'นางสาวอรทัย ใจเย็น', '', '', 2, 1);
INSERT INTO `tb_user` (`user_id`, `user_code`, `user_name`, `user_password`, `user_fullname`, `user_nickname`, `user_school`, `user_level`, `user_active_status`) VALUES(4, '2556020004', 'sunzandesign4', 'abc123', 'นางสาวสุวิมล สุดใจ', '', '', 2, 1);
INSERT INTO `tb_user` (`user_id`, `user_code`, `user_name`, `user_password`, `user_fullname`, `user_nickname`, `user_school`, `user_level`, `user_active_status`) VALUES(3, '2556020003', 'sunzandesign3', 'abc123', 'นางสาวรุ่งนภา พงษ์พันธ์', '', '', 2, 1);
INSERT INTO `tb_user` (`user_id`, `user_code`, `user_name`, `user_password`, `user_fullname`, `user_nickname`, `user_school`, `user_level`, `user_active_status`) VALUES(2, '2556020002', 'sunzandesign2', 'abc1234', 'นายรณพีร์ พณรี', '', '', 2, 1);
INSERT INTO `tb_user` (`user_id`, `user_code`, `user_name`, `user_password`, `user_fullname`, `user_nickname`, `user_school`, `user_level`, `user_active_status`) VALUES(1, '2556020001', 'sunzandesign', 'abc123', 'ซันซาน ดีไซน์', '', '', 1, 1);
INSERT INTO `tb_user` (`user_id`, `user_code`, `user_name`, `user_password`, `user_fullname`, `user_nickname`, `user_school`, `user_level`, `user_active_status`) VALUES(7, '2556020007', 'sunzandesign7', 'abc123', 'นายนิคม บุญส่ง', '', '', 2, 1);


PHP โค้ดแสดงผล

<?php
//เปิดการเชื่อมต่อฐานข้อมูล sunzandesign
//mysql_connect("localhost","root","abcd1234");  //ข้อมูลนี้ได้มาจากตอนติดตั้งเว็บเซิร์ฟเวอร์
$conn = mysqli_connect("localhost","tobedev","abcd.1234", "db_tobedev");  //ข้อมูลนี้ได้มาจากตอนติดตั้งเว็บเซิร์ฟเวอร์
mysqli_set_charset($conn, "utf8");//ส่วนนี้คือการตั้งค่า encoding แบบสากล ถ้าฐานข้อมูลเป็น tis-620 ก็ต้องเปลี่ยนด้วย
?>
<html>
<head>
<title>FB : PHP สำหรับผู้เริ่มต้น</title>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
<style>
.number{ text-align : right;}
.number div{
 background: #91F7A4;
 color : #ff0000;
}
#test_report th{ background-color : #21BBD6; color : #ffffff;}
#test_report{
 border-right : 1px solid #eeeeee;
 border-bottom : 1px solid #eeeeee;
}
#test_report td,#test_report th{
 border-top : 1px solid #eeeeee;
 border-left : 1px solid #eeeeee;
 padding : 2px;
}
#txt_year{ width : 70px;}
.fail{ color : red;}
</style>
</head>
<body>
<p>ข้อมูลทดสอบอยู่ในเดือน <b>กรกฎาคม</b> ปี <b>2556</b></p>
<form method="POST" action="<?php echo $_SERVER['PHP_SELF'];?>">
 <table>
  <tr>
   <td>ระบุเดือน-ปี : </td>
   <td>
    <select name="txt_month">
     <option value="">--------------</option>
     <?php
     $month = array('01' => 'มกราคม', '02' => 'กุมภาพันธ์', '03' => 'มีนาคม', '04' => 'เมษายน',
         '05' => 'พฤษภาคม', '06' => 'มิถุนายน', '07' => 'กรกฎาคม', '08' => 'สิงหาคม',
         '09' => 'กันยายน ', '10' => 'ตุลาคม', '11' => 'พฤศจิกายน', '12' => 'ธันวาคม');
     $txtMonth = isset($_POST['txt_month']) && $_POST['txt_month'] != '' ? $_POST['txt_month'] : date('m');
     foreach($month as $i=>$mName) {
      $selected = '';
      if($txtMonth == $i) $selected = 'selected="selected"';
      echo '<option value="'.$i.'" '.$selected.'>'. $mName .'</option>'."\n";
     }
     ?>
    </select>
   </td>
   <td>
    <select name="txt_year">
     <option value="">--------------</option>
     <?php
     $txtYear = (isset($_POST['txt_year']) && $_POST['txt_year'] != '') ? $_POST['txt_year'] : date('Y');
     $yearStart = date('Y');
     $yearEnd = $txtYear-5;
     for($year=$yearStart;$year > $yearEnd;$year--){
      $selected = '';
      if($txtYear == $year) $selected = 'selected="selected"';
      echo '<option value="'.$year.'" '.$selected.'>'. ($year+543) .'</option>'."\n";
     }
     ?>
    </select>
   </td>
   <td><input type="submit" value="ค้นหา" /></td>
  </tr>
 </table>
</form>
<?php
//รับค่าตัวแปรที่ส่งมาจากแบบฟอร์ม HTML
$year = isset($_POST['txt_year']) ? mysqli_real_escape_string($conn, $_POST['txt_year']) : '';
$month = isset($_POST['txt_month']) ? mysqli_real_escape_string($conn, $_POST['txt_month']) : '';
if($year == '' || $month == '') exit('<p class="fail">กรุณาระบุ "เดือน-ปี" ที่ต้องการเรียกรายงาน</p>');


//ดึงข้อมูลพนักงานทั้งหมด
//ในส่วนนี้จะเก็บข้อมูลโดยใช้คีย์ เป็นรหัสพนักงาน และ value คือชื่อพนักงาน
$allEmpData = array();
$strSQL = "SELECT user_code,user_fullname FROM `tb_user` ";
$qry = mysqli_query($conn, $strSQL) or die('ไม่สามารถเชื่อมต่อฐานข้อมูลได้ Error : '. mysqli_error());
while($row = mysqli_fetch_assoc($qry)){
 $allEmpData[$row['user_code']] = $row['user_fullname'];
}
/*
echo "<pre>";
print_r($allEmpData);
echo "</pre>";
*/
//เรียกข้อมูลการจองของเดือนที่ต้องการ
$allReportData = array();
$strSQL = "SELECT bk_user_code, DAY(`bk_date`) AS bk_day, COUNT(*) AS numBook FROM `tb_report_booking` ";
$strSQL.= "WHERE `bk_date` LIKE '$year-$month%' ";
$strSQL.= "GROUP by bk_user_code,DAY(`bk_date`)";
$qry = mysqli_query($conn, $strSQL) or die('ไม่สามารถเชื่อมต่อฐานข้อมูลได้ Error : '. mysqli_error());
while($row = mysqli_fetch_assoc($qry)){
 $allReportData[$row['bk_user_code']][$row['bk_day']] = $row['numBook'];
}
echo "<table border='0' id='test_report' cellpadding='0' cellspacing='0'>";
echo '<tr>';//เปิดแถวใหม่ ตาราง HTML
echo '<th>รายชื่อพนักงาน</th>';
//วันที่สุดท้ายของเดือน
$timeDate = strtotime($year.'-'.$month."-01");  //เปลี่ยนวันที่เป็น timestamp
$lastDay = date("t", $timeDate);       //จำนวนวันของเดือน
//echo "$timeDate";
//สร้างหัวตารางตั้งแต่วันที่ 1 ถึงวันที่สุดท้ายของดือน
for($day=1;$day<=$lastDay;$day++){
 echo '<th>' . substr("0".$day, -2) . '</th>';
}
echo "</tr>";
//วนลูปเพื่อสร้างตารางตามจำนวนรายชื่อพนักงานใน Array
foreach($allEmpData as $empCode=>$empName){
 echo '<tr>';//เปิดแถวใหม่ ตาราง HTML
  echo '<td>'. $empName .'</td>';
  //เรียกข้อมูลการจองของพนักงานแต่ละคน ในเดือนนี้
 for($j=1;$j<=$lastDay;$j++){
  //ตรวจสอบว่าวันที่แต่ละวัน $j ของ พนักงานแต่ละรหัส  $empCode มีข้อมูลใน  $allReportData หรือไม่ ถ้ามีให้แสดงจำนวนในอาร์เรย์ออกมา ถ้าไม่มีให้เป็น 0
  $numBook = isset($allReportData[$empCode][$j]) ? '<div>'.$allReportData[$empCode][$j].'</div>' : 0;
  echo "<td class='number'>", $numBook, "</td>";
 }
  echo '</tr>';//ปิดแถวตาราง HTML
}
echo "</table>";
/*
echo "<pre>";
print_r($allReportData);
echo "</pre>";
*/
mysqli_close($conn);//ปิดการเชื่อมต่อฐานข้อมูล
?>


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

PHP CI MANIA PHP Code Generator 
โปรแกรมช่วยสร้างโค้ด ลดเวลาการเขียนโปรแกรม เขียนโปรแกรมง่ายและสะดวกขึ้น
สนใจสั่งซื้อราคาสุดคุ้ม >> http://fastcoding.phpcodemania.com/

คิดเล่นๆ เกี่ยวกับระบบวิเคราะห์ความเปลี่ยนแปลงของตลาดการเกษตรไทย

โดย SONGCHAI SAETERN

วิเคราะห์ตลาดการเกษตร


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

แต่เรื่องที่ยากที่สุดของการสร้างระบบแล้วให้ใช้ได้จริงนอกจากการได้อัลกอริทึ่มที่ใช้งานได้อย่างลงตัวแล้ว เรื่องข้อมูลที่นำมาวิเคราะห์นั้นเรื่องที่สำคัญที่สุด

อย่างเช่น

จะรู้ได้อย่างไรว่าแต่ละปีนั้นบ้านเราจะปลูกอะไรกันมากเป็นพิเศษ?
หรือปีต่อไปผลผลิตของพืชพันธ์ไหนจะราคาสูงลิ่ว!!

วิธีการที่ใช้ก็คงจะเป็นการใช้แบบสอบถามสำรวจข้อมูลมาวิเคราะห์ แต่ใครกันจะตอบคำถามได้ตรงจุด และต้องใช้งบประมาณและระยะเวลาขนาดไหน สุดท้าย การเก็บข้อมูลที่ดีที่สุดในตอนนี้ก็คงจะเป็น Social Network ต่างๆ ทั้งในเว็บบอร์ดดังๆ ที่เกี่ยวกับการเกษตร และกลุ่มต่างๆบนเฟซบุ๊ก

นี่แค่นั่งคิดเล่นๆ ก็ชวนปวดหัวกันเลยทีเดียว

ตอนนี้ตัวกระผมคิดว่า จะลองทำระบบวิเคราะห์การหาขั้นตอนการกลั่นน้ำกาแฟให้ได้รสชาติที่ดีที่สุด (Espresso Perfect Shot) ของกาแฟแต่ละยี่ห้อ ที่คั่วในแต่ละระดับ ว่าต้องใช้การบดระเอียดขนาดไหน หรือต้องผสมกันอย่างไรเพื่อให้ได้รสชาติกาแฟที่ดีที่สุดให้ได้ก่อนละกัน




แหล่งที่มาของความสนใจในบทความนี้ ลองอ่านกันดูนะครับ ^O^


  1. การวิเคราะห์ปัจจัยพื้นฐาน (Fundamental Analysis) ที่กำหนดราคา สินค้าเกษตร
  2. TMB Analytics วิเคราะห์สินค้าเกษตรไทย อะไรเป็น “ดาวรุ่ง” ในปี 2560
  3. การวิเคราะห์ความต้องการของตลาดพืชสมุนไพรในท้องถิ่น
  4. การวิเคราะห์ระบบการผลิตทางการเกษตร
  5. สินค้าเกษตรปี60 ข้อมูลจากตลาดไท…ตัวไหนมีแนวโน้มดีบ้าง?
  6. การเกษตรปี 2559 ยังมีปัจจัยเสี่ยง



เก็บรวบรวมข้อมูลเกี่ยวกับ Neural Networks

โดย SONGCHAI SAETERN

Neural Networks 

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

ก็เลยลองค้นหาดูว่า PHP มีอะไรเกี่ยวกับ Neural Networks บ้างหรือไม่ ก็ได้เจอหน้านี้

FANN (Fast Artificial Neural Network)
http://php.net/manual/en/book.fann.php

แต่ก็ยังไม่รู้ว่าใช้งานยังไงก็เลยลองหาบทความมาอ่านเรื่อยๆ ก็ได้เจอกับคำว่า


โครงข่ายประสาทเทียม (Artificial Neural Networks)






https://www.gotoknow.org/posts/163433
https://th.wikipedia.org/wiki/โครงข่ายประสาทเทียม
http://thailandforexclub.com/index.php?topic=37578.0

นอกจากลิงค์ข้างบนนี่แล้ว ยังมีงานด้าน AI ของญี่ปุ่นที่น่าสนใจด้านการเกษตรอีกด้วย

ปัญญาประดิษฐ์ที่จับต้องได้ ฟาร์มแตงกวาในญี่ปุ่นใช้ Deep Learning ช่วยคัดแยกแตงกวา


นอกจากนี้ยังมีคลิปที่ฝรั่งเขาทำไว้ แต่แอดมินฟังไม่ออกครับ
ใครใจดีใส่ SUBTITLE ให้หน่อยนะครับ ^^;




แต่จากการค้นหาข้อมูลแล้วหาบทความ PHP ที่ทำ Neural Network ไม่ได้เลยครับ จึงคิดว่าถ้าทำจริงจังคงจะใช้ PHP ไม่เหมาะสมเท่าไหร่ แต่ถ้าลองค้นคำว่า "Python กับ Neural Networks" จะเจอบทความเยอะทีเดียวครับ

การทำ Index ให้ MySQL Database เพื่อเพิ่มความเร็ว

โดย SONGCHAI SAETERN
สำหรับตัวอย่างนี้จะเป็นการ JOIN ตาราง 2 ตาราง
1. tb_reject_hd
2. tb_reject_desc

ซึ่งจะเชื่อมกันด้วยฟิลด์ docno

จะเห็นว่าเราสามารถคิวรี่เรียกข้อมูลออกมาได้ตอนที่ยังไม่ใส่ ORDER BY



แต่เมื่อใส่ ORDER BY เข้าไป จะหมุนค้างจนหน้าเว็บหยุดทำงาน




จากนั้นก็ลองเพิ่ม INDEX ให้กับฟิลด์ docno ในตาราง tb_reject_desc 
ซึ่งในตัวอย่างนี้จะสร้างตารางใหม่ขึ้นมาจากตารางเดิม เปลี่ยนชื่อเป็น tb_reject_desc_with_index
และทำการเพิ่ม INDEX KEY เข้าไป





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

เช่นกรณีค้นหา แบบเรียงลำดับ





ตัวอย่างโค้ดคิวรี่ข้อมูลจากตารางที่ Add Index Key แล้ว

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Add Index Key</title>
</head>
<body>
<h2>ORDER BY with INDEX KEY</h2>
<?php
include 'db_connection.php';
$start = microtime( true );
$sql = "SELECT
tbMaster.docno,
tbMaster.userkey,
tbMaster.docdate,
tbMaster.timekey,
tbDetail.id_number,
tbMaster.create_date
FROM
tb_reject_hd AS tbMaster
INNER JOIN
tb_reject_desc_with_index AS tbDetail ON tbMaster.docno = tbDetail.docno
ORDER BY
tbMaster.docdate DESC,
tbMaster.timekey DESC
LIMIT 10 ";
$query = $pdo->prepare($sql);
$query->execute();
$data = array();
echo '<pre> '. $sql .'</pre>';
echo '<table border="1">';
echo '<tr>
<th>No</th>
<th>User</th>
<th>Date</th>
<th>Time</th>
<th>ID</th>
<th>Date Record</th>
</tr>';
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
echo '<tr>
<td>'. $row['docno'] .'</td>
<td>'. $row['userkey'] .'</td>
<td>'. $row['docdate'] .'</td>
<td>'. $row['timekey'] .'</td>
<td>'. $row['id_number'] .'</td>
<td>'. $row['create_date'] .'</td>
</tr>';
}
echo '</table>';
echo '<br><h3>',(microtime(true) - $start).'</h3>';
?>
</body>
</html>


ตัวอย่างโค้ดที่ดึงข้อมูลจากตารางที่ยังไม่ทำ INDEX

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>No Index Key, No ORDER BY</title>
</head>
<body>
<h2>no ORDER BY, no INDEX KEY</h2>
<?php
include 'db_connection.php';
$start = microtime( true );
$sql = "SELECT
tbMaster.docno,
tbMaster.userkey,
tbMaster.docdate,
tbMaster.timekey,
tbDetail.id_number,
tbMaster.create_date
FROM
tb_reject_hd AS tbMaster
INNER JOIN
tb_reject_desc AS tbDetail ON tbMaster.docno = tbDetail.docno
LIMIT 10 ";
$query = $pdo->prepare($sql);
$query->execute();
$data = array();
echo '<pre> '. $sql .'</pre>';
echo '<table border="1">';
echo '<tr>
<th>No</th>
<th>User</th>
<th>Date</th>
<th>Time</th>
<th>ID</th>
<th>Date Record</th>
</tr>';
while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
echo '<tr>
<td>'. $row['docno'] .'</td>
<td>'. $row['userkey'] .'</td>
<td>'. $row['docdate'] .'</td>
<td>'. $row['timekey'] .'</td>
<td>'. $row['id_number'] .'</td>
<td>'. $row['create_date'] .'</td>
</tr>';
}
echo '</table>';
echo '<br><h3>',(microtime(true) - $start).'</h3>';
?>
</body>
</html>


หากลองเพิ่ม

ORDER BY
tbMaster.docdate DESC,
tbMaster.timekey DESC  

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


สำหรับโครงสร้างตารางทั้ง 3 ตาราง ดาวน์โหลดได้ ที่นี่


PHP CI MANIA PHP Code Generator 
โปรแกรมช่วยสร้างโค้ด ลดเวลาการเขียนโปรแกรม เขียนโปรแกรมง่ายและสะดวกขึ้น
สนใจสั่งซื้อราคาสุดคุ้ม >> http://fastcoding.phpcodemania.com/

ติดตั้ง PHP 7.0.x สำหรับ IIS 7.5 บน Windows Server 2008 R2 64bit

โดย SONGCHAI SAETERN

สรุปขั้นตอนการอัพเกรด PHP เป็นเวอร์ชั่น 7 แบบคร่าวๆ นะครับ
สำหรับท่านใดที่ใช้ IIS เป็นเว็บเซิร์ฟเวอร์บนระบบปฏิบัติการ Windows Server 2008 R2  64bit ก็สามารถใช้ขั้นตอนต่อไปนี้ได้เลย ซึ่ง IIS สำหรับระบบปฏิบัติการ Windows Server 2008 R2 จะได้เป็นเวอร์ชั่น 7.5 และเมื่อติดตั้ง PHP จะได้เวอร์ชั่น PHP 5.3 

ติดตั้ง PHP เพื่อใช้งาน PHP บน IIS Web Server (Windows Server 2008)

หลังจากที่ปลายปีที่แล้ว PHP ได้ปล่อยเวอร์ชั่น 7 ออกมา ซึ่งเท่าที่เก็บข้อมูลมาแล้วเห็นว่าประสิทธิภาพดีกว่าทุกรุ่น จึงสนใจที่จะอัพเกรดเป็น PHP 7.0.13 ที่เป็นเวอร์ชั่นล่าสุด แต่เมื่อดาวน์โหลดมาใช้กลับไม่สามารถสั่งให้เว็บเซิร์ฟเวอร์รันได้ ก็เลยเปลี่ยนเป็นใช้วิธีติดตั้งเวอร์ชั่นที่มีใน Web Platform Installer แทน ซึ่งก็ได้เป็น PHP 7.0.9 มาแทน



สำหรับขั้นตอนการติดตั้ง PHP เวอร์ชั่นอื่นเพิ่มเติมก็มีดังนี้ครับ

1. ติดตั้ง PHP เวอร์ชั่น 7 สำหรับ IIS ผ่านทาง Web Platform Installer
https://sysadmin.psu.ac.th/…/%E0%B8%81%E0%B8%B2%E0%B8%A3-u…/


แต่หลังจากตั้งค่าผ่าน PHP Manager ใน IIS จะพบว่ายังไม่สามารถใช้งานได้ เพราะการจะรัน PHP 7.0.x ได้นั้นต้องมี VC14 ด้วย (Visual C++ Redistributable for Visual Studio 2015)
http://comerror.com/runtime-l1-1-0-dll-is-missing.html

แต่การจะติดตั้ง VC14 ได้นั้นระบบปฏิบัติการจะต้องอัพเกรดเป็น Service Pack 1 ก่อน

2. อัพเกรด Windows Server เป็น SP1 (ค้นหาด้วยคำว่า Windows Server 2008 R2 SP1)

เลือก windows6.1-KB976932-X64
>>> https://thaiwinadmin.blogspot.com/2011/02/install-windows-server-2008-r2-sp1.html

3. ติดตั้ง VC14 จะเป็นเวอร์ชั่น Visual C++ Redistributable for Visual Studio 2015
Visual C++ Redistributable for Visual Studio 2015
https://www.microsoft.com/en-us/download/details.aspx?id=48145


หลังจากนั้นก็รันเปลี่ยนเวอร์ชั่นไปมาระหว่าง 5.3 กับ 7.0 ด้วย PHP Manager ใน IIS ได้ตามสะดวก ^^" ซึ่งตอนนี้ได้ลองทดสอบใน VMWare แล้วผ่านฉลุย ต่อไปก็จะเป็นขั้นตอนการเปลี่ยนโค้ดจาก PHP 5.3 ไปเป็น PHP 7.0 โดยการไล่แก้คำสั่งหรือฟังก์ชั่นที่ถูกยกเลิกไปแล้ว

ซึ่งงานตรงนี้คงจะใช้เวลาค่อนข้างนานทีเดียว แต่ก็ลดเวลาในส่วนของการจัดการฐานข้อมูลได้หน่อยเพราะผมใช้คลาสที่เขียนแยกเอาไว้ ก็ไม่ต้องไปไล่แก้คำสั่งที่เกี่ยวกับฐานข้อมูลทุกหน้า แค่แก้ที่คลาสที่เดียวก็จบเลย (ตรงนี้แหละครับเป็นจุดที่ผมอยากเปลี่ยนไปใช้ CodeIgntier เพราะเราไม่ต้องแก้อะไรเลย ^^ เวลาเปลี่ยนเวอร์ชั่น PHP หรือเปลี่ยนฐานข้อมูล ถ้าใช้ Class ที่มีอยู่แล้วของ Framework)


ท่านใดที่ใช้ Windows Server ก็ลองสร้าง VM สักตัวแล้วลองทำตามขั้นตอนนี้กันดูนะครับ ^^

-------------
เพิ่มกรณีแก้ไข my.ini เพื่อเปลี่ยน datadir ของ MySQL แล้วไม่สามารถ Start MySQL Service ได้



กรณีในโฟลเดอร์ data ของ MySQL ตัวที่ติดตั้งใหม่ไม่มี 3 ไฟล์นี้ ให้ย้าย 3 ไฟล์นี้ออกไปที่อื่น (เก็บเป็น BACKUP เอาไว้ป้องกันมีปัญหาต้องการนำกลับมาใหม่)

เมื่อย้าย 3 ไฟล์นี้ออกไปแล้วลอง Start Service อีกครั้ง จะสามารถรันได้ปกติ



PHP CI MANIA PHP Code Generator 
โปรแกรมช่วยสร้างโค้ด ลดเวลาการเขียนโปรแกรม เขียนโปรแกรมง่ายและสะดวกขึ้น
สนใจสั่งซื้อราคาสุดคุ้ม >> http://fastcoding.phpcodemania.com/