Ajax обновление даных в сесии

267
30 января 2018, 08:54

Добрый день. Данные корзины храниться в сессии ($_SESSION['products'])
Имеют такой вид:

Array ( [163] => 1 [75] => 5 [77] => 1 )
    //(id => count id => count id => count)

При нажатии на кнопку добавить, добавляется в сессию. Вроде пока все отлично.

$(document).ready(function () {
            $(".add-to-cart").click(function () {
                var id = $(this).attr("data-id");
                var count = $('#cart-count').text();
                $.post("/order/addAjax/" + id, {}, function () {
                    $("#cart-count").text(count++);
                });
                return false;

            });
        });
    public function AddAjax($id)
    {
        echo Cart::addProduct($id);
        return true;
    }
 public static function addProduct($id)
    {
        // Приводим $id к типу integer
        $id = intval($id);
        // Пустой массив для товаров в корзине
        $productsInCart = array();
        // Если в корзине уже есть товары (они хранятся в сессии)
        if (isset($_SESSION['products'])) {
            // То заполним наш массив товарами
            $productsInCart = $_SESSION['products'];
        }
        // Проверяем есть ли уже такой товар в корзине 
        if (array_key_exists($id, $productsInCart)) {
            // Если такой товар есть в корзине, но был добавлен еще раз, увеличим количество на 1
            $productsInCart[$id] ++;
        } else {
            // Если нет, добавляем id нового товара в корзину с количеством 1
            $productsInCart[$id] = 1;
        }
        // Записываем массив с товарами в сессию
        $_SESSION['products'] = $productsInCart;
        // Возвращаем количество товаров в корзине
        return self::countItems();
    }

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

Сама таблица:

<div class="card" id="container-cart"> 
  <?php if ($productsInCart): ?> 
  <p>Вы выбрали такие товары:</p> 
  <table class="table-bordered table-striped table" id="table-cart"> 
    <tr> 
      <th>Код</th> 
      <th>Название</th> 
      <th>Стомость</th> 
      <th>Количество</th> 
      <th>Удалить</th> 
    </tr> 
    <?php foreach ($products as $product): ?> 
    <tr> 
      <td> 
        <?php echo $product['code']; ?> 
      </td> 
      <td> 
        <a href="/product/<?php echo $product['id']; ?>"> 
          <?php echo $product['name']; ?> 
        </a> 
      </td> 
      <td> 
        <?php echo $product['price_roz']; ?> 
      </td> 
      <td id="cart-count"> 
        <?php echo $productsInCart[$product['id']]; ?> 
      </td> 
      <td> 
        <a href="/cart/delete/<?php echo $product['id']; ?>"> 
          <i class="fa fa-times"></i> 
        </a> 
      </td> 
    </tr> 
    <?php endforeach; ?> 
    <tr> 
      <td colspan="4">Общая стоимость, грн: 
        <?php echo $totalPrice; ?> </td> 
      <td></td> 
    </tr> 
 
  </table> 
  <a class="btn btn-default checkout" href="/cart/checkout"> 
    <i class="fa fa-shopping-cart"></i> Оформить заказ</a> 
  <?php else: ?> 
  <p>Корзина пуста</p> 
  <?php endif; ?> 
</div>

Помогите с AJAX запросом для обновление таблицы без перезагрузки. Спасибо :) С меня лайк

READ ALSO
Thymeleaf Баг или фича?

Thymeleaf Баг или фича?

Делю я значит страницу на фрагменты в Thymeleaf и тут возникла необходимость сделать два вида элемента <header>

194
Два DIV в ряд, один резиновый

Два DIV в ряд, один резиновый

Можно ли сделать без привлечения JS следующее? Есть два div'a расположенных в ряд, один принимает ширину контента, которая может быть разной...

232
1000000000000000000 на входе с типом int в mysql превращается в 2147483647. Почему?

1000000000000000000 на входе с типом int в mysql превращается в 2147483647. Почему?

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

194