我有这个购物车页面,其中显示产品+价格和数量 现在我的问题是,一旦我输入不同数量的数量并点击更新按钮,我就不知道如何更新物品总数和价格
这是我的功能,它根据$ _SESSION数据“列出”产品
public function getCartListings(){
if (is_array($_SESSION['cart'])){
foreach($_SESSION['cart'] as $id => $qty){
$query = "SELECT * FROM gg_t_wsproducts WHERE ProductID = $id";
$result = mysql_query($query);
if (!$result){
echo "Couldn't execute query: ".mysql_error();
exit;
}
$product = $this->getProduct($id);
echo '<div class="cart-content">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr>
<td width="20%" align="center" style="vertical-align:top !important;">
<img src="images/shopping-cart/thumb-image.png" />
</td>
<td width="80%" style="vertical-align:top !important;">
<table width="100%" cellpadding="0" cellspacing="0" border="0" style="border-bottom:2px solid #c6c6c6; padding-bottom:10px">
<tbody>
<tr>
<td width="60%"><b style="font-size:18px">'.$product["ProductName"].'</b></td>
<td width="20%">Qty <input id="proditem" name="'.$id.'" type="text" style="width:20px; margin:0 0 0 4px;" value="'.$qty.'"></td>
<td width="20%"><span style="font-size:24px; font-weight:bold;">$'.number_format($product['ProductOverridePrice'],2).'</span></td>
</tr>
</tbody>
</table>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tbody>
<tr>
<td width="50%" valign="bottom" align="left"><br>
<span style="font-size:18px; font-weight:bold;">$'.number_format($product['ProductOverridePrice'],2).'</span><br>
<img src="images/shopping-cart/star.png" /> <img src="images/shopping-cart/star.png" /> <img src="images/shopping-cart/star.png" /> <img src="images/shopping-cart/star.png" /> <img src="images/shopping-cart/star.png" /><br>
<span style="font-size:12px; color:#828282;">14 reviews</span>
</td>
<td width="50%" valign="bottom" align="right">
<a class="removefromcart" name="'.$id.'" id="'.$qty.'" href="#"><img src="images/shopping-cart/remove-item-btn.png" border="0" /></a>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</div>';
}//end foreach
}
}
如上所示,这些项目来自foreach循环
这是显示实际项目的前端代码
<div id="catalog-wrapper">
<form action="#" method="POST" id="updatecart">
<h1 class="cart-header">ITEMS IN YOUR CART <span style="float:right"><a href="#"><input type="image" name="updatecart" src="images/shopping-cart/update-cart-btn.png" border="0" /></a> <a href="catalog.php"><img style="float:right;" src="images/shopping-cart/continue-shopping-btn.png" border="0" /></a></span></h1>
<?php $myCart->getCartListings(); ?>
</form>
</div>
现在,这里是“无用的”jquery代码
$('input[name="updatecart"]').click(function(){
var pid = $('input#proditem').attr('id');
var qty2 = $('input[type="text"]').each(function(idx,elem){
});
$.ajax({
type: "POST",
url: "classes/ajax.cartupdate.php",
data: "pid="+pid+"&qty2="+qty2,
success: function(data){
alert(data);
location.reload();
}
});
return false;
});
ajax PHP代码应该是这样的......但我仍然遇到上述代码的问题......不确定该怎么做
if ($qty2){
$cart->updateCart($qty2);
$_SESSION['total_items'] = $cart->totalItems($_SESSION['cart']);
$_SESSION['total_price'] = $cart->totalPrice($_SESSION['cart']);
echo "cartUpdated!";
}
答案 0 :(得分:0)
为什么要获得多个变量?只需获取一个数组并使用PHP在服务器端进行爆炸。我的意思是,创建一个javascript数组并在其中包含每个输入值,然后将其发送到PHP。但是在你的代码中会有两个数组,没问题。它希望如此:
pid="1,2,3,4,5,6,7"+&qtty="0,1,1,0,1,1,0"
使用PHP获取此值并将其分解为“,”并使用for循环执行任何操作。顺便说一句,如果您在发送后重新加载页面,那么为什么要使用ajax方法?