how do i get the quantity in the form and how do i add the item? right now it doesn't add, actually it replaces any item that was there before. and how do i check if the already is there? and it never gets the quantity in the input box
public function actionBasketAjax($id)
{ $session=new CHttpSession;
$session->open();
if(isset($_GET['qty']))
$quantity = $_GET['qty'];
else $quantity = 1;
$productInfo = Product::model()->findByPk($id);
$cartArray =Yii::app()->session['cart'];
if (Yii::app()->session['cart'] === null)
{
$session->add('cart',array(
"product_id" => $id ,
"product_name" => $productInfo->product_name,
"quantity" => $quantity,
"price" => $productInfo->retail_price,
"totalPrice" => ($productInfo->retail_price * $quantity)
));
}
else{
$newItem = array(
"product_id" => $id ,
"product_name" => $productInfo->product_name,
"quantity" => $quantity,
"price" => $productInfo->retail_price,
"totalPrice" => ($productInfo->retail_price * $quantity)
);
$cartArray = $session->add('cart', $newItem);
}
Try this code: You need to use multi-dimensional array to hold the multiple products.
$cartArray = Yii::app()->session['cart'];
if($cartArray === null) // first time
{
$session->add('cart',array( // each array is a product
array(
"product_id" => $id ,
"product_name" => $productInfo->product_name,
"quantity" => $quantity,
"price" => $productInfo->retail_price,
"totalPrice" => ($productInfo->retail_price * $quantity)
)
)
);
}
else
{
$found_flag = false;
foreach ($cartArray as $k => $c)
{
if($c["product_id"]==$id)// exists
{
$newItem = array(
"product_id" => $id ,
"product_name" => $productInfo->product_name,
"quantity" => $c["quantity"]+$quantity,
"price" => $productInfo->retail_price,
"totalPrice" => ($productInfo->retail_price * ($c["quantity"]+$quantity))
);
$cartArray[$k] = $newItem;
$found_flag = true;
break;
}
}
if(!$found_flag)// id not found, then add as new item
{
$cartArray[] = array(
"product_id" => $id ,
"product_name" => $productInfo->product_name,
"quantity" => $quantity,
"price" => $productInfo->retail_price,
"totalPrice" => ($productInfo->retail_price * $quantity)
);
}
// re-assign session with new array
$session->add('cart',$cartArray);