Снимите скобки с имени поля в вашем звонке на 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