Когда я изменяю количество своих товаров в корзине, общая стоимость не меняется (PHP) - PullRequest
1 голос
/ 21 мая 2019

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

// Shopping cart page

<?php
    include_once 'Dao/shoppingCartDao.php';

    $shoppingCartItem = shoppingCartDao::getShoppingCartItems();

    foreach ($shoppingCartItem as $item) {

?>

<tr>
    <td><a href="detail.php?productId=<?php echo $item->getProductId(); ?>"><img src="./img/<?php echo $item->getProduct()->getImage(); ?>"></a></td>
    <td><?php echo $item->getProduct()->getName(); ?></td>
    <td>&euro; <?php echo $item->getTotalPriceExclVAT(); ?><small> (Excl. VAT)</small></td>
    <td>&euro; <?php echo $item->getTotalPriceInclVAT(); ?><small> (Incl. VAT)</small></td>
    <td>
        <form action="" method="POST">
          <input type="hidden" name="postcheck" value="true">
          <input id="number" type="number" min="0" max="20" step="1" value ="<?php echo $item->getAantal(); ?>"/>
          <input type="hidden" name="productId" value="<?php echo $item->getProductId() ?>">
          <td><input type="submit" name="update" value="Update"></td>                               
        </form>

        <form action="deleteItem.php" method="POST">
           <input type="hidden" name="postcheck" value="true">
           <input type="hidden" name="productId" value="<?php echo $item->getProductId() ?>">
           <td><input type="submit" name="deleteItem" value="Delete"></td>                               
        </form>
    </td>
</tr>

<?php
    }
?>

<div>
       <div>
            <div><strong>Total Price (Excl. VAT)</strong></div>
            <div><strong>Total Price (Incl. VAT)</strong></div>
            <div><strong>VAT</strong></div>
            <div>&euro; <?php echo shoppingCartDao::getTotalPriceExclVAT(); ?></div>
            <div>&euro; <?php echo shoppingCartDao::getTotalPriceInclVAT(); ?></div>
            <div>&euro; <?php echo shoppingCartDao::getTotalVAT(); ?></div>
      </div>
</div>

Explanation, using an image

1 Ответ

1 голос
/ 21 мая 2019

Итак, из комментариев я делаю вывод, что вы хотите следующее:

  • У вас есть корзина, в которой пользователь может изменить количество каждого товара, введя число или нажав стрелки вверх / вниз при вводе числа
  • Всякий раз, когда изменяется amont, интерфейс должен обновляться, и далее сервер должен применить новую сумму к корзине покупок для последующего использования и / или оформления заказа.
  • Вы не хотите, чтобы пользователь нажимал кнопку отправки или обновлял страницу каждый раз, когда вводится новая сумма.

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

updateQuantity.php

$productId = $_POST["productId"];
$quantity = $_POST["quantity"];

// Add error handling, authentication, ...
// ...
// Set the new quantity on server side
// This is just an example, the functions might not be existent!
$shoppingCartItem = shoppingCartDao::getShoppingCartItem($productId); 
$success = $shoppingCartItem->setAantal($quantity);

$response = [
    "success" => $success,
    "productId" => $productId,
    "quantity" => $shoppingCartItem->getAantal(),
    "exclVAT" => $shoppingCartItem->getTotalPriceExclVAT(),
    "inclVAT" => $shoppingCartItem->getTotalPriceInclVAT()
];
header('Content-Type: application/json');
echo json_encode($response);

С вашего клиентского веб-сайта вы можете использовать запрос AJAX для обновления количества.
Сначала укажите свой номер, введите идентификатор или атрибут данных

echo '<input id="number" class="productQuantity" type="number" min="0" max="20" step="1" value ="'.$item->getAantal().'" data-product="'.$item->getProductId().'"/>';

, а затем добавьте прослушиватель onChange (или любой другой, удовлетворяющий вашим потребностям):

$(".productQuantity").on("change", function() {
    var productId = $(this).data("product");
    var quantity = $(this).val();
    $.ajax({
        url: "updateQuantity.php",
        data: {
            productId: productId,
            quantity: quantity
        },
        success: function(resp) {
            // Maybe check if the resp.quantity is the same as the desired quantity, otherwise reset the input field
            if (resp.success) {
                // Seems to be successful...
                // Update prices
                $("...").text(resp.exclVAT);
                $("...").text(resp.inclVAT);
            }
        }
    });
});

Это должно помочь вам заставить его работать. Это не копируемый код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...