Top.Mail.Ru
Ответы

PHP Checkbox - заполнение checked из массива.

Чекбоксами в базу добавил через запятую выбранные, например
1,2,5

Теперь как отобразить выбранные - после считывания из базы
$eps=array(); // создал массив
$eps=explode( ',', $row['eps'] ); // засунул в него все элементы из базы разделенные через запятую

Как сделать, чтобы статус каждого элемента которые в массиве стали checked

< fieldset name="eps" >< legend >Чекбоксы< /legend >
< input type="checkbox" name="p[]" checked value="1" > 1 |
< input type="checkbox" name="p[]" checked value="2" > 2 |
< input type="checkbox" name="p[]" value="3" > 3 |
< input type="checkbox" name="p[]" value="4" > 4 |
< input type="checkbox" name="p[]" checked value="5" > 5 |
< /fieldset >';

По дате
По рейтингу
Аватар пользователя
Профи
11лет

< fieldset name="eps" >< legend >Чекбоксы< /legend >
<?php for($i = 1; $i < 6; $i++): ?>
<input type="checkbox" name="p[]" <?php if(in_array($i, $eps)) echo 'checked' ?> value="<?=$i?>"> <?=$i?> |
<?php endfor ?>
< /fieldset >;

Аватар пользователя
Ученик
11лет

Длинна массива может меняться
проверяю длину $icnt=count($eps);
а также названия чекбоксов будут разные не числовые (то я для примера указал).
Сделал так:
$checked='';
$value="вася";
for ($i = 0; $i < $icnt; $i++)
{if(in_array($value, $eps)) $checked='checked';
}
echo ' '.$value.' | ';

Вся проблема в том, что checked становится только в случае если совпадение в 0 позиции массива, остальные не проверяются. for проходит при этом по сему массиву. Что не так?

Аватар пользователя
Ученик
11лет

Спасибо, промучился с ним почти сутки, пока не дошло, что у меня в базу добавляются значение "запятая пробел", и не просто "запятая", потому и не получалось (бралось только если первым значением был нужный вариант).

Аватар пользователя
Ученик
11лет

1 вар.
$str = ''; $con = 0;
foreach($eps as $k => $v){
$str .= '< input type="checkbox" name=".$v." checked value=".$con++." />';
}
echo $str;

2. вар.
$str = '';
for($i=0; $i<= 10;){
$str .= '< input type="checkbox" name="'.$eps[$i].'" ';
if(isset($eps[$i]){ $str .= ' checked '; }
$str .= 'value=".$i." />';
$i++;
}



Видео по теме