За последние 24 часа нас посетили 17668 программистов и 1657 роботов. Сейчас ищет 961 программист ...

запись в ini файлы

Тема в разделе "PHP для новичков", создана пользователем vasiliska, 29 окт 2015.

  1. vasiliska

    vasiliska Новичок

    С нами с:
    29 окт 2015
    Сообщения:
    6
    Симпатии:
    0
    вот такой класс нашёлся
    Код (PHP):
    1. if (!defined('_BR_'))
    2.     define('_BR_',chr(13).chr(10));
    3. class TIniFileEx {
    4.     public $filename;
    5.     public $arr;
    6.     function __construct($file = false){
    7.         if ($file)
    8.             $this->loadFromFile($file);
    9.     }
    10.     function initArray(){
    11.         $this->arr = parse_ini_file($this->filename, true);
    12.     }
    13.     function loadFromFile($file){
    14.         $result = true;
    15.         $this->filename = $file;
    16.         if (file_exists($file) && is_readable($file)){
    17.             $this->initArray();
    18.         }
    19.         else
    20.             $result = false;
    21.         return $result;
    22.     }
    23.     function read($section, $key, $def = ''){
    24.         if (isset($this->arr[$section][$key])){
    25.             return $this->arr[$section][$key];
    26.         } else
    27.             return $def;
    28.     }
    29.     function write($section, $key, $value){
    30.         if (is_bool($value))
    31.             $value = $value 1 : 0;
    32.         $this->arr[$section][$key] = $value;
    33.     }
    34.     function eraseSection($section){
    35.         if (isset($this->arr[$section]))
    36.             unset($this->arr[$section]);
    37.     }
    38.     function deleteKey($section, $key){
    39.         if (isset($this->arr[$section][$key]))
    40.             unset($this->arr[$section][$key]);
    41.     }
    42.     function readSections(&$array){
    43.         $array = array_keys($this->arr);
    44.         return $array;
    45.     }
    46.     function readKeys($section, &$array){
    47.         if (isset($this->arr[$section])){
    48.             $array = array_keys($this->arr[$section]);
    49.             return $array;
    50.         }
    51.         return array();
    52.     }
    53.     function updateFile(){
    54.         $result = '';
    55.         foreach ($this->arr as $sname=>$section){
    56.             $result .= '[' . $sname . ']' . _BR_;
    57.             foreach ($section as $key=>$value){
    58.                 $result .= $key .'='.$value . _BR_;
    59.             }
    60.             $result .= _BR_;
    61.         }
    62.         file_p_contents($this->filename, $result);
    63.         return true;
    64.     }
    65.     function __destruct(){
    66.         $this->updateFile();
    67.     }
    68. }
    69.  
    пробую добавить это в свой файл.php

    и ниже код:
    Код (PHP):
    1. <?php
    2. $ini = new TIniFileEx('configsssss.ini'); // создаем объект
    3. $ini->write('main','key1','100'); // пишем в секцию main
    4. $ini->write('main','key2','200');
    5. $ini->updateFile(); // скидываем информацию в ini файл
    6.  
    7.  
    8. ?>
    но ничего не работает, и файл не создаётся :-(
    или класс не рабочий или я не правильно чего делаю?

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. machetero

    machetero Активный пользователь

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    Вы наверно забыли подключить файл с классом к своему php файлу через require или include.
     
  3. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    и не должно, нет там такого метода. Видимо, своими пальчиками нужно создать ((:)
     
  4. vasiliska

    vasiliska Новичок

    С нами с:
    29 окт 2015
    Сообщения:
    6
    Симпатии:
    0
    ну я же прям в этот же файл класс добавила... ладно попробую ща в отдельный файл и потом подключить его.
     
  5. vasiliska

    vasiliska Новичок

    С нами с:
    29 окт 2015
    Сообщения:
    6
    Симпатии:
    0
    нифига не понимаю, толи я тупая такая, толи класс всё таки не рабочий...
    вот создала файл TIniFileEx.php
    Код (PHP):
    1. <?php
    2.  
    3. /**
    4.  * Created by PhpStorm.
    5.  * User: alisa
    6.  * Date: 29.10.15
    7.  * Time: 19:30
    8.  */
    9. if (!defined('_BR_'))
    10.     define('_BR_',chr(13).chr(10));
    11. class TIniFileEx {
    12.     public $filename;
    13.     public $arr;
    14.     function __construct($file = false){
    15.         if ($file)
    16.             $this->loadFromFile($file);
    17.     }
    18.     function initArray(){
    19.         $this->arr = $this->parse_ini_custom($this->filename);
    20.     }
    21.     function loadFromFile($file){
    22.         $result = true;
    23.         $this->filename = $file;
    24.         if (file_exists($file) && is_readable($file)){
    25.             $this->initArray();
    26.         }
    27.         else
    28.             $result = false;
    29.         return $result;
    30.     }
    31.     function read($section, $key, $def = ''){
    32.         if (isset($this->arr[$section][$key])){
    33.             return $this->arr[$section][$key];
    34.         } else
    35.             return $def;
    36.     }
    37.     function write($section, $key, $value){
    38.         if (is_bool($value))
    39.             $value = $value 1 : 0;
    40.         $this->arr[$section][$key] = $value;
    41.     }
    42.     function eraseSection($section){
    43.         if (isset($this->arr[$section]))
    44.             unset($this->arr[$section]);
    45.     }
    46.     function deleteKey($section, $key){
    47.         if (isset($this->arr[$section][$key]))
    48.             unset($this->arr[$section][$key]);
    49.     }
    50.     function readSections(&$array){
    51.         $array = array_keys($this->arr);
    52.         return $array;
    53.     }
    54.     function readKeys($section, &$array){
    55.         if (isset($this->arr[$section])){
    56.             $array = array_keys($this->arr[$section]);
    57.             return $array;
    58.         }
    59.         return array();
    60.     }
    61.     function updateFile(){
    62.         $result = '';
    63.         foreach ($this->arr as $sname=>$section){
    64.             $result .= '[' . $sname . ']' . _BR_;
    65.             foreach ($section as $key=>$value){
    66.                 $result .= $key .'='.$value . _BR_;
    67.             }
    68.             $result .= _BR_;
    69.         }
    70.         file_p_contents($this->filename, $result);
    71.         return true;
    72.     }
    73.     function parse_ini_custom ( $filepath ) {
    74.         $ini = file( $filepath );
    75.         if ( count( $ini ) == 0 ) { return array(); }
    76.         $sections = array();
    77.         $values = array();
    78.         $globals = array();
    79.         $i = 0;
    80.         foreach( $ini as $line ){
    81.             $line = trim( $line );
    82.             // Comments
    83.             if ( $line == '' || $line{0} == ';' ) { continue; }
    84.             // Sections
    85.             if ( $line{0} == '[' ) {
    86.                 $sections[] = substr( $line, 1, -1 );
    87.                 $i++;
    88.                 continue;
    89.             }
    90.             // Key-value pair
    91.             list( $key, $value ) = explode( '=', $line, 2 );
    92.             $key = trim( $key );
    93.             $value = trim( $value );
    94.             if ( $i == 0 ) {
    95.                 // Array values
    96.                 if ( substr( $line, -1, 2 ) == '[]' ) {
    97.                     $globals[ $key ][] = $value;
    98.                 } else {
    99.                     $globals[ $key ] = $value;
    100.                 }
    101.             } else {
    102.                 // Array values
    103.                 if ( substr( $line, -1, 2 ) == '[]' ) {
    104.                     $values[ $i - 1 ][ $key ][] = $value;
    105.                 } else {
    106.                     $values[ $i - 1 ][ $key ] = $value;
    107.                 }
    108.             }
    109.         }
    110.         for( $j=0; $j<$i; $j++ ) {
    111.             $result[ $sections[ $j ] ] = $values[ $j ];
    112.         }
    113.         return $result + $globals;
    114.     }
    115.     function __destruct(){
    116.         $this->updateFile();
    117.     }
    118. }
    119.  
    120. ?>
    потом в index.php такое:
    Код (PHP):
    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    2.     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru">
    4. <head>
    5.     <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
    6.     <title></title>
    7. </head>
    8. <body>
    9.  
    10.  
    11.  
    12.  
    13. <?php
    14. require 'TIniFileEx.php';
    15.  
    16. $ini = new TIniFileEx('./config.ini'); // создаем объект
    17. $ini->write('main','key1','100');    // пишем в секцию main
    18. $ini->write('main','key2','200');
    19. $ini->updateFile();
    20.  
    21.  
    22.  
    23. ?>
    24.  
    25.  
    26. </body>
    27. </html>
    реакции ноль, даже если в ручную создать этот файл, ничего туда не пишется...
    А вот если попробовать прочитать с помощью этого класса то работает!
    Код (PHP):
    1. $key1 = $ini->read('main','key1','100'); 
    вот это работает! но читать я и так умею через parse_ini_file, мне надо именно записать как то переменные в файл :-(

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  6. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    у меня всё четко сработала (((:)
    просто в одном месте надо быть оооочень внимательной (;
     
  7. vasiliska

    vasiliska Новичок

    С нами с:
    29 окт 2015
    Сообщения:
    6
    Симпатии:
    0
    всё! нашла
    file_p_contents($this->filename, $result);

    Это походу препод специально так издевается над нами :)
     
  8. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    молодец (((((:)