我正在使用CodeIgniter购物车。我正在获取购物车详细信息,例如
Array
(
[dc54c1ce61893fa725cf87c9e20b4c78] => Array
(
[id] => 1
[name] => wertoiuy
[qty] => 1
[price] => 200
[options] => Array
(
[duration => 0
)
[rowid] => dc54c1ce61893fa725cf87c9e20b4c78
)
[e5966e762beda1762e461f27f1dc3ef4] => Array
(
[id] => 2
[name] => qwertf
[qty] => 1
[price] => 100
[options] => Array
(
[duration] => 6m
)
[rowid] => e5966e762beda1762e461f27f1dc3ef4
)
)
请注意,我收到[duration] => 6m
或[duration] => 12m
。
我从下拉菜单中获得的持续时间。
<select name="yearDropdown" class="form-control dropdownDuration" >
<option selected disabled >Select duration</option>
<option value="12m">1 Year</option>
<option value="6m">6 months</option>
</select>
现在我要输入的是,选择下拉菜单后,单击“添加到购物车”。产品详细信息已添加到购物车,但是当我刷新页面时,我的下拉列表便被清除。我的意思是下拉列表再次显示Select duration
。在将产品添加到购物车中时,它应该显示我选择的内容。
我尝试了一些代码
<?php if (in_array($prim->name_id, array_column($this->cart->contents(), 'id'))){
foreach ($this->cart->contents() as $product) {
if ($product['options']['duration'] == '12m') {
$yearSelected12='selected="selected"';
}
if ($product['options']['duration'] == '6m') {
$yearSelected6='selected="selected"';
}
break;
}
}?>
<select name="yearDropdown" class="form-control dropdownDuration" >
<option selected disabled >Select duration</option>
<option value="12m" <?php echo $yearSelected12;?>>1 Year</option>
<option value="6m" <?php echo $yearSelected6;?>>6 months</option>
</select>
<?php }?>
但是它不起作用。还有其他解决方法吗?
您能在这个问题上帮助我吗?
@Praveen kumar建议答案后。我尝试过
<?php if (in_array($prim->name_id, array_column($this->cart->contents(), 'id'))){
foreach ($this->cart->contents() as $product) {
//break;
} }?>
<select name="memberDuration" class="form-control dropdownDuration">
<option selected disabled>Select duration</option>
<option value="12m" <?php if($product['options'][ 'duration']=="12m"){ echo 'selected="selected"';} ?> >1 Year</option>
<option value="6m" <?php if($product[ 'options'][ 'duration']=="6m" ){ echo 'selected="selected"';} ?>>6 months</option>
</select>
此代码正在刷新,但最初出现错误“未定义变量:产品”。
答案 0 :(得分:0)
我觉得这有问题
<?php
if (in_array($prim->name_id, array_column($this->cart->contents(), 'id'))) {
foreach($this->cart->contents() as $product) {
if ($product['options']['durationActivity'] == '12m') {
$yearSelected12 = 'selected="selected"';
}
if ($product['options']['durationActivity'] == '6m') {
$yearSelected6 = 'selected="selected"';
}
break;
}
}
?>
首先,您不应该在此处添加break
。其次,我希望您在页面上显示$product
,因为这是您要显示的内容,并在<option>
上进行检查:
<select name="yearDropdown" class="form-control dropdownDuration" >
<option selected disabled >Select duration</option>
<option<?php echo ($product["duration"] == "12m") ? ' selected="selected"' : ""; ?> value="12m">1 Year</option>
<option<?php echo ($product["duration"] == "6m") ? ' selected="selected"' : ""; ?> value="6m">6 months</option>
</select>
说实话,以上$product
在以下方面应具有灵活性:
$_POST
进行了更改,则应获取该值。在我看来,在这种完整的情况下,您不需要foreach
循环。