我创建了一个购物车,供用户放置想要购买的物品。每个项目都有自己的id value
,所有价格和一般信息都来自MySql数据库。我输出javascript来计算每个型号的数量和最终价格以及折扣。现在我想重新构建计数,维护我的php代码变得越来越困难。
我的问题是:1-使用php创建JS推车的最佳实践是什么。2-有没有一种方法可以简化我的代码,或者最好从0重写它。
foreach ($_SESSION["gids"] as $key => $value){//for each model in session add HTML data
echo "'n't't<hr><div class='"row'">";
echo "'n't't't<div class='"2u'">";//Main photo div
echo "'n't't't't<span class='"image image-full cartImg'" id='"caseShow'">";
echo "'n't't't't't<img src='"cases/cartPics/".$value.".jpg'" id='"caseImg'" alt='"Чехол для iPhone 5 с орнаментом этно чехол вышиванка на iPhone'" />";
echo "'n't't't't</span>";
echo "'n't't't</div>";
echo "'n't't't<div class='"2u'">";// name and model
echo linkSet('menu', 'name');
echo "'n't't't't<strong>";
echo catSet('cases', $value, 'name');
echo "'n't't't't<br />";
echo catSet('cases', $value, 'model');
echo "'n't't't</strong></div>";
echo "'n't't't<div class='"2u'" id='"casePriceDiv'">";//price for one item
echo linkSet('menu', 'priceName');
echo "'n't't't't<br /><span class='"casePriceCart'">";
echo price('cases', $value);
echo "'n't't't</span></div>";
echo "'n't't't<div class='"2u'">";//quantity
echo linkSet('menu', 'buyQty');
echo "'t't't't<br /><br />";
echo "'n't't't't<div>";
echo "'n't't't't't<label for='"qty'"><abbr title='"Quantity'"></abbr></label>";
echo "'n't't't't't<button class='"cartOpt cartOpt_".$value."'" onclick='"modify_qty_".$value."(-1)'"><strong><</strong></button>";
echo "'n't't't't't<input class ='"qty'" id='"qty_".$value."'" value='"1'" disabled='"disabled'"/>";
echo "'n't't't't't<button class='"cartOpt cartOpt_".$value."'" onclick='"modify_qty_".$value."(1)'"><strong>></strong></button>";
echo "'n't't't't</div>";
echo "'n't't't</div>";
echo "'n't't't<div id='"casePriceDiv'" class='"2u'">";//price of quantity chosen
echo linkSet('menu', 'buySum');
echo "'n't't't't - ";
echo linkSet('menu', 'currency');
echo "'n't't't't<br />";
echo "'n't't't't<strong>";
echo priceDisc('cases', $value);
echo "'n't't't't</strong>";
echo "'n't't't't<div id='"sale2discCart'" class='"sale2discCart_".$value."'"></div>";
echo "'n't't't</div>";
print "<script>
function modify_qty_".$value."(val) {
var qty = document.getElementById('qty_".$value."').value;
var new_qty = parseInt(qty,10) + val;
if (new_qty < 1) {
new_qty = 1;
}else if(new_qty > 5){
new_qty = 5;
}
document.getElementById('qty_".$value."').value = new_qty;
document.getElementById('qtyForm_" .$value."' ).value = new_qty;
return new_qty;
};
$(document).ready(function(){
var itemPrice = 0;
$('#itemPrice_".$value."').each(function(){
itemPrice += parseInt($(this).text(),10);
$('.cartOpt_".$value."').click(function(){
var new_qty = ($('#qty_".$value."').val());
var totalItemPrice = new_qty * itemPrice;
$('#itemPrice_".$value."').html(totalItemPrice);
productsInCart();
});
});
function productsInCart(){
var inCart = 0;
var finalPrice;
$('.qty').each(function(){
inCart += parseInt($(this).val());
});
if(inCart<2){
var total = 0;
$('.itemPrice').each(function(){
total += parseInt(this.innerHTML);
});
$('#overallPrice').text(total);
document.getElementById('priceForm_" .$value."' ).value = total;
$('.itemPrice').css('text-decoration','none').addClass;
$('#sale2discCart').empty();
$('.totalDisc').hide();
finalPrice = total;
}else{
var totalNet = 0;
var total = 0;
var totalDisc =0;
var sale2disc = '"-30%'";
var sale2price = $('.itemPrice');
var new2Price = 0;
$('#itemPrice_".$value."').each(function(){
new2Price += parseInt(this.innerHTML)* 0.7;
new2Price = Math.round(new2Price);
document.getElementById('priceForm_" .$value."' ).value = new2Price;
$(this).css('text-decoration','line-through').addClass;
$(this).css('letter-spacing','1px').addClass;
$('.sale2discCart_".$value."').html(sale2disc);
$('.sale2discCart_".$value."').append('<br /><br /><span style='"text-decoration:line-through'">');
$('.sale2discCart_".$value."').append(new2Price);
$('.sale2discCart_".$value."').append('</span><br />');
});
$('.itemPrice').each(function(){
totalNet = parseInt(this.innerHTML);
totalDisc += totalNet * 0.3;
total += totalNet * 0.7;
total = Math.round(total);
totalDisc = Math.round(totalDisc);
finalPrice = total;
});
$('#overallPrice').text(total);
$('.totalDisc').show();
$('#totalDisc').text(totalDisc).append('.00');
}
var delCost = $('.delCost').val();
finalPrice = parseInt(finalPrice, 10) + parseInt(delCost, 10);
document.getElementById('finalPrice' ).value = finalPrice;
}
productsInCart();
})
</script>";
echo "'n't't't<div class='"2u'">";
echo linkSet('menu', 'caseDel');
echo "'t't't't't<br /><br />";
echo "'n't't't't<label for='"del'"><abbr title='"Delete'"></abbr></label>";
echo "'n't't't't<form name ='"unsetCase'" method ='"POST'" action = '"includes/unsetCartModel.php'">";
echo "'n't't't't<button class='"cartOpt'" name='"unsetCase'" type='"submit'" value=".$key."><strong>X</strong></button>";
echo "'n't't't't</form>";
echo "'n't't't</div>";
echo "'n't't</div>'n'n";
};
我真的不确定你是否应该这样做。IMO你应该把你的产品id放在某个地方(比如元素上的数据id属性),通过按钮"添加到购物车"上的onclick事件加载它,并通过ajax到php脚本发送请求,将它添加到你的购物车(由会话或cookie维护)。作为对ajax调用的响应,您应该接收存储并显示给用户的产品信息。
此外,如果你想通过php打印html代码,你应该使用输出缓冲区-只需用ob_start()启动一个缓冲区,并通过ob_end_clean()集输出:)