【问题标题】:Get the sum of the value of a variable in a PHP while loop在 PHP while 循环中获取变量值的总和
【发布时间】:2017-05-02 02:14:16
【问题描述】:

这将显示用户所做的所有产品选择并且有效。我需要添加一个带有函数的变量,该函数将返回 $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>

【问题讨论】:

  • 这是一种可怕的代码风格。考虑将逻辑与标记分开。分离html、php、js、mysql等
  • 请删除您的密码

标签: php html mysql


【解决方案1】:

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

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

$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;

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

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

【讨论】:

    【解决方案2】:

    你可以设置

    $sub_total = 0 before while loop starts;
    

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

    【讨论】:

    • 效果很好! ($sub_total = 0;) 和 ($sub_total += $total_price;) 然后我输入: 小计: \$ $sub_total
    • 效果很好! ($sub_total = 0;) 和 ($sub_total += $total_price;) 然后我输入: 小计: \$ $sub_total ....显示的项目的每个框都有到该点的小计。也许总数应该在页面的不同区域显示和更改,但这很好。我会以同样的方式报税。应该像 ($grandtotal = sprintf("%.02f", $sub_total * .06 + $sub_total)
    猜你喜欢
    • 1970-01-01
    • 2012-06-01
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    相关资源
    最近更新 更多