获取PHP while循环中变量值的总和

时间:2016-12-16 10:00:32

标签: php html mysql

这将显示用户所做的所有产品选择并且有效。我需要添加一个带有函数的变量,该函数将返回$ total_price的所有实例的总和,这样我就可以显示所选产品(项)的总价。我相信对你们许多人来说这将是一件简单的事情。 我不知道怎么做,一直无法找到一个例子。此代码来自购物车,只要我可以显示所有选择的总价格,我就可以将其用作结帐的一部分。 在此之后采取该小计并增加税收应该是一件简单的事情。 有人请告诉我$ sub_total的代码吗?

<?php
session_start();
//connect to database
$mysqli = mysqli_connect("localhost", "root", "", "hestonw0355");
//$mysqli = mysqli_connect("localhost", "hestonw0355", "1Password!", "hestonw0355"); //for the school server
//$mysqli = mysqli_connect("localhost", "sungr_RobW", "O+N7?Pa%Go*T&", "sungraff_hestonw0355") or die("Error " . mysqli_error($mysqli)); //for dailyrazor.com

$display_block = "<h1>Your Shopping Cart</h1>";

//check for cart items based on user session id
$get_cart_sql = "SELECT st.id, si.item_title, si.item_price,
                st.sel_item_qty, st.sel_item_size, st.sel_item_color FROM
                store_shoppertrack AS st LEFT JOIN store_items AS si ON
                si.id = st.sel_item_id WHERE session_id =
                '".$_COOKIE['PHPSESSID']."'";
$get_cart_res = mysqli_query($mysqli, $get_cart_sql)
                or die(mysqli_error($mysqli));

if (mysqli_num_rows($get_cart_res) < 1) {
    //print message
    $display_block .= "<p>You have no items in your cart.
    Please <a href=\"seestore.php\">continue to shop</a>!</p>";
} else {

    while ($cart_info = mysqli_fetch_array($get_cart_res)) {
        $id = $cart_info['id'];
        $item_title = stripslashes($cart_info['item_title']);
        $item_price = $cart_info['item_price'];
        $item_qty = $cart_info['sel_item_qty'];
        $item_color = $cart_info['sel_item_color'];
        $item_size = $cart_info['sel_item_size'];
        $total_price = sprintf("%.02f", $item_price * $item_qty);
        $sub_total = 

    //get info and build cart display
    $display_block .= <<<END_OF_TEXT

    <table width='100%'>
    <tr>
    <th>Title</th>
    <th>Size</th>
    <th>Color</th>
    <th>Price</th>
    <th>Qty</th>
    <th>Total Price</th>
    <th>Action</th>
    </tr>
    <tr>
    <td>$item_title <br></td>
    <td>$item_size <br></td>
    <td>$item_color <br></td>
    <td>\$ $item_price <br></td>
    <td>$item_qty <br></td>
    <td>\$ $total_price</td>
    <td><a href="removefromcart.php?id=$id">remove</a></td>
    </tr>
END_OF_TEXT;
    }
    $display_block .= "</table>";
}
//free result
mysqli_free_result($get_cart_res);

//close connection to MySQL
mysqli_close($mysqli);
?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>

<body>
<?php echo $display_block; ?>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

要获得全球总价,您可以:

$sub_total之前设置变量while,如下所示:

$sub_total = 0;

while循环中,您为每个迭代计算的$total_price添加变量,如下所示:

$sub_total = $sub_total + $total_price

或以紧凑的方式:

$sub_total += $total_price

建议:

改变这个:

$total_price = sprintf("%.02f", $item_price * $item_qty);

在:

$total_price = $item_price * $item_qty;

并在您想要显示时格式化您的值。

其他代码部分应该改变,但我把注意力集中在你的主要要求上。

答案 1 :(得分:1)

您可以设置

$sub_total = 0 before while loop starts;

然后执行$sub_total += $total_price。在while循环结束时,$ sub_total将包含所有产品的总价。