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

บทความ

กำลังแสดงโพสต์จาก พฤษภาคม, 2020

รายละเอียดการอัพเดตโปรแกรม PHP CI MANIA เวอร์ชั่น 0.8.4.02 PHP CI MANIA

- Fix bug การเพิ่มรายการหน้า Add จะเกิดข้อความ Error และไม่สามารถดึงรายการมาแสดงได้ - Fix bug การคำนวณผลรวมในหน้า Add ไม่ทำงานเหมือนหน้า Edit - Fix bug การ Bakup ไฟล์อัตโนมัติ กรณีอัพเดตผ่าน PHP CI MANIA ไฟล์ไม่รวมกัน สมาชิกอัพเดตได้ที่นี่ http://fastcoding.phpcodemania.com/index.php/downloads PHP  CI  MANIA   - PHP Code Generator  โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม" ราคาสุดคุ้ม    4,500    บาท http://fastcoding.phpcodemania.com

รายละเอียดการอัพเดตโปรแกรม PHP CI MANIA เวอร์ชั่น 0.8.4.01

รายละเอียดการอัพเดตโปรแกรม PHP CI MANIA เวอร์ชั่น 0.8.4.01 Fix bug สำหรับ PHP เวอร์ชั่น 7.3 กรณีหน้า Preveiw แสดงรายการไม่ครบ Fix bug การคำนวณผลรวมอัตโนมัติในหน้า Add ไม่ทำงาน (แต่หน้า Edit ทำงาน)  New Feature การนำเข้าข้อมูล Excel กรณีฟิลด์ที่เป็น Unique Key จะตรวจสอบค่าซ้ำอัตโนมัติ PHP  CI  MANIA   - PHP Code Generator  โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม" ราคาสุดคุ้ม    4,500    บาท http://fastcoding.phpcodemania.com

CodeIgniter form validation regex_match ตัวเลขรหัสประจำตัวประชาชน 13 หลัก

มาเขียนฟังก์ชั่นเพิ่มเติม เพื่อตรวจสอบตัวเลขรหัสประจำตัวประชาชน 13 หลัก #CodeIgniter #Validation 1. เพิ่ม ฟังก์ชั่น ตรวจสอบตัวเลข 13 หลัก public function id_card_check($id_card) { if(preg_match('/^[0-9]{13}$/', $id_card)){ return true; }else{ return false; } } 2. เพิ่ม callback เข้าไปในส่วนของ  set_rules() $frm->set_rules( 'id_card', 'รหัสประชาชน', 'trim|required| callback_id_card_check ' ); 3. เพิ่มข้อความส่วนของ  set_message() เมื่อเข้าเงื่อนไขที่ไม่ถูกต้อง $frm-> set_message('id_card_check', '- %s ต้องเป็นเลข 13 หลัก'); วิดีโอตัวอย่าง PHP  CI  MANIA   - PHP Code Generator  โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม" ราคาสุดคุ้ม    4,500    บาท http://fastcoding.phpcodemania.com

PHP CI MANIA เวอร์ชั่น 0.8.4 เพิ่มระบบลงทะเบียนสมาชิก และลืมรหัสผ่าน สมาชิกสามารถอัพโหลดรูปโปรไฟล์ได้เอง

ในการอัพเดตครั้งนี้ จะเป็นการแก้บั๊กในบางส่วน และหลักๆคือ เพิ่มของการลงทะเบียนสมาชิกใหม่ ที่สามารถยืนยันความถูกต้องด้วยการยืนยันผ่านอีเมล และกรณีลืมรหัสผ่านก็สามารถขอเปลี่ยนรหัสผ่าน ทาง Email ได้เช่นกัน หน้าล็อกอินแบบใหม่ใช้ Email ในการล็อกอิน ระบบลงทะเบียนด้วยตนเอง โดยยืนยันผ่านอีเมล กรณีลืมรหัสผ่าน สามารถใช้ฟังก์ชั่นลืมรหัสผ่านเพื่อรีเซ็ตรหัสผ่านอีเมลได้ ส่วนที่ต้องคอนฟิกเพิ่มเติมใน Project ก็คือ 1. ส่วนเมลผ่าน Mail Server ของเว็บโฮสติ้งที่เราใช้บริการ     แก้ไขที่ไฟล์ application/config/email.php 2. ส่งเมลผ่าน SMTP ของ Gmail ที่เราสมัครใช้บริการ (ต้องมีอีเมล์ your_gmail_account@gmail.com )     แก้ไขที่ไฟล์  application/config/gmail.php *** หมายเหตุ *** กรณีที่ 2 เมื่อใช้บริการผ่าน Gmail จำเป็นจะต้องเปิด "การเข้าถึงของแอปที่มีความปลอดภัยน้อย" เพื่อให้สามารถส่งอีเมลจาก PHP ที่เรากำหนดไว้ด้วย วิธีการเปิดการเข้าถึงมีดังนี้ เข้าไปที่เมนู ความปลอดภัย คลิกเพื่อเปิดการเข้าถึง เพียงเท่านี้ก็สามารถส่งอีเมลด้วย PHP ผ่าน SMTP ของ Gmail ได้แล้วครับ ส่วนของฐา...

ขั้นตอนการส่งโค้ดจากระบบ PHP CI MANIA ให้แอดมินตรวจสอบ (กรณีที่ไม่ได้ Error จากการ Generate)

ส่วนที่ต้องส่งให้แอดมินมีดังนี้ ส่วนของ PHP + MVC ส่วนของไฟล์ JavaScript ส่วนของ Table ที่เกี่ยวข้อง เช่นตัวอย่างนี้ใช้แค่ 1 ตารางก็จะ Export โดยเลือกแค่ตารางเดียว สรุปแล้วมีทั้งหมด 3 ส่วนด้วยกัน คือ 1. ส่วนของโมดูล MVC 2. ส่วนของ JavaScript 3. ส่วนของ Table ที่เกี่ยวข้อง PHP  CI  MANIA   - PHP Code Generator  โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม" ราคาสุดคุ้ม    4,500    บาท http://fastcoding.phpcodemania.com

CodeIgniter Generator คำนวณอายุงาน

ส่วนของ Controller public function get_year_experience() { $start_date = $this->input->post('start_date', TRUE); if($start_date){ $start_date = setDateToStandard($start_date); $end_date = $this->input->post('quit_date', TRUE); if(!$end_date){ $end_date = date('Y-m-d'); }else{ $end_date = setDateToStandard($end_date); } $arr = ci_date_diff($start_date, $end_date); echo "$arr[year] ปี $arr[month] เดือน $arr[day] วัน"; } } ส่วนของ JavaScript     ฟังก์ชั่น getYearExperience: function(elem_date, elem_loading){ var obj_loading = $(elem_loading); loading_on(obj_loading); var frm_action = site_url('demo/employee/get_year_experience'); var frm_data = 'start_date=' + $(elem_date).val(); frm_data += '&' + csrf_token_name + '=' + $.cookie(csrf_cookie_name); $.ajax({    method: 'POST',    url: frm_action,    data...

Master & Detail วิธีคัดลอกโค้ดที่ Generate ออกมาแล้วต้องการตัดเอาเฉพาะส่วนของ Detail เพื่อเอาไปรวมกัน

กรณีที่มีการใช้ตารางย่อย หลายตาราง แต่ระบบ PHP CI MANIA สามารถ Generate การบันทึกแบบ Master & Detail ได้เพียงแค่ชุดเดียวต่อครั้ง เราก็จำเป็นจะต้องใช้ชุดแรกเป็นไฟล์หลัก และ Generate ชุดตารางย่อย Detail อื่นๆ แล้วเอาโค้ดไปรวมกันกับชุดหลักเพื่อใช้งานด้วยกัน ส่วนของ Model  ที่เกี่ยวกับตารางย่อย Detail loadDetailList() load_detail_record() save_detail_list() delete_list()      สำหรับส่วนของ Model เราไม่ต้องคัดลอกไปรวมกัน  เพียงแค่ตั้งชื่อไฟล์ Model ใหม่ให้สื่อความหมายว่าใช้สำหรับทำอะไร แล้ว Load เข้าไปใน Controller ชุดหลักเพิ่มด้วยเท่านั้น      เช่น            models/Education_model.php สำหรับประวัติการศึกษา          models/Work_model.php สำหรับประวัติการทำงาน      แล้วก็โหลดเข้าไปใช้กับ Controller หลัก           $this->load->model('module_name/ Master_model ', 'MasterXXX');           $this->load->model...

แจกฟรี PHPExcel สำหรับ PHP 7.4

หลายๆท่าน น่าจะเจอปัญหาเหมือนกันนะครับ กับการเปลี่ยนไปใช้ PHP 7.4 แล้วไลบรารี่ PHPExcel ไม่ทำงาน เกิด Error ขึ้นมาหลายจุดเลยทีเดียวครับ ( ต้องมานั่งแก้อยู่หลายวันทีเดียว ^^; ) ข้อความแจ้งข้อผิดพลาด (Error message) ที่เจอได้แก่ Warning: “continue” targeting switch is equivalent to “break”. Did you mean to use “continue 2”? Array and string offset access syntax with curly braces is deprecated วิธีแก้ไขก็คือ วิ่งตาม File และ Line ที่ระบุในข้อความ Error จากนั้นก็แก้ให้หมดตามวิธีแก้ไขที่ค้นหาจากเว็บบอร์ดต่างๆ เช่น StackOverFlow.com  หลังจากที่แก้ไขจนสามารถรันได้แล้ว แอดมินก็ได้จัดการรวมไฟล์ไว้ และท่านสามารถเข้าไปดาวน์โหลดมาทดลองใช้งานได้จากลิงค์นี้ครับ >>   แจกฟรี PHPExcel สำหรับ PHP 7.4   << PHPExcel https://github.com/PHPOffice/PHPExcel PhpSpreadsheet https://github.com/PHPOffice/PhpSpreadsheet PHP  CI  MANIA   - PHP Code Generator  โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม" ราคาสุดคุ้ม    4,500    บาท http:/...

CodeIgniter 4 ปรากฏข้อความแจ้งข้อผิดพลาด "No database selected"

หลังจากที่เราแก้ไขปัญหา CodeIgniter 4 ไม่ยอมแสดง Error ( ขั้นตอนการเปิด Error ใน CodeIgniter 4 เมื่อข้อความ Whoops! ) ในบทความนี้ก็มาต่อกันที่การ Config การเชื่อมต่อ Database กันครับ เนื่องจาก Error ที่ปรากฏออกมาบอกว่า " No database selected " จากประสบการณ์ การใช้งาน CodeIgniter 3 มาอย่างยาวนาน ^^; จึงพอเดาได้ว่าต้องอยู่ใน Config แน่นอน เปิดไฟล์ app/Config/Database.php แล้วทำการแก้ไขให้ตรงกับค่าการเชื่อมต่อของเซิร์ฟเวอร์เรา เมื่อบันทึกการตั้งค่าเรียบร้อย และลองกลับไปรีเฟรชหน้าเว็บที่ดึงรายงานประจำปี ก็จะปรากฏข้อมูลออกมาตามที่เราสร้างคำสั่งเรียกรายงานไว้ครับ PHP  CI  MANIA   - PHP Code Generator  โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม" ราคาสุดคุ้ม    4,500    บาท http://fastcoding.phpcodemania.com

ขั้นตอนการเปิด Error ใน CodeIgniter 4 เมื่อข้อความ Whoops!

ขั้นตอนการเปิด Error ใน CodeIgniter 4 Whoops! We seem to have hit a snag. Please try again later... เมื่อเกิดข้อผิดพลาด CodeIgniter 4 จะไม่แสดง Error message ออกมาให้เห็น เพราะตั้งค่าไว้ให้รันในโหมดเว็บเซิร์ฟเวอร์จริง (Production Server) เพื่อค้นหาวิธีการเปิดข้อความ Error จึงลองค้นหาใน Google ด้วยคำว่า "how to debug codeigniter 4" ก็ได้วิธีมาว่า ให้แก้ไขค่าที่ไฟล์ env โดยแก้ไขชื่อไฟล์เป็น .env หากใช้ Notepad++ ก็ให้คลิกขวา แล้วเลือก Edit with Notepad++ เลื่อนหาบรรทัด CI_ENVIRONMENT และทำการเปลี่ยนค่า ให้ลบเครื่องหมาย # ด้านหน้าออก และเปลี่ยนค่า production เป็น development กลับไปที่หน้าเว็บบราวเซอร์ แล้วกดรีเฟรชหน้าเว็บอีกครั้ง (F5) ก็จะปรากฏข้อความแสดง error ออกมาให้ Debug กันได้ง่ายขึ้น * หมายเหตุ * กรณีนำไปใช้บนเว็บโฮสติ้ง หรือบนเว็บเซิร์ฟเวอร์จริง (Production Server) ให้ทำการแก้ไขค่าเป็น production ก่อนอัพโหลด ที่มา :  https://stackoverflow.com/questions/60501607/how-to-debug-codeigniter-4 PHP  CI  MANIA   - PHP Code Generator  โป...

ขั้นตอนการ Debug เมื่อเกิด Error ในไฟล์ JavaScript - ......... is not defined

สาเหตุหลักคือไม่ได้ประกาศค่านั้นเอาไว้ หรืออาจจะพิมพ์ตกหล่นไปบางคำ เริ่มจากการกด F12 เพื่อเปิด Console ขึ้นมา อ่านเพิ่มเติมได้ที่ การเปิด Console ของเว็บบราวเซอร์ เพื่ออ่าน Error เมื่อส่งข้อมูลแบบ Ajax เช่นตัวอย่างนี้เกิดข้อความ Error : sample is not defined เมื่อเปิดดูตามไฟล์ และบรรทัดที่แจ้งเตือน จะพบว่าเป็นการเรียกใช้คลาส sample ซึ่งเมื่อเกิด Error ก็คาดเดาได้ว่า ไม่ได้สร้างคลาส sample หรือ พิมพ์ชื่อคลาสผิด เมื่อลองตรวจสอบดู ปรากฏว่าคลาส Sample ตัวแรกเป็น ตัวพิมพ์ใหญ่ กลับไปจุดที่เกิด Error ให้แก้ไขชื่อคลาสให้ตรงกับที่สร้างไว้ หลังจาก Save เมื่อกลับมาที่หน้าเว็บ Refresh หน้าเว็บอีกครั้ง ข้อความ Error ก็จะหายไป สรุปได้ว่า not defined จะเกิดได้จากสาเหตุหลักๆคือ 1. พิมพ์ชื่อผิด 2. ไม่ได้ประกาศชื่อไว้ ซึ่งเราก็สามารถไล่ดูจุดที่เกิด Error ได้จากการเปิด Console ขึ้นมาและไล่ไปทีละจุดครับ PHP  CI  MANIA   - PHP Code Generator  โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม" ราคาสุดคุ้ม    4,500  ...

การเปิด Error Reporting บน Localhost และ Production Server

สำหรับการพัฒนาเว็บฯสิ่งที่หลีกเลี่ยงไม่ได้คือ Error ดังนั้นการจะ Debug ได้นั้น ก็ต้องทำความเข้าใจกับ Error ให้ได้เสียก่อน (ซึ่ง StackOverflow นั้นช่วยได้เยอะทีเดียว) วิธีการเปิดข้อความแจ้ง Error บน Localhost นั้นง่ายๆครับ แค่เข้าไปแก้ไขที่ไฟล์ php.ini แต่ถ้าข้อผิดพลาดเกิดขึ้นบน Production Server เราอาจจะไม่สามารถแก้ไขที่ php.ini ได้โดยตรง เราสามารถเพิ่มคำสั่งในไฟล์หน้านั้นๆ เพื่อแสดง Error ได้ดังนี้ Production Server : ( ส่วนนี้ให้เอาไว้ที่ไฟล์ Controller ที่ต้องการตรวจสอบเป็นไฟล์ๆไปนะครับ ทดสอบเสร็จก็ลบออกด้วย ) <?php     ini_set('display_errors', 1);     ini_set('display_startup_errors', 1);     error_reporting(E_ALL); นำคำสั่งสีน้ำเงินไปวางไว้บนสุด หลังเปิดแท็ก PHP เพียงเท่านี้เราก็จะเห็น Error ที่เกิดขึ้นเมื่อนำไฟล์ไปรันบน Web hosting หรือ Production Server ได้ทันที PHP  CI  MANIA   - PHP Code Generator  โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม" ราคาสุดคุ้ม    4,500    บาท htt...

ค้นหาในเว็บไซต์

เนื้อเพลงที่ได้รับความนิยม ในรอบสัปดาห์

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

       สำหรับหลายท่านที่ขอโค้ดเข้ามาทาง Inbox ของเฟซบุ๊กแฟนเพจ หรือถามถึงระบบต่างๆหลังไมค์มานั้น ส่วนใหญ่ก็มีแจกอยู่แล้วในเว็บบอร์ด ThaiCreate.Com นะครับ  และด้านล่างนี้ก็เป็น Source Code PHP ระบบต่างๆ ที่มีเหล่าผู้ใจดีแจกฟรี!! ให้นำไปลองใช้ลองศึกษากันครับ แจกฟรี  !! ตัวอย่างการ  PHP  Booking # จองห้องประชุม  ผ่านเว็บครับ http://www.thaicreate.com/php/forum/090558.html ระบบแบบสอบถาม 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 แจกระบบ PHP Shopping Cart ระบบตะกร้าสินค้า ระบบสั่งซื้อ มีระบบตัดสต๊อก, สั่งซื้อวัตถุดิบคงเหลือ ht...

จัดระเบียบโค้ด ใน Notepad++ (Auto indentation plugin)

เวลาเขียนโค้ด แล้วไม่ได้จัดรูปแบบ หรือเอาโค้ดจาก Text Editor หนึ่งมาใช้ในอีกตัวหนึ่งก็มีโอกาสที่ Tab หรือ Space bar จะต่างกัน แล้วเราจะมานั่ง TAB เองก็คงไม่ไหว จึงจำเป็นต้องหา Plugin เข้ามาช่วย ลองค้นดูก็เจอกับกระทู้นี้ >> แม้หน้าตาจะไม่ตรงกันแต่หลักๆก็คือเพิ่ม Plugins เข้าไปชื่อ Indent By fold อ่านเต็มๆได้ที่นี่ https://softwarerecs.stackexchange.com/questions/1496/auto-indentation-plugin-for-notepad

PHP ระบบบริหารจัดการ พล็อตนิยาย - ตอนที่ 1

PHP Fiction Management System   โปรเจ็กต์นี้จะสร้างเป็น "ระบบบริหารจัดการพล็อตนิยาย" แบบง่ายๆ มาเล่าสู่กันฟังครับ มีอยู่ช่วงหนึ่งที่ผมสนใจการเขียนนิยาย และค้นหาข้อมูลเพิ่มเติมเกี่ยวกับการเขียนนิยาย และได้พบกับโปรแกรมหนึ่งที่ช่วยงานด้านการเขียนนิยายให้เป็นเรื่องที่ง่ายขึ้น แต่จากที่ได้อ่านรีวิวแล้วดูเหมือนว่า โปรแกรมช่วยเขียนนิยายนี้ ไม่จะไม่ค่อยรองรับภาษาไทย แต่ผมก็ยังไม่ได้ลองมาดาวน์โหลดมาลองใช้งานดูนะครับ แต่รู้สึกชอบเครื่องมือนี้ เลยอยากลองพัฒนาโดยถอดคุณสมบัติพื้นฐานมาใช้งานดู ว่าจะใช้กับงานเขียนนิยายได้จริงรึเปล่า ตัวอย่างระบบจัดการพล็อตเรื่อง เพื่อช่วยงานเขียนนิยาย หลังจากที่ได้นั่งคิดนอนคิด และหลับไปฝันไป จนในที่สุดก็ได้ฐานข้อมูลระบบบริหารจัดการพล็อตนิยายมาคร่าวๆ มาจนได้ โครงสร้างฐานข้อมูลตอนนี้อาจจะขี้เหร่ไปบ้าง แต่ในอนาคตก็คงจะพัฒนากันต่อไป   ตารางที่จะต้องสร้าง มีทั้งหมด ดังนี้ 1. รายชื่อนิยายทั้งหมด 2. แนวนิยายที่เขียน 3. พล็อตของแต่ละเรื่อง 4. ฉากเหตุการณ์ในแต่ละพล็อต 5. เนื้อเรื่องในแต่ละฉาก 6. รายชื่อตัวละครในนิยา...

ระบบวัสดุคงเหลือ - การตีราคาสินค้าคงเหลือด้วยวิธีราคาทุน (Inventory Costs Method)

การตีราคาสินค้าคงเหลือด้วยวิธีราคาทุน (Inventory Costs Method) หลังจากได้อ่านบทความในเว็บต่างๆก็สรุปได้ดังนี้ 1. FIFO เข้าก่อน-ออกก่อน เหมาะสำหรับการตัดสต๊อกที่ใช้สำหรับของที่มีวันที่หมดอายุกำกับไว้ อาจจะเนื่องด้วยพนักงานสต๊อกจะต้องคอยเช็ควันที่หมดอายุบนสินค้าเสมอๆอยู่แล้ว 2. LIFO เข้าหลัง-ออกก่อน เหมาะสำหรับการตัดสต๊อกสินค้าที่ตกเทรนเร็วแบบคอมพิวเตอร์ หรือสินค้าเทคโนโลยีอื่นๆ ซึ่งส่วนใหญ่จะทำโปรโมชั่นมาล่อตาล่อใจให้ลูกค้าซื้อรุ่นใหม่ๆ ดังนั้นพนักงานก็ต้องตัดสต๊อกตัวที่ใหม่ที่สุดออกก่อน เพราะทิ้งไว้นานไปราคาทุน ณ ปัจจุบันจะไม่ตรงกับราคาที่ขายไป 3. Weighted Average ถัวเฉลี่ยน้ำหนัก เหมาะกับสินค้าที่ไม่มีวันหมดอายุกำกับ และราคาขึ้นลงไม่มากนัก (คอมพิวเตอร์หรือสินค้าเทคโนโลยีจะขึ้นลงทีเป็นหลักร้อยหลักพัน) ซึ่งเหมาะกับการนำมาใช้ทำสต๊อกวัสดุคงเหลือของสำนักงาน ปัญหาของการใช้ Weighted Average หรือการถัวเฉลี่ยราคาทุนต่อหน่วย จะมีอยู่ 2 รูปแบบ 1. แบบ Periodic Inventory เป็นการคิดราคาทุนถัวเฉลี่ยของสินค้าคงเหลือปลายงวด นั่นก็คือ บันทึกการรับเข้าด้วยราคาต่อหน่...

PHP + Fullcalendar กับ MySQL

หลักการทำงาน เรียกข้อมูลจากตาราง tb_event ด้วยฟังก์ชั่นของ MySQLi ข้อมูลจากฐานข้อมูลจะถูกวนลูปเก็บไว้ใน $data และจะถูกส่งไปที่ Fullcalendar ด้วยการแปลงข้อมูลจาก PHP ให้อยู่ในรูปแบบ JSON อาร์เรย์ด้วยฟังก์ชั่น json_encode()

PHP กับจัดการฐานข้อมูลหมวดหมู่สินค้า MySQL แบบใช้ตารางเพียงตารางเดียวเท่านั้น

การเขียนโปรแกรม PHP แสดงหมวดหมู่สินค้า สำหรับโครงสร้างฐานข้อมูลแบบทั่วไปเมื่อมีรายการย่อย เราจะใช้หลักการ One -> Many คือมี 1 ตารางหมวดหมู่หลัก และมีอีก 1 ตารางเป็นหมวดหมู่ย่อย แต่ปัญหาของกรณีแยกตารางออกจากกันนี้ ตัวผู้เขียนพบปัญหาว่าเมื่อมีหมวดหมู่ย่อยลงไปอีก  3 ชั้นบ้าง 4 ชั้นบ้าง หรืออาจจะมีหมวดย่อยไม่จำกัด ก็จะทำให้การเขียนโปรแกรมนั้นยากขึ้น เช่น การเขียนคำสั่ง SQL JOIN เพื่อดึงข้อมูลตารางที่ 2 มาแสดง SELECT        id, name FROM        tb_cate1 AS tbMaster INNER JOIN        tb_cate2 AS tbDetail ON tbMaster.id= tbDetail.ref_id WHERE        {เงื่อนไขที่ใช้ค้นหา} และเมื่อมีการเชื่อมหลายๆตาราง ก็จะทำให้หน้าเว็บทำงานได้ช้าลง (อ่านเรื่อง " การทำ Index ให้ MySQL Database เพื่อเพิ่มความเร็ว ") ดังนั้นผู้เขียนจึงได้ทำการปรับปรุงตาราง ให้เหลือตารางเดียว และกำหนดฟิลด์ ref_parent_id สำหรับใช้อิงหมวดหมู่หลักของรายการนั้นๆ ซึ่งถ้ามีค่าเป็น 0 แสดงว่าเป็นหมวดห...

PHP คืออะไร : มีหลักการทำงาน และสิ่งที่น่าสนใจอะไรบ้าง?

PHP คืออะไร? PHP ย่อมาจากคำว่า "Personal Home Page Tool" (ปัจจุบันได้เพิ่มเติมคำย่อใหม่โดยรวมกับตัวย่อเป็น  PHP : PHP Hypertext Preprocessor ) ซึ่งเป็นภาษาประเภท Script Language ที่ทำงานแบบ Server Side Script กระบวนการทำงานจะทำงานแบบ โปรแกรมแปลคำสั่ง  interpreter คือแปลภาษาทุกครั้งที่มีคนเรียกสคริปต์ ข้อดีคือ ไม่ต้องนำไปประมวลผลใหม่ (Compiler) เมื่อจะนำโปรแกรมไปใช้งาน หรือจะอัพเดตเวอร์ชั่นของโปรแกรม สามารถอัพโหลดขึ้นไปทับไฟล์เดิมแล้วใช้งานได้ทันที ขอเสียที่ต่างกันอย่างชัดเจนก็คือ กรณี Syntax ผิดจะรู้ก็ต่อเมื่อมีผู้ใช้งานเจอบั๊ก ภาษา PHP  จัดอยู่ในประเภท การเขียนโปรแกรมบนเว็บ (Web-based Programming) เพราะเราจะเก็บโค้ดคำสั่ง หรือสคริปต์ทั้งหมดที่เขียนขึ้นมาไว้บนเครื่องเซิร์ฟเวอร์ที่เดียว (Web Server)  และให้ผู้ใช้งาน (Client) เรียกใช้งานโปรแกรมผ่านเว็บเบราเซอร์ต่างๆ เช่น Internet Explorer, Mozilla Firefox, Google Chrome, Opera, Safari ฯลฯ เพื่อนำข้อมูลมาแสดงผลที่หน้าจอของผู้ใช้แต่ละคนนั่นเอง PHP มีอะไรน่าสนใจบ้าง? เรามาลองพูดถึงเรื่องของการสร้...

MySQL คำสั่ง SQL จัดเรียงคำตามตัวอักษร ภาษาไทย ในฟิลด์ที่กำหนด Collation เป็น utf-8

การจัดเรียงข้อมูลตามลำดับตัวอักษรไทย   CONVERT( name USING tis620 ) ASC การเรียงลำดับตัวอักษรแบบ tis-620 ในการเขียนโปรแกรม PHP เพื่อแสดงข้อมูลจากฐานข้อมูล MySQL การเขียนคำสั่ง SQL ให้จัดเรียงลำดับนั้น เราจะใช้ ORDER BY  และกำหนดฟิลด์ที่ต้องการจัดเรียงลำดับ เช่น ในตัวอย่างนี้จะเป็นการจัดเรียงตามลำดับตัวอักษรของชื่อเมนู นั่นก็คือฟิลด์ name นั่นเอง แต่ในขั้นตอนการสร้างฐานข้อมูลนั้น เราได้กำหนด Charset ของตารางและฟิลด์เป็นการจัดเรียง Collation แบบ utf-8 เอาไว้เพื่อให้รองรับภาษาแบบมาตรฐาน ดังนั้นเมื่อเขียนโปรแกรมสั่ง ORDER BY name ASC ก็จะมีการจัดเรียงที่จะให้คำที่มีสระนำหน้าอยู่หลัง ฮ. นกฮุก ไปเสียหมด จะเห็นว่าชื่อเมนูหรือสินค้าที่มี ข นำหน้าจะมาเป็นลำดับแรก ทั้งที่จริงๆแล้ว มีสินค้าที่เป็น ก อยู่หลายรายการ เพียงแต่ว่ามีสระนำหน้าอยู่เท่านั้นเอง จากรูปด้านบน จะมีรายการที่เป็น ก อยู่ 3 รายการ คือเมนู โกโก้ ต่างๆ แต่เพราะมีสระโอ นำหน้า จึงทำให้การจัดเรียงแบบ utf-8 ให้อยู่ในลำดับท้าย เพื่อแก้ไขปัญหานี้ การเขียนโปรแกรมเพื่อ ORDER BY จะต้...

PHP CI MANIA : ตอนที่ 16 วิธีสร้างเว็บเพจที่มีแบบฟอร์มคำนวณผลรวมอัตโนมัติ เมื่อป้อนข้อมูลในช่อง INPUT

การคำนวณผลรวม เมื่อเปลี่ยนแปลงตัวเลขใน Textbox หากเขียนโค้ดเองก็เพียงไม่กี่บรรทัด แต่ถ้าหากใช้ PHP CI MANIA เราสามารถเพิ่มการตั้งค่าได้ดังนี้ 1. ในแท็ป " ตั้งค่า " เลื่อนไปส่วนที่ 5 ด้านล่างสุด " ข้อมูลตารางรายการ ( Detail ) " 2. เพิ่ม INPUT สำหรับแสดงราคารวม โดยคลิกที่ปุ่มสีเขียว ในตัวอย่างนี้จะสร้างไว้ต่อจาก ฟิลด์ ราคา  โดยกำหนดค่าในช่องคอลัมน์ Name เป็น total_price=>ราคารวม สังเกตุว่าจะมี => คั่นกลาง        ด้านซ้าย total_price ใช้เป็นไอดีอ้างอิงเพื่อนำราคารวมไปแสดงผล        ด้านขวา ราคารวม ใช้เป็นป้ายชื่อหน้าช่องแสดงผลรวม 3. กำหนด Action ให้กับฟิลด์ที่เมื่อเปลี่ยนค่าแล้วจะให้คำนวณผลรวมอัตโนมัติ ในที่นี้คือ ฟิลด์จำนวน 4. กำหนดค่าต่างๆให้กับ Action ของฟิลด์ที่เลือก     4.1  กำหนด Events จะเลือก onkeyup เพื่อจับเหตุการณ์เมื่อพิมพ์ตัวเลขระบุจำนวนสั่งซื้อ ให้คำนวณค่าราคารวมทันที     4.2  INPUT 1  ให้ระบุฟิลด์ที่ใช้ในการคำนวณตัวที่ 1 ที่นี้คือ ฟิลด์จำ...

กด Start ตรง mysql ใน XAMPP ไม่ได้ แก้ไขยังไงดี?

ข้อความ Error ที่ปรากฏดังนี้ 6:37:41  [mysql] This may be due to a blocked port, missing dependencies, 6:37:41  [mysql] improper privileges, a crash, or a shutdown by another method. 6:37:41  [mysql] Press the Logs button to view error logs and check 6:37:41  [mysql] the Windows Event Viewer for more clues 6:37:41  [mysql] If you need more help, copy and post this 6:37:41  [mysql] entire log window on the forums ต้องบอกก่อนว่าเคสนี้เกิดขึ้นเมื่อผมรัน XAMPP แบบ Portable แล้วดันไปขยับสาย USB การเชื่อมต่อก็เลยหลุดไป หลังจากถอดสาย USB แล้วเสียบใหม่ XAMP ก็รันได้แค่ Apache อย่างที่เห็นในภาพ หลังจากนั้นสิ่งที่ทำอย่างแรกก็คือ คัดลอก Error ไปค้นในเว็บแล้วลองทำไปเรื่อยๆ จนกว่าจะหาวิธีได้ xampp MySQL does not start https://stackoverflow.com/questions/18177148/xampp-mysql-does-not-start เว็บแรกทำให้รู้ว่าน่าจะเกี่ยวกับ Port ก็เลยลองเปลี่ยนเป็นพอร์ตอื่นก็ Start ได้ทันที You also need to change port 3306 to 3307 in xampp\php\php.ini...

ค้นหาบล็อกนี้