2016-03-17 6 views
0

Я хочу создать файл .INI на основе значений, которые я получаю из базы данных. Это те ценности, в моей базе данных:Как создать файл на основе значений базы данных?

DB

Сейчас в параметре поля поданном это значение я хочу писать в файл каждый в новой строке.

Принести значения, как это:

$this->data['params'] = $this->parameter_m->get(); 

Так я получаю все значения из таблицы.

Я хочу написать значения в файле так:

[INIDetails] 
SipUserName= 
Password= 
Domain= 
Proxy= 
Port= 
SipAuthName= 
DisplayName= 
ServerMode= 
UCServer= 
UCUserName= 
UCPassword= 

[DialPlan] 
DP_Exception= 
DP_Rule1= 
DP_Rule2= 

[Advanced] 
OperationMode= 
MutePkey= 
Codec= 
PTime= 
AudioMode= 
SoftwareAEC= 
EchoTailLength= 
PlaybackBuffer= 
CaptureBuffer= 
JBPrefetchDelay= 
JBMaxDelay= 
SipToS= 
RTPToS= 
LogLevel= 

У меня есть WRITE Функция, которая записывает в файл

function write($file = NULL, $file_content = array(), $sections = TRUE) { 
    $this->file_content = (!empty($file_content)) ? $file_content : $this->file_content; 
    $this->file = ($file) ? $file : $this->file; 
    $this->sections = $sections; 
    $content = NULL; 

    if ($this->sections) { 
     foreach ($this->file_content as $section => $file_content) { 
      $content .= '[' . $section . ']' . PHP_EOL; 
      foreach ($file_content as $key => $val) { 
       if (is_array($val)) { 
        foreach ($val as $v) { 
         $content .= $key . '[]=' . (is_numeric($v) ? $v : $v) . PHP_EOL; 
        } 
       } elseif (empty($val)) { 
        $content .= $key . '=' . PHP_EOL; 
       } else { 
        $content .= $key . '=' . (is_numeric($val) ? $val : $val) . PHP_EOL; 
       } 
      } 
      $content .= PHP_EOL; 
     } 
    } else { 
     foreach ($this->file_content as $key => $val) { 
      if (is_array($val)) { 
       foreach ($val as $v) { 
        $content .= $key . '[] = ' . (is_numeric($v) ? $v : '"' . $v . '"') . PHP_EOL; 
       } 
      } elseif (empty($val)) { 
       $content .= $key . ' = ' . PHP_EOL; 
      } else { 
       $content .= $key . ' = ' . (is_numeric($val) ? $val : '"' . $val . '"') . PHP_EOL; 
      } 
     } 
    } 

    return (($handle = fopen($this->file, 'w+')) && fwrite($handle, trim($content)) && fclose($handle)) ? TRUE : FALSE; 
} 

И я использовать эту функцию, как это:

$path = "./uploads/"; 
     $filename = "default.ini"; 
     $this->load->helper('file'); 
     $file = $path.$filename; 
     $this->load->library('ini'); 
     $ini = new INI($file); 
     $ini->write($file, $this->data['params']); 

Итак, как написать массив значений, я получаю fr база данных om в файл?

Как вы можете видеть, есть файл под названием Parameter_Type Я хочу установить его как раздел в файле INI.

ответ

1

Я предполагаю, что ваша parameter_m - это ваша модель, у которой есть функция get(), где она возвращает значения массива из вашей таблицы. Я думаю, проблема в том, что ваша модель возвращает неправильную структуру вашего массива. Ваш массив должен иметь структуру, как:

array(
    "parameter_type" => array(
     "parameter" => value 
    ) 
) 

в функции ПОЛУЧИТЬ вашей модели, там должно быть что-то вроде:

class parameter_m extends CI_Model { 

     public function get() 
     { 
       $query = $this->db->get('your_parameter_table'); 

       $assoc_arr = array(); 

       foreach ($query->result() as $row) 
       { 
        $assoc_arr[$row->parameter_type][$row->parameter] = ''; 
       } 

       return $assoc_arr; 
     } 

} 

Использование get() он должен вывести:

array(
    "INIDetails" => array(
     "SipUserName" => '', 
     "Password" => '', 
     "Domain"  => '', 
     "Proxy"  => '', 
     "Port"  => '', 
     "SipAuthName" => '', 
     "DisplayName" => '', 
     "ServerMode" => '', 
     "UCServer" => '', 
     "UCUserName" => '', 
     "UCPassword" => '' 
    ), 
    "DialPlan" => array(
     "DP_Exception" => '', 
     "DP_Rule1"  => '', 
     "DP_Rule2"  => '' 
    ), 
    "Advanced" => array(
     "OperationMode" => '', 
     "MutePkey"  => '', 
     "Codec"   => '', 
     "PTime"   => '', 
     "AudioMode"  => '', 
     "SoftwareAEC"  => '', 
     "EchoTailLength" => '', 
     "PlaybackBuffer" => '', 
     "CaptureBuffer" => '', 
     "JBPrefetchDelay" => '', 
     "JBMaxDelay"  => '', 
     "SipToS"   => '', 
     "RTPToS"   => '', 
     "LogLevel"  => '' 
    ) 
); 
+0

Спасибо много это работает – Rajan

Смежные вопросы