Редактирование товара

Рейтинг: 0Ответов: 1Опубликовано: 04.05.2015

Добрый день! При редоктирование карточки товара, пытаюсь добавить к существующим уже вкусам в БД, новые вкусы:

<input type="text" name="Vkys[]" />
<input type="text" name="Vkys[]" />
<input type="text" name="Vkys[]" />
.
.
.

PHP:

 $query = "SELECT Vkys FROM goods WHERE goods_id = $id";
$res = mysqli_query($connection, $query);
$row = mysqli_fetch_assoc($res);       
            for($i = 0; $i < count($_POST['Vkys']); $i++){
                $VkysName = $_POST['Vkys'][$i];   
                      if($row['Vkys']){                                                                                                                     
                                $im = "{$row['Vkys']}|{$VkysName}"; // строка для записи в БД, если уже были вкусы
                      }else{                                                                                 
                                $im = $VkysName; // строка для записи в БД, если еще не было вкусов
                      }
            }                
            mysqli_query($connection, "UPDATE goods SET Vkys = '$im' WHERE goods_id = $id");

То есть, сначала проверяется есть ли какие то вкусы в БД, если есть, то берется уже строка с имеющиеся вкусами (в таком виде - Апельсин|Лимон|Яблоко) и к ней добавляются новые вкусы, а если там ничего нет то первое имя вкуса будет записываться без - |, а далее с ней - |Дыня.

Но проблема в том, что записывается только последнее значения поля input, а нужно все. Счетчик написал, а вот почему так не могу понять. Помогите пожалуйста.

Ответы

▲ 2
$query = "SELECT Vkys FROM goods WHERE goods_id = $id";
$res = mysqli_query($connection, $query);
$row = mysqli_fetch_assoc($res);
$receive_flavors = $_POST['Vkys'];
if(count($receive_flavors) > 0){
    if($row['Vkus']){
        $flavors = explode("|",$row['Vkus']);
    }else{
        $flavors = array();
    }
    foreach($receive_flavors as $new_flavor){
        if(!in_array($new_flavor,$flavors)){$flavors[]=$new_flavor;}
    }
    mysqli_query($connection, "UPDATE goods SET Vkys = '".implode("|",$flavors)."' WHERE goods_id = $id");
}

Нужно так. Ибо иначе переменная $im каждый раз будет перезаписываться.

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