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

บทความ

กำลังแสดงโพสต์จาก เมษายน, 2018

CodeIgniter กับปัญหา base_url() บนเครื่องที่ติดตั้ง IIS และ Apache หรือเว็บเซิร์ฟเวอร์ที่ IP ต่างกัน

CodeIgniter กับปัญหา base_url() ปัญหานี้เกิดขึ้นหลังจากที่เปลี่ยนมาใช้ CodeIgnditer เวอร์ชั่น 3.1.6 (ก่อนหน้านี้ใช้เวอร์ชั่น 2 สามารถเรียก base_url() ได้ปกติ) ปรากฏว่าเวอร์ชั่นใหม่นี้ จะแสดง URL เป็นไอพี ตามที่ได้ตั้งไว้กับ IIS ซึ่งเป็นเซริฟเวอร์อีกตัว ทำให้โหลดไฟล์ JS, CSS ต่างๆไม่ได้ เมื่อ echo base_url()  ออกมาดู จะเห็น URL ที่ไม่ตรงกับในช่อง url address หลังจากค้นหาวิธีอยู่นานสองนาน ก็ได้คำตอบว่า 1. ปรับค่า $config['base_url'] ให้ตรงตาม project 2. เขียนโค้ดเพิ่มเติมโดยอ่านจาก $_SERVER ซึ่งตัวผมเลือกใช้แบบเขียนโค้ดเพิ่มเพื่อดึงค่า URL ปัจจุบันมาใส่ใน config เพราะเวลาเปลี่ยนโปรเจ็กต์ หรืออัพขึ้นโฮสต์จริง จะได้ไม่ต้องตามไปแก้ไขอีก เมื่อรีเฟรชหน้าเว็บโปรเจ็กต์อีกครั้ง จะเห็นว่า Template แสดงผลได้ถูกต้อง และ ค่าที่ echo base_url() ออกมาตรงกับที่ช่อง URL ADDRESS สำหรับส่วนที่ต้องแก้ไขนั้นอยู่ในไฟล์นี้ application/config/config.php $potocal = 'http'.((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS...

วิธีแก้ไข JavaScript โดยไม่ต้อง Refresh หน้าเว็บใหม่

แก้ไข JavaScript โดยไม่ต้อง Refresh เป็นปกติทุกครั้งที่แก้ไขโค้ด JavaScript เราจำเป็นจะต้องรีเฟรชหน้าเว็บใหม่ทุกครั้ง แต่วันนี้ผมจะมาแนะนำวิธีรัน JavaScript ให้พร้อมใช้งานโดยไม่ต้องโหลดหน้าเว็บใหม่มาแนะนำครับ (สำหรับกรณีที่กำลังป้อนข้อมูลแบบฟอร์ม แล้วไม่อยากป้อนใหม่ เวลาที่ JavaScript error) ( แก้ปัญหาเวลาแก้ไข JavaScrip, CSS อัพขึ้นโฮสต์แล้วต้องกด CTRL + F5 เพื่อโหลดไฟล์ใหม่ทุกครั้ง ) ปัญหาเริ่มจากกดปุ่มลบ แล้ว Page not found  (หรือกรณี Event ใดๆ ที่กดปุ่มแล้ว JavaScript ไม่ทำงาน) ลองตรวจสอบ URL ที่ส่งไปเป็น / remove_price ซึ่งเกิดจากการระบุในไฟล์ JavaScript ไม่ตรงกับหน้าเว็บ เมื่อเปิดไปที่ไฟล์ PHP ในหน้าเว็บสำหรับลบราคา ปรากฏว่า URL ที่ถูกต้องคือต้องลงท้ายด้วย / removePrice ดังนั้นก็ต้องกลับไปทำการแก้ไขในไฟล์ .js ให้เป็น URL ที่ถูกต้อง  แต่ JavaScript เมื่อแก้ไขเสร็จเราจะต้อง Refresh หน้าเว็บเพื่อโหลดสคริปต์ใหม่ ซึ่งบางทีเราก็แก้ไขแค่จุดเดียว หากไม่อยากเสียเวลาโหลดใหม่ เราก็คัดลอกโค้ดเฉพาะ Function ที่เราแก้ไข เอาไปรันใน...

Codeigniter วิธีโหลดไฟล์ config เพื่อเชื่อมต่อฐานข้อมูลหลายๆตัว ตามค่าที่ผู้ใช้งานส่งมา

How to switch dynamic DATABASE  in Codeigniter? ตัวอย่างการโหลดค่า config ของฐานข้อมูลเดิม เพื่อนำมาเชื่อมต่อใหม่ด้วยชื่อฐานข้อมูลใหม่ที่ต้องการ $this->config->load("new_database"); $db_config = $this->config->item('new_db'); echo '<pre>'; print_r($db_config); echo '</pre>'; ผลลัพธ์ที่ได้ จะเหมือนกับค่าใน application/config/database.php มาดูตัวอย่างการสร้างไฟล์คอนฟิกใหม่สำหรับเรียกใช้ Dynamic Database ใน CodeIgniter application/config/new_database.php <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); include(APPPATH. '/config/database.php'); $config['new_db'] = $db['default']; โค้ดด้านบนนี้จะมีการ include ไฟล์คอนฟิกหลักมา และเซ็ตเข้าไปในตัวแปร $config['new_db'] ในส่วนของเปลี่ยนฐานข้อมูลเราจะแทรกใน __construct() ของไฟล์ Controller  โดยที่คำสั่ง $this->load->database($db_config, TRUE); คือการเชื่อมต่อฐานข้อมูลอีกครั้งด้ว...

มีวิธีเขียนโค้ดอย่างไร งานถึงจะเสร็จได้เร็วกว่ากัน?

มาหาวิธีเขียนโค้ดให้เสร็จอย่าวรวดเร็วกัน เป็นเหมือนกันไหม "เขียนไปด้วย เทสไปด้วย" เนื่องจากการเขียนยาวๆ แล้วมักจะทำให้เกิด BUG จำนวนมาก ต้องคอยตามเก็บตามแก้จนตาลายกันเลยทีเดียว ก็เลยติดนิสัยเขียนไปด้วย รันทดสอบไปด้วย และอย่างที่รู้ๆกัน การทดสอบโค้ดมักจะเป็นอะไรที่ซ้ำซากและจำเจจนน่าเบื่อ คลิกแล้วคลิกอีก ป้อนแล้วป้อนอีก หรือถ้าไม่อยากป้อนเองก็อาจจะปลั๊กอินของเว็บบราวเซอร์อย่างของ Firefox เข้ามาช่วยลดเวลาก็ได้เช่น  Selenium IDE ซึ่งหากท่านใดสนใจก็ลองค้นหาใน Google ด้วยคำว่า "ทดสอบเว็บอัตโนมัติด้วย Selenium IDE" แต่ถึงอย่างนั้น หากจะทดสอบทุกครั้งที่เขียนโค้ดส่วนใดส่วนหนึ่งเสร็จ ก็ยังคงเป็นการเสียเวลาสลับหน้าจอไปมาอยู่ดี จากอารมณ์ Coding มันส์ๆ ต้องสลับโหมดไป Design และยังต้องมานั่ง Test โปรแกรมอีก งั้นลองแบบนี้ไหม ลองนึกถึงหลักการ MVC ที่แยกส่วนต่างๆออกจากกัน เรามาแบ่งตัวเองออกเป็น 3 ภาคจิตกันดีไหม? ภาคจิตที่ 1 - Front-END ภาคจิตที่ 2 - Back-END ภาคจิตที่ 3 - Tester แล้วก็วนลูปแบบนี้ไปเรื่อยๆ จนกว่าจะครบทุกส่วน  ↺ เริ่มจาก  Front-E...

แก้ปัญหา Autocomplete ที่ชื่อว่า typeahead มักจะเลือกรายการแรกทุกครั้งที่ค้นหา

เปลี่ยนจากเลือกรายการแรกอัตโนมัติแบบรูปด้านซ้าย => เป็นเลือกเองแบบด้านขวา ตัว Bootstrap Framework จะมี Autocomplete ที่ชื่อว่า typeahead ปัญหาคือ เวลากดพิมพ์ลงไป พอมันเด้งข้อมูลขึ้นมา มันก็เลือกตัวแรกให้ ทำให้กด Enter มันก็มาทันที แก้ให้มันไม่ select อัตโนมัติก็ใช้โค้ดประมาณนี้ <script>     // Initialize typeahead     $("input").typeahead(...);     // เริ่มคัดลอกโค้ดจากส่วนนี้เป็นต้นไป =>     // Get the current typeahead instance     var typeaheadInstance = $("input").data("typeahead");     // Save the reference to the original implementation of the render() function     var origRenderFunc = typeaheadInstance.render;     // Overwrite the render() function     typeaheadInstance.render = function() {         // Execute the original implementation      ...

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

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

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