php为多个项目输出的javascript


javascript output by php for multiple items

我创建了一个购物车,供用户放置想要购买的物品。每个项目都有自己的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()集输出:)