![](/img/trans.png)
[英]shopping cart using $_session and send product name and quantity how can I send total cost at same time
[英]how can i write an algorithm to multiply the total * quantity in a shopping cart using php $_SESSION?
我正在編寫一個購物車並將我的數據存儲在 $_SESSION 數組中,但想計算總數。 在它下面是我認為可以做到這一點的代碼,但它返回“1”而不是總數!
$total = array($_SESSION['qty'],$_SESSION['pr']);
/* 我會給你更多的代碼...謝謝你的幫助!! 這是我的 php 購物車的代碼:
<?php
function item_list() { if(isset($_SESSION['qty'])){ $total = array($_SESSION['qty'],$_SESSION['pr']);
foreach($_SESSION['qty'] as $key => $value)
{?>
<tr>
<td align="center"><?php echo $_SESSION['item'][$key]; ?></td>
<td align="center"><?php echo $value; ?></td>
<td align="center"><?php echo $_SESSION['pr'][$key]; ?></td>
<td align="center"><?php echo array_product($total); ?>
</tr><?php
}
}
}
session_start();
if(isset($_POST['clear']) && ($_POST['clear'] == 'clear')) { session_destroy(); 未設置($_SESSION['qty']); 未設置($_SESSION['item']); 未設置($_SESSION['pr']); 未設置($_POST['數量']); 未設置($_POST['item']); 未設置($_POST['pr']); }
if(!isset($_SESSION['qty'])) $_SESSION['qty'] = array(); if(!isset($_SESSION['item'])) $_SESSION['item'] = array(); if(!isset($_SESSION['pr'])) $_SESSION['pr'] = array();
if(isset($_POST['qty'])) {
foreach($_POST['qty'] as $value)
{
if(!$value == '') array_push($_SESSION['qty'], filter_var($value,
FILTER_SANITIZE_SPECIAL_CHARS)); } foreach($_POST['item'] as $key => $value) { if(!$_POST['qty'][$key] == '') array_push($_SESSION['item'], filter_var( $value, FILTER_SANITIZE_SPECIAL_CHARS)); } foreach($_POST['pr'] as $key => $value) { if(!$_POST['qty'][$key] == '') array_push($_SESSION['pr'], filter_var( $value, FILTER_SANITIZE_SPECIAL_CHARS)); }
}?>
這是構建購物車的一種奇怪的方式,但這里是如何使用該結構來實現的:
foreach($_SESSION['qty'] as $key => $value)
{
$total = $_SESSION['qty'][$key] * $_SESSION['pr'][$key];
?>
<tr>
<td align="center"><?php echo $_SESSION['item'][$key]; ?></td>
<td align="center"><?php echo $value; ?></td>
<td align="center"><?php echo $_SESSION['pr'][$key]; ?></td>
<td align="center"><?php echo $total; ?>
</tr><?php
}
如果您想獲得購物車的所有數量和成本的總和:
function getTotals()
{
$total = array('qty' => 0, 'price' => 0);
foreach($_SESSION['qty'] as $key => $qty)
{
$total['qty'] += $qty;
$total['price'] += ($_SESSION['pr'][$key] * $qty)
}
return $total;
}
$total = getTotals();
echo $total['qty']; // output the total quantity of items
echo $total['price']; // output the total cost for all items and quantity
不過,我會推薦一個更好的結構,例如:
$_SESSION['cart']['items'] = array(
array(
'name' => 'Screwdriver',
'price' => 5,
'qty' => 2,
),
array(
'name' => 'Hammer',
'price' => 10,
'qty' => 1,
)
);
根據您的購物車數組,它無法容納多個產品,您必須使用這樣的多維數組
$_SESSION['cart_items'] = array(
array( "qty"=>5, "item"=>"tshirt", "pr"=>50.20),
array( "qty"=>2, "item"=>"Cell Phone", "pr"=>50.20),
array( "qty"=>7, "item"=>"", "pr"=>50.20),
)
然后你可以像這樣寫你的代碼
function item_list()
{
foreach($_SESSION['cart_items'] as $item_array)
{?>
<tr>
<td align="center">Item:<?php echo $item_array['item']; ?></td>
<td align="center">Qty: <?php echo $item_array['qty']; ?></td>
<td align="center">Price :<?php echo $item_array['pr']; ?></td>
<td align="center">Total : <?php echo $item_array['qty'] * $item_array['pr']; ?>
</tr><?php
}
}
您應該為自己創建一個Card
類,它能夠從$_SESSION
超全局變量(或其他一些數組,如果您模擬它進行測試,使用$_SESSION
進行測試可能會很尷尬)導入/導出數據,它能夠輕松處理您的數據結構也可以計算總數:
$cart = new Cart();
$cart->importFromArray($_SESSION);
// or:
$cart->importFromArray($_SESSION['cart']);
// later on:
$total = $cart->getTotal();
// somewhere else:
$cart->addItem(...);
...
$_SESSION['cart'] = $cart->exportToArray();
隨着時間的推移,這將允許您更輕松地更改代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.