เชียงรายโฟกัสดอทคอม สังคมออนไลน์ของคนเชียงราย ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน
วันที่ 26 เมษายน 2024, 06:22:33
หน้าแรก ช่วยเหลือ เข้าสู่ระบบ สมัครสมาชิก



  • ข้อมูลหลักเว็บไซต์
  • เชียงรายวันนี้
  • ท่องเที่ยว-โพสรูป
  • ตลาดซื้อขายสินค้า
  • ธุรกิจบริการ
  • บอร์ดกลุ่มชมรม
  • อัพเดทกระทู้ล่าสุด
  • อื่นๆ

ประกาศ !! กรุณาอ่านเพื่อทำความเข้าใจ : https://forums.chiangraifocus.com/index.php?topic=1025412.0

+  เว็บบอร์ด เชียงรายโฟกัสดอทคอม สังคมออนไลน์ของคนเชียงราย
|-+  ศูนย์กลางข้อมูลเชียงราย
| |-+  คุยเรื่องไอที - เทคโนโลยี (ผู้ดูแล: K€nGja1, chiohoh, nuifish, NOtis)
| | |-+  [มุมโปรแกรมเมอร์] Codeigniter วิธีโหลดไฟล์ config เชื่อมต่อฐานข้อมูลหลายตัว
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
« หน้าที่แล้ว ต่อไป »
หน้า: [1] พิมพ์
ผู้เขียน [มุมโปรแกรมเมอร์] Codeigniter วิธีโหลดไฟล์ config เชื่อมต่อฐานข้อมูลหลายตัว  (อ่าน 853 ครั้ง)
{Cyberman}
To Be Developer
มัธยม
**
ออฟไลน์ ออฟไลน์

กระทู้: 504


โปรแกรมเมอร์เชียงราย


« เมื่อ: วันที่ 12 เมษายน 2018, 15:59:28 »

ตัวอย่างการโหลดค่า 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); คือการเชื่อมต่อฐานข้อมูลอีกครั้งด้วยค่าคอนฟิกใหม่ที่โหลดเก็บไว้ใน $db_config และจะเปลี่ยนชื่อฐานข้อมูลทุกครั้งตามค่า SESSION ที่ส่งเข้ามาในตัวแปร $session_new_db

โค๊ด:
<?php

if (!defined('BASEPATH'))
    exit(
'No direct script access allowed');

class 
Dashboard extends MY_Controller {

    public function 
__construct() {
        
parent::__construct();
       
       
        
$this->config->load("new_database");
        
$db_config $this->config->item('new_db');
        
$session_new_db $this->session->userdata('session_new_db');
        if(
$session_new_db != ''){
            
$db_config['database'] = $session_new_db;
            
$this->db $this->load->database($db_configTRUE);
        }
    }

    public function 
index() {
        
$tables $this->db->list_tables();
        echo 
'<pre>';
        
print_r($tables);
        echo 
'</pre>';
    }
   
}

// ------ END Controller Class ------


ผลลัพธ์ที่ได้เมื่อสั่งแสดงรายชื่อตารางทั้งหมดของ Database





มาดูการโหลดคอนฟิกอื่นๆ มาใช้กันบ้าง กรณีไม่ได้สร้างคอนฟิกที่เป็นอาร์เรย์หลายมิติแบบ [new_db][xxx]


โค๊ด:
$prev_config = $this->config->config;
$this->config->load("pagination");
$config = $this->config->config;

echo '<pre>';
print_r($config );
echo '</pre>';

สังเกตว่าผลลัพธ์จะได้ค่า config รวมกันทั้งหมด





ดังนั้นเราจะต้องทำการคัดค่าเดิมออกไป เอาเฉพาะค่าคอนฟิกใหม่

โค๊ด:
$result = array_diff_key($config, $prev_config);
echo '<pre>';
print_r($result);
echo '</pre>';

จะได้ผลลัพธ์ที่คัดค่าคอนฟิกเดิมออกไปแล้วดังนี้



สรุป

ถ้าจะสร้างไฟล์ config ให้สร้างเป็นอาร์เรย์หลายมิติ เพื่อเรียกใช้จะได้ง่ายต่อการ load แบบวิธีเชื่อมต่อฐานข้อมูลหลายตัว ดังที่ได้แนะนำไว้

โค๊ด:
$this->config->load("your_config_file");
$db_config = $this->config->item('your_config_array');




:: ฟังก์ชั่นที่เกี่ยวข้อง ::

คัดเฉพาะอาร์เรย์ที่ไม่ซ้ำกัน (ต้องการเฉพาะ Config ค่าใหม่ที่โหลดเข้ามาเท่านั้น)
http://php.net/manual/en/function.array-diff-key.php

วิธีโหลด config ของ CodeIgniter มาใช้งาน
https://www.codeigniter.com/userguide3/libraries/config.html

แสดงรายชื่อตารางทั้งหมดด้วยฟังก์ชั่น list_tables()
https://www.codeigniter.com/user_guide/database/metadata.html

วิธี include ไฟล์ config มาใช้งาน
https://www.sitepoint.com/community/t/basepath-apppath/3613/4
« แก้ไขครั้งสุดท้าย: วันที่ 24 เมษายน 2018, 20:58:35 โดย {Cyberman} » IP : บันทึกการเข้า

หน้า: [1] พิมพ์ 
« หน้าที่แล้ว ต่อไป »
กระโดดไป:  


เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

 
เรื่องที่น่าสนใจ
 

ข้อความที่ท่านได้อ่านบนกระดานข่าวแห่งนี้ เกิดขึ้นจากการเขียนโดยสาธารณชน และตีพิมพ์แบบอัตโนมัติ ผู้ดูแลเว็บไซต์แห่งนี้ไม่จำเป็นต้องเห็นด้วย
และไม่รับผิดชอบต่อข้อความใดๆ ผู้อ่านจึงต้องใช้วิจารณญาณในการกลั่นกรองด้วยตัวเอง และถ้าท่านพบเห็นข้อความใดๆ ที่ขัดต่อกฎหมาย และศีลธรรม พาดพิง ละเมิดสิทธิบุคคอื่น ต้องการแจ้งลบ
กรุณาส่งลิงค์มาที่
เพื่อทีมงานจะได้ดำเนินการลบออกให้ทันที..."

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
www.chiangraifocus.com

Valid XHTML 1.0! Valid CSS!