Задать вопрос
@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
  • Вопрос задан
  • 1076 просмотров
Подписаться 1 Оценить 4 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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]++;
}

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽