Encoderast
@Encoderast
frontend пытается что-то делать в backend

Как редактировать array -> input checkbox?

Есть следующий чекбокс:
<input type="text" name="name" placeholder="" value="<?php echo $product['name']; ?>">

<label><input name="delivery[]" value="1" type="checkbox">one</label>
<label><input name="delivery[]" value="2" type="checkbox">two</label>
<label><input name="delivery[]" value="3" type="checkbox">three</label>


В массиве соответственно находятся значения от 1 до 3 (*до 5) через зяпятую

Допустим из БД получили значения: 1,3 и надо отметить input свойствами checked на первом и третьем соответственно. Как будет выглядеть такой код?

Будь это select, то проблем не возникло, я уже реализовал данный способ
select (нажать на меня)
<select name="availability">
    <option value="1" <?php if ($product['availability'] == 1) echo ' selected="selected"'; ?>>Да</option>
    <option value="0" <?php if ($product['availability'] == 0) echo ' selected="selected"'; ?>>Нет</option>
</select>


По аналогии сделать для checkbox не получится :(

Использую код для отображения на index.php

функция:
class Delivery{
    public static $delivery = [
         0=>"",
         1=>"Самовывоз",
         2=>"Доставка курьером",
         3=>"Доставка почтой"
    ];
    public static function delivery_arr($id){
         return self::$delivery[$id];
    }
}

function getDeliveryArr($product){
    return explode(",", $product['delivery']);
}

Код вывода на страницу:
<?php $items = getDeliveryArr($product);?>
<?if(count($items)):?>
    <label>Доставка:</label>
    <?foreach($items as $type):?>
        <span><?=Delivery::delivery_arr($type)?></span>
    <?endforeach?>
<?else:?>
    <b>Список пуст</b>
<?endif?>



11 дней знаний не хватает чтоб самостоятельно делать... если заметили как можно оптимизировать код - напишите

Спасибо
  • Вопрос задан
  • 313 просмотров
Решения вопроса 1
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
$arr = [1,3];
$arr2 = [1,2,3,4,5];
foreach($arr2 as $one){
$check = (in_array($one,$arr))?'checked="checked "':'';
echo '<label><input name="delivery[]" value="' . $one . '" type="checkbox" ' . $check . '>one</label>'
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы