Php 购物车中的多行,用于不同选项的同一产品
我有一个购物车系统,每个项目都有多个选项。当客户将项目添加到购物车时,它会将所选选项保存到该特定ID,并将其显示在购物车中 我这样做的代码如下:Php 购物车中的多行,用于不同选项的同一产品,php,session,Php,Session,我有一个购物车系统,每个项目都有多个选项。当客户将项目添加到购物车时,它会将所选选项保存到该特定ID,并将其显示在购物车中 我这样做的代码如下: $optionsSelected = array(); if(!empty($_POST['productOption'])){ foreach($_POST['productOption'] as $options){ $optionsSelected[] = $options; } } case "add":
$optionsSelected = array();
if(!empty($_POST['productOption'])){
foreach($_POST['productOption'] as $options){
$optionsSelected[] = $options;
}
}
case "add":
$optionSelected数组var_dumps()为:
要在购物车中显示选项,我有:
<?php if($_SESSION['options'.$id] > 0): ?>
<?php foreach($_SESSION['options'.$id] as $option): ?>
<p><?php echo $option; ?></p>
<?php endforeach; ?>
<?php endif; ?>
我真的不知道如何告诉it部门将它们分解并作为
单个项目放置在购物车中,因为它们具有相同的产品ID。如果您稍微更改一下代码,您将能够使用以下内容:
$array = array();
$array['options4521'][] = array('A','C','D');
$array['options4521'][] = array('B','B','A');
echo print_r($array);
输出为:
[options4521] => Array
(
[0] => Array
(
[0] => A
[1] => C
[2] => D
)
[1] => Array
(
[0] => B
[1] => B
[2] => A
)
)
在阵列中添加产品时,会用新产品擦除旧产品
您可以使用另一种方法,例如为每个产品使用子数组
$optionsSelected = array();
if (!empty($_POST['productOption']))
{
foreach ($_POST['productOption'] as $options)
$optionsSelected[] = $options;
}
case "add":
$_SESSION['cart'][$productID]++;
$_SESSION['options'.$productID][] = $optionsSelected; // line changed here
header('location: /shop/cart');
break;
然后,您可以这样显示结果
<?php if (count($_SESSION['options'.$id]) > 0): ?>
<?php foreach($_SESSION['options'.$id] as $key => $options): ?>
<?php echo '<p>Product ID '.$id.': '.implode(", ", $options).' (Quantity: '.$_SESSION['cart'][$id].')</p>'; ?>
<?php endforeach; ?>
<?php endif; ?>
注意:显示部分可能(应该)如下所示
<?php
if (count($_SESSION['options'.$id]) > 0)
{
foreach ($_SESSION['options'.$id] as $key => $options)
{
echo '<p>Product ID '.$id.': '.implode(", ", $options).' (Quantity: '.$_SESSION['cart'][$id].')</p>';
}
}
?>
我得到了以下信息:警告:内爆()[函数.内爆]:传入的参数无效
好吧,这让它显示了两组选项。但我真的希望它能显示在不同的行上。每个都有一个单独的数量和选项列表。我想已经足够接近了。这就是我所拥有的:http://i1309.photobucket.com/albums/s627/mievan123/Capture_zpsab2fe131.png
我真正想要的是,每个项目都有完全不同的行,有不同的选项。这取决于您。我回答了你的主要问题,现在你可以找到你想要的替代品了
<?php if (count($_SESSION['options'.$id]) > 0): ?>
<?php foreach($_SESSION['options'.$id] as $key => $options): ?>
<?php echo '<p>Product ID '.$id.': '.implode(", ", $options).' (Quantity: '.$_SESSION['cart'][$id].')</p>'; ?>
<?php endforeach; ?>
<?php endif; ?>
<?php
if (count($_SESSION['options'.$id]) > 0)
{
foreach ($_SESSION['options'.$id] as $key => $options)
{
echo '<p>Product ID '.$id.': '.implode(", ", $options).' (Quantity: '.$_SESSION['cart'][$id].')</p>';
}
}
?>