@devmo

Как посчитать количество и вывести сумму(класс корзины + куки)?

Недавно перешел на ооп и делаю корзину для сайта. Нашел корзину тут - Корзина

С куками еще не сильно знаком и в целом с ООП. Но хочется разобраться.

Есть класс Cart, в котором существуют 2 метода, отвечающих за товары
public function getItems($for_sql = false)
{
    if ($for_sql) {
        return implode(',', $this->items);
    }

    return $this->items;
}

public function addItem($id)
{
    $id = (int)$id;

    $key = array_search($id, $this->items);

    if (!in_array($id, $this->items)) {
        array_push($this->items, $id);
    }
     Cookie::set('items', serialize($this->items));
}


А в файле cart.php я вывожу таким способом:
echo "My cart: <br>";
foreach ($items as $items) {
    echo "<b>{$items['name']}</b> | Количество " .count($items['id']). " | <a href='cart.php?action=delete&id={$items['id']}'>Удалить из корзины</a><br>";


Пытался вывести количество повторных id через count, но также безуспешно. Поэтому прошу помощи Как сделать следующее:

  • Как сложить количество товара, если этот товар уже добавлен к корзину? На данный момент только 1 раз товар добавляется, а дальше количество этого товара не добавляется( + 1 к количеству)
  • Как вывести общую сумму, используя этот класс корзины?


Пытался добавить в метод addItem($id) функцию array_key_exists(), но безуспешно. Количество не складывается.

UPD. результат для webinar - prntscr.com/eeq1jc
  • Вопрос задан
  • 1065 просмотров
Пригласить эксперта
Ответы на вопрос 2
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
А зачем ajax, куки и т.д.? Лишние запросы к серверу, проблема отключенных куках. Может быть лучше использовать localStorage?
https://www.w3schools.com/html/html5_webstorage.asp

Все на стороне клиента, сервер улыбается.

Теперь по Вашему коду:
$items as $items ??? Может быть: $items as $item
count($items['id']) - очень сомневаюсь, что в этом есть хоть какой-то смысл. В любом случае, что бы помочь надо видеть архитектуру массива. Сделайте <pre><?php print_r($items)?></pre> и добавьте результат к вопросу.
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
Если коротко, то автор этой "корзины" идиот.
Так корзины никто не делает.
Беги с этого сайта куда глаза глядят. Это "девионити" еще хуже видеокурсов попова.

В корзине должны лежать только уникальные товары, а количество пишется в отдельное поле.
if (isset($this->products[$id])) {
    $this->products[$id] = 1;
} else 
    $this->products[$id]++;
}

примерно так.
но чтобы сделать по-человечески, надо будет будет выкинуть весь идиотский код который тебе впаривают на этом сайте.
Ответ написан
Ваш ответ на вопрос

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

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