CodeIgniter - установка флажка / значения радио из запроса SQL - PullRequest
1 голос
/ 24 августа 2011

Я пытаюсь создать страницу редактирования, в которой сначала приводятся все исходные значения из базы данных, а затем - библиотека form_validation. Мне удалось заставить все работать как задумано, кроме флажков и переключателей.

Вот пример моей формы, довольно общий ...

    <input type="checkbox" name="protocols[]" value="online" <?php echo set_checkbox('protocols[]', 'online');?> /> 
    <input type="checkbox" name="protocols[]" value="network" <?php echo set_checkbox('protocols[]', 'network');?> />
    <input type="checkbox" name="protocols[]" value="splitscreen" <?php echo set_checkbox('protocols[]', 'splitscreen');?> />

Значения базы данных возвращаются в виде строки, разделенной запятыми (онлайн, разделение экрана).

У меня также есть еще один массив из 3 полей для заполнения, поле для 9 полей и поле для радиосвязи из 3 полей для заполнения.

Любая помощь будет принята с благодарностью, спасибо.

1 Ответ

2 голосов
/ 24 августа 2011

Снимите скобки с имени поля в вашем звонке на set_checkbox():

<input type="checkbox" name="protocols[]" value="online" <?php echo set_checkbox('protocols', 'online');?> /> 
<input type="checkbox" name="protocols[]" value="network" <?php echo set_checkbox('protocols', 'network');?> />
<input type="checkbox" name="protocols[]" value="splitscreen" <?php echo set_checkbox('protocols', 'splitscreen');?> />

Библиотека проверки формы позаботится о том, ставить флажок или нет, но она отвечает только на массив $_POST, поэтому вам придется использовать третий параметр, чтобы проверить входные данные по умолчанию:

set_checkbox ()

Позволяет отображать флажок в том состоянии, в котором он был отправлен. первый параметр должен содержать имя флажка, второй параметр должен содержать свое значение, а третий (необязательный) параметр позволяет установить элемент по умолчанию (используйте логическое значение ИСТИНА / ЛОЖЬ).

Не очень хорошее объяснение, но вот пример. Сначала получите значения из строки через запятую:

Значения базы данных возвращаются в виде строки, разделенной запятыми (онлайн, разделение экрана).

// Something like this
$values = explode(',', $my_data); // Now it's an array

Затем проверьте, находится ли значение каждого флажка в этом массиве:

<?php echo set_checkbox(
    'protocols',
    'splitscreen',
    in_array('splitscreen', $values) // TRUE checks the box, FALSE does not
);?>

Я бы сделал это в цикле по соображениям удобства, если ничего больше. Также стоит взглянуть на form_checkbox(), что значительно облегчит эту задачу.

Подробности см. В руководстве пользователя: http://ellislab.com/codeigniter/user_guide/helpers/form_helper.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...