[英]Need to dynamically update a value in a PHP associative array using AJAX without updating other values
我正在使用 PHP 創建購物車頁面。 我已經設法將人們想要購買的物品存儲在 session 變量中,該變量存儲了一個關聯數組,該數組將物品的標識符作為鍵,將物品的數量作為值:
if (isset($_POST["btnSubmit"])){
$_SESSION["cart"][$isbn] += 1;
header("Location:cart.php");
}
我還設法使用 foreach 循環和查詢在購物車上列出了這些項目:
<?php
$total;
foreach($_SESSION["cart"] as $product=>$quantity){
$query = mysqli_query($con,"SELECT * FROM BOOKS WHERE $product LIKE isbn");
$data = mysqli_fetch_array($query, MYSQLI_ASSOC);
$title = $data["title"];
$price = $data["price"];
$image = $data["image"];
$author = $data["author"];
$isbn = $data["isbn"];
print
"<a href='product.php?product=".$isbn."' class='list-group-item list-group-item-action>
<img src='".$image.">
<h5>".$title."</h5>
<h5>£".$price."</h5>
</a>
<select name='quant' id='quant'>
<option value=''>".$quantity."</option>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
</select>";
$total += $price*$quantity;
}
?>
如您所見,我想使用一個下拉列表來修改購買的商品數量。 我需要此列表來更新 $_SESSION['cart'] 變量中特定鍵的值,然后將該數量動態乘以價格以顯示總計。 為此,我使用的是 jQuery。
<script>
$(document).ready(function(){
$("#quant").change(function(){
$.get('ajax/getTotal.php',{quant:$(this).val()},function(data){
$('#total').load(data);
});
});
});
</script>
我需要知道兩件事:
我真的很感謝你的幫助。 我對 AJAX 真的很陌生,我很迷茫。
如果我理解正確,那么您正在嘗試的事情是不可能的。 PHP 在構建 HTML 的服務器上運行。 將頁面提供給客戶端/瀏覽器后,您將無法再操作 PHP 變量。 您可以使用 JS 操作 HTML ,例如更改 DOM 元素的值以顯示總數。 但是,這只會在客戶端有效。 使用 jQuery: https://www.w3schools.com/jquery/jquery_dom_set.asp
要使這種更改在服務器端/ session(也在服務器上處理)有效,您必須向服務器發送 POST 請求。
最簡單的方法是將您的 isbn 和數量包裝到普通的<form method="POST" action="/pathToSessionUpdatingScript">
中。 例如,對 isbn 使用<input>
字段,對數量使用<select>
字段。 如果您想避免單擊按鈕,您可以使用 JS / JQuery 使用上面的更改事件提交表單。
在服務器端,您只需使用另一個 php 腳本更新 session
之后,您可以重定向到您的原始頁面。
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.