2015-01-09 1 views
0

Линия вверх по фронту: Я пытаюсь обновить общую сумму тележки на странице проверки, если быть точным, в области заголовка, где хранятся все ссылки навигации, а также в аккордеоне порядка подтверждения. Для этого мне нужно обновить страницу. Как я могу попытаться достичь этого без обновления страницы?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"; 
} 

ответ

0

После выбора региона вы вызываете $ .ajax для размещения данных в базе данных.

Как только запрос ajax успешно выполнен. Затем верните сообщение об успешном завершении, общее количество, зону доставки и т. Д. В формате json.

Затем проанализируйте JSON и выполните вычисления и поместите значения в соответствующие элементы.

Точно так же вы можете обновить сеанс на стороне клиента, используя метод sessionstorage().

Пример JQuery Код

$.ajax({ 
    type: "POST", 
    url: "update.php", 
    data: { **data to be passed** } 
}) 
.done(function(resp) { 
    // Parse the response and place the values in appropriate sections 

    $("#confirmdiv #totalPrice").html(resp.totalPrice); 

    // Other sections that needs to be updated. 
}); 
Смежные вопросы