@Blitzzz
учусь

Как вывести одинаковые товары в корзине один раз?

Корзина реализована чрез cookie-js.
$cook - массив с выбранными товарами
Array
(
    [0] => Array
        (
            [0] => 154
            [1] => 12 600
            [2] => 80 x 40 x 5 см
            [3] => 12 x 50 x 15 см
        )

    [1] => Array
        (
            [0] => 154
            [1] => 12 600
            [2] => 80 x 40 x 5 см
            [3] => 12 x 50 x 15 см
        )

)
.....


под нулевым элементом массива всегда идет id записи(товара)

Далее выводим через цикл в корзину все добавленные товары
$i=0;
while ( $i <= count($cook)-1) {

$posts = get_posts( array(

	'include'         => $cook[$i][0],   //выбираем id товаров 

) );

foreach($posts as $post){ ?>
<tr>
<td>
<a href="" target="_blank" title="Подробнее о товаре"><img src="" width="60" height="100" alt=""></a>
</td>
<td>
<a href="<? the_permalink(); ?>" target="_blank" title="Подробнее о товаре"><? the_title();?></a>
<br>
<small>
Стела:<? echo $cook[$i][2]; ?> см<br>Тумба:<? echo $cook[$i][3]; ?> см
</small>
</td>
<td> <? echo $cook[$i][1]; ?> руб. <input type="hidden" class="id" name="cart[<?echo $cook[$i][0];?>][id]" value="<?echo $cook[$i][0];?>"> 
<input type="hidden" class="price" name="cart[<?echo $cook[$i][0];?>][price]" value="<? echo str_replace('.', '', $cook[$i][1]); ?>">
</td>
<td><input type="number" class="count" name="cart[<?echo $cook[$i][0];?>][count]" value="1" min="1">  //выводим количество товаров
</td>
<td><a href="#del"><div class="">X</div></a>
</td>
</tr>

<? $i++;
		}
	}
?>

Скрин корзины prnt.sc/c3emx1 товар с одними параметрами повторяется дважды.
Вопрос в том как не выводить уже существующий товар дважды а просто увеличивать его количество(value) в корзине?
Спасибо.
  • Вопрос задан
  • 191 просмотр
Решения вопроса 1
Fqyeh29
@Fqyeh29
↓ ИМХО ↓
Я так понимаю в
[0] => 125
Это id товара?
если да, то самый простой способ пройтись циклом, и удалить дубли, прибавляя к count.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы