Получить массив из файла в форму, а потом сохранить обратно

Тема в разделе "PHP", создана пользователем MAD-BOYT, 1 авг 2011.

Модераторы: latteo
  1. MAD-BOYT

    MAD-BOYT Постоялец

    Регистр.:
    22 ноя 2007
    Сообщения:
    75
    Симпатии:
    8
    Привет всем.

    Есть конфиг вида

    Код:
    $c['aa']['bb'] = 'bb';
    $c['aa']['cc'] = 'cc';
    $c['aa']['dd'] = 'dd';
    
    $c['bb']['aa'] = 'aa';
    $c['bb']['bb'] = 'bb';
    $c['bb']['cc'] = 'cc';
    по объему достаточно большой.

    Есть ли возможность как-то редактировать такой конфиг через форму?
    Точнее да же интересует есть ли возможность сохранять такой файл без потери его структуры?
    Находил такой конфиг в движке в LS, там же и плагин админки, где можно редактировать его. Но что-то выдернуть не получилось и разабраться то же.
     
  2. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    Самое элементарное чё пришло в голову:
    PHP:
    <?php
    if($_POST){
    $a=stripcslashes($_POST['cont']);
    @
    file_put_contents ("test1.php"$a);
    }
    echo 
    "<form method='POST'><textarea name='cont' cols=100 rows=10>".@file_get_contents ("test1.php")."</textarea><input type='submit' value='send'></form>";
    ?>  
    это без проверок и соблюдения требований безопасности...
     
  3. MAD-BOYT

    MAD-BOYT Постоялец

    Регистр.:
    22 ноя 2007
    Сообщения:
    75
    Симпатии:
    8
    Не не. Я не это имел в виду.

    Вот получать в форму из этого файла не все содержимое файла, а поля в виде input\text, для редактирования значений, например из $c['aa']['bb'] = 'bb'; редактировать 'bb'
    т.е. в итоге получить для

    Код:
    $c['aa']['bb'] = 'bb'
    $c['bb']['aa'] = 'aa';
    
    <form method="post">
    <input type="text" name="aa_bb" value="bb" />
    <input type="text" name="bb_aa" value="aa" />
    ....
    <input type="submit" value="save" />
    </form>
     
  4. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    К чему такие мутки? Тем более если файл большой от несметного количества input type=text в глазах рябить будет! А так и комментарий видно и в целом структуру документа...
    Ну а если разобрать нужно только один многомерный массив используй foreach для построения формы...
     
  5. MAD-BOYT

    MAD-BOYT Постоялец

    Регистр.:
    22 ноя 2007
    Сообщения:
    75
    Симпатии:
    8
    Не. Там не все поля настраивать будет нужно.
    там в некоторых пути прописаны и т.д...
    вывод в форму, например только части массива где есть $c['aa'] например.

    Я просто не сталкивался с таким никогда, по этому да же примерно не знаю как делать. и примеров что-то найти никак не могу(
     
  6. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    Если там не все настраивать нужно то примеров нигде не найдёшь! Это сугубо индивидуальный скрипт получится... Тебе прийдется создать шаблон формы, куда будут вводиться данные из файла, а затем нужно будет на основании данных формы сформировать новый файл конфига... Шибко муторно получится... Пока только это напишешь голова кругом пойдёт, а за отладку и проверку принятых от формы данных я вообще молчу.
     
  7. MAD-BOYT

    MAD-BOYT Постоялец

    Регистр.:
    22 ноя 2007
    Сообщения:
    75
    Симпатии:
    8
    да. я вот и думал что не просто будет.
    А как лучше тогда работать с таким конфигом? на сервер постоянно лазить ну совсем не вариант.
    может для простоты вообще в БД конфиг писать? Один запрос особо не сделает погоды, зато будет удобно.
    Только вот как тогда в цикле сортировать по, скажем группам
    если к примеру в БД будет записано так
    и в цикле уже по group сортировать список и добавлять заголовок группы.
    Такое сложно реализуется?
     
  8. dino

    dino

    Регистр.:
    28 май 2009
    Сообщения:
    550
    Симпатии:
    204
    В принципе не очень сложно, только я бы порекомендовал добавить ещё пару полей, в которых сразу бы прописывал тип элемента формы(text, radio, checkbox) для данного элемента конфига, и например варианты выбора(для radio) и т д. Так можно будет минимизировать шаблоны для такого редактора.
     
    MAD-BOYT нравится это.
  9. MAD-BOYT

    MAD-BOYT Постоялец

    Регистр.:
    22 ноя 2007
    Сообщения:
    75
    Симпатии:
    8
    Да. типы будут полезны.
    Т.е. это нужно будет в цикле определять что за поле и соответственно выводить нужный вариант настройки?

    В теории представляю. Но... сложновато получается для меня пока.
    Нужно же будет еще и количество значений определять.
    Например если чекбокс будет содержать три значения.

    Вспомнил! Получается будет примерно как в osc скриптах. в бд настройка в виде текста функции, например select_option(array('true', 'false')
    а в функцию уже массив с любым количеством значений.

    Все равно как-то сложно получается
     
  10. trooll

    trooll PHP кодер

    Регистр.:
    22 дек 2008
    Сообщения:
    503
    Симпатии:
    116
    Есть две замечательные функции:
    serialize() и unserialize()

    позволяющие хранить данные в виде строки без потери типа данных. Может быть они тебе помогут в твоих не легких начинаниях :)

    Как пользоваться функциями и с чем их едят разберешься я думаю сам.