Линия вверх по фронту: Я пытаюсь обновить общую сумму тележки на странице проверки, если быть точным, в области заголовка, где хранятся все ссылки навигации, а также в аккордеоне порядка подтверждения. Для этого мне нужно обновить страницу. Как я могу попытаться достичь этого без обновления страницы?PHP - обновление общей суммы переводов без обновления страницы
Подробная информация: Когда пользователь приходит на страницу проверки, он должен заполнить форму доставки, чтобы применить стоимость доставки. Обычно это поле выбора, в котором он будет выбирать регион в зависимости от его адреса доставки. Выбрав регион и нажав на кнопку, я вызываю метод $.ajax
для вставки в таблицу базы данных, и он встает правильно.
Как только все будет готово, появится следующий аккордеон с просьбой подтвердить корзину, где он увидит полную информацию о тележке. Там я хочу показать обновленную сумму корзины, то есть the cart total amount + the shipping zone amount
, которую пользователь должен заплатить.
Я могу получить обновленную общую сумму тележки, но не могу показать ее пользователю. Пользователь должен обновлять страницу каждый раз, чтобы увидеть обновленную общую сумму тележки. Это, в свою очередь, снова приведет к процедуре, начиная с выбора зоны доставки, которая не должна произойти.
Вопрос: Как обновить значение сеанса нажатием кнопки, находящейся в зоне отгрузки, и отобразить ее пользователю без обновления страницы с обеих сторон. В области заголовка, а также в гармоническом аккордеоне? Любая помощь будет высоко оценен. Спасибо.
Вот мой выбор поле, чтобы выбрать зону:
<select name="selectZone" id="custDelAddZone">
<option value="-1">----- Select -----</option>
<?php
$queryForZone = "SELECT * FROM shipZones";
$validate->Query($queryForZone);
if ($validate->NumRows() >= 1) {
while ($row = $validate->FetchAllDatas()) {
echo '<option value="'.$row['Id'].'">'.$row['Name'].'</option>';
}
}
?>
</select>
Вот моя страница фотографии (Подтверждение аккордеона):
<?php
if (isset($_SESSION['cart']) && $_SESSION['cart'] != "") {
$total = 0;
$subTotal = 0; $sbTotal = 0;
$taxAmount = $tax = $totalTaxAmount = $taxAmt = 0;
$cartWeightPerProduct = $totalCartWeight = $amtWeight = 0;
$sql = "SELECT p.*, c.*, ws.* FROM products p, categories c, weight_shipping ws WHERE ProdCode IN (";
foreach ($_SESSION['cart'] as $id => $value) {
$sql .= '"'.$id.'",';
}
$sql = substr($sql, 0, -1) . ") AND p.CatId = c.CatId AND ws.ProdId = p.ProdId";
if ($validate->Query($sql) == TRUE) {
if ($validate->NumRows() >= 1) {
while ($row = $validate->FetchAllDatas()) {
echo '<tr>';
echo '<td><img src="images/Products/'.$row['ProdCode'].'.jpg" alt="'.$row['ProdCode'].'"><a href="product.php?code='.$row['ProdCode'].'">'.$row['ProdName'].'</a></td>';
echo '<td>'.$row['ProdCode'].'</td>';
echo '<td>Rs. '.$row['ProdRate'].'</td>';
echo '<td>'.$_SESSION['cart'][$row['ProdCode']]['quantity'].'</td>';
$sbTotal = $row['ProdRate'] * $_SESSION['cart'][$row['ProdCode']]['quantity'];
$subTotal = $sbTotal;
echo '<td>'.number_format($sbTotal,2).'</td>';
$total += $subTotal;
$_SESSION['cartTotalAmount'] = $total;
$tax = $row['CatTaxPercent'];
$taxAmt = (($sbTotal * $tax)/100);
$taxAmount += $taxAmt;
$amt = 0;
$cartWeightPerProduct = ($row['weight'] * $_SESSION['cart'][$row['ProdCode']]['quantity']);
echo '</tr>';
$totalCartWeight += $cartWeightPerProduct;
}
$totalTaxAmount += $taxAmount;
$_SESSION['cartWeight'] = $totalCartWeight;
$sessAmnt = ($total + $totalTaxAmount);
$totalPayableAmnt = $sessAmnt + $_SESSION['TotalWeight'];
$_SESSION['sessionTotalPayable'] = number_format($totalPayableAmnt, 2);
if (isset($_SESSION['sessionTotalPayable'])) {
$amt = $totalPayableAmnt;
} else {
$amt = "Rs. 0";
}
echo '<tr><td>Cart Total:</td><td>'.number_format($total,2).'</td></tr>';
echo '<tr><td>Taxes:</td><td>'.number_format($totalTaxAmount,2).'</td></tr>';
echo '<tr><td>Shipping:</td><td>'.number_format($_SESSION['TotalWeight'],2).'</td></tr>';
echo '<tr><td>Total Payable Amount:</td><td>'.number_format($amt,2).'</td></tr>';
}
}
}
Вот мой AJAX-код, который я использую для вставки:
$.ajax({
var dataStr = $("#chooseShippingZoneForm").serialize();
url: 'http://localhost/ECommerce/ActionFiles/Customers/UpdateDeliveryZone.php',
type: 'POST',
data: dataStr,
success: function(msg) {
toastr.success(msg);
toastr.options.showMethod = "slideDown";
toastr.options.hideMethod = "slideUp";
}
});
И вот UpdateDeliveryZone.php
<?php
session_start();
$zoneId = $custCode = "";
require_once '../../Classes/class.Validation.php';
$validate = new Validation('developi_ecommerce');
$q = "SELECT CustCode FROM customers WHERE CustEmailAdd = '".$_SESSION['Customer']['email']."'";
$validate->Query($q);
if ($validate->NumRows() >= 1) {
while ($row = $validate->FetchAllDatas()) {
$custCode = $row['CustCode'];
}
} else {
echo "No Customer Found";
}
if (isset($_POST['selectZone']) && $_POST['selectZone'] != "") {
$zoneId = $validate->EscapeString($_POST['selectZone']);
$query = "UPDATE customers_delivery_address SET ZoneId = '".$zoneId."' WHERE CustCode = '".$custCode."' AND CustDelAddLastInserted >= NOW() - INTERVAL 10 MINUTE";
if ($validate->Query($query) == TRUE) {
echo "Updated Successfully";
} else {
echo "Invalid Query";
}
} else {
echo "Value Not Set";
}