• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Save Codeigniter config data in MySql database

I am looking for a more elegant way to save Codeigniter config data in a MySql database.

This is my Way:

PHP Code:
function load_config() {
   $CI =& get_instance();
   foreach($CI->siteconfig->get_config()->result() as $site_config) {

PHP Code:
$hook['post_controller_constructor'] = array(
'class'    => '',
'function' => 'load_config',
'filename' => 'my_config.php',
'filepath' => 'hooks'

PHP Code:
$config['enable_hooks'] = TRUE

PHP Code:
public function get_config() {

public function 
set_config($key$value) {
    $config_data = array('key' => $key'value' => serialize($value));
    return $this->db->update('config'$config_data); 

The config-items are normaly stored in an config-array like this:
PHP Code:
$config["default"] = array('key' => 'value'); 

If I call get_config(), I get an array with another strukture:
PHP Code:
0] => Array(
key]   => ...,
value] => ...

I am correcting this by using a foreach-loop:
PHP Code:
$result $this->siteconfig->get_config();
$result as $item => $value){
$this->config_vars[$value['key']] = $value['value'];

Is there a more elegant, performant way?


Why not just encode and decode it using json then save it to the database in a text field.
What did you Try? What did you Get? What did you Expect?

Joined CodeIgniter Community 2009.  ( Skype: insitfx )

I would drop the whole "hook" business and move it all to the model which would be autoloaded.

PHP Code:
class Siteconfig_m extends CI_Model
   public function __construct()

     * Get the database items and add them to the super object $config item
   public function get_config()
       //using select() because it's lighter weight than get()
       //using result() because $config_items->item is less typing than $config_items['item'] 
       //and is usually easier to read. (Yes, it's a matter of opinion.)
       $config_items $this->db->query('select * from config')->result();  
($config_items as $item)
           //write directly to the "super object" $config array
           $this->config->config[$item->key] = unserialize($item->value); 

   public function set_config($key$value)
       $config_data = array('key' => $key'value' => serialize($value));
       return $this->db->update('config'$config_data);


I droped the whole "hook" business and move it to the sideconfig model which is autoloaded. Now I set the whole config in the constructor of the MY_Controller. Unfortunately, the hook "post_controller_constructor" was too late and the hook "post_controller" was too early. But now I found a solution.

I serialize/unserialize the data-array and save it as text in the Database.

Thanks for your help

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  

  Theme © 2014 iAndrew  
Powered By MyBB, © 2002-2020 MyBB Group.