Как добавить стоимость доставки, найдя самый большой размер с PHP? - PullRequest
0 голосов
/ 10 января 2010

На данный момент я добавляю стоимость доставки 65Kr.

В магазине только четыре цены.

Мне нужно изменить стоимость доставки следующим образом.

Для продукта, который стоит 198Kr и 268Kr, нужно 25Kr, а для более высокой цены (418 и 498Kr) нужно 65Kr.

Если покупатель покупает 198Kr и 418kr, ему нужно заплатить 65Kr. Это означает, что если есть один предмет, который нуждается в 65Kr, то доставка будет 65Kr.

Если покупатель покупает 198Kr и 268Kr, ему нужно заплатить 25Kr.

Я не уверен, как добавить эту доставку к общей стоимости.

Я использую следующий код для обновления общей цены.

И я добавляю 65Kr на кассе.

function updateCart($productid,$fullproduct){
    $cart = isset($_SESSION['cart']) ? $_SESSION['cart'] : array();

$productid = id_clean($productid);
$totalprice = 0;
if (count($fullproduct)){
    if (isset($cart[$productid])){
        $prevct = $cart[$productid]['count'];
        $prevname = $cart[$productid]['name'];
        $prevprice = $cart[$productid]['price'];
        $cart[$productid] = array(
                'name' => $prevname,
                'price' => $prevprice,
                'count' => $prevct + 1
                );
    }else{
        $cart[$productid] = array(
                'name' => $fullproduct['name'],

'price' => $fullproduct['price'],
'count' => 1
                );          
    }

foreach ($cart as $id => $product){
    $totalprice += $product['price'] * $product['count'];
    }       

    $_SESSION['totalprice'] = $totalprice;
    $_SESSION['cart'] = $cart;
    $msg = $this->lang->line('orders_added_cart');
    $this->session->set_flashdata('conf_msg', $msg); 
}
}

на кассе

...
$shipping= 65;
$grandtotal = (int)$totalprice + $shipping;
...

Как видите, я могу использовать сессию, чтобы отслеживать размер или цену. Поэтому я думаю, что смогу использовать их, чтобы найти окончательную цену доставки.

Я буду признателен за любые руки помощи.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 10 января 2010

в вашей итерации корзины, которая вычисляет общую стоимость

foreach ($cart as $id => $product){
   $totalprice += $product['price'] * $product['count'];
} 

также вычислите стоимость доставки и поместите ее в сеанс.

$shippingprice = 25.0;
foreach ($cart as $id => $product){
   $totalprice += $product['price'] * $product['count'];
   if ( $product['price'] > 268 ){
       $shippingprice = 65.0;
   }
} 
0 голосов
/ 10 января 2010

Я бы использовал что-то вроде:

function updateCart($productid,$fullproduct)
{ 
  $cart       = isset($_SESSION['cart']) ? $_SESSION['cart'] : array(); 
  $productid  = id_clean($productid); 
  $totalprice = 0;
  if (count($fullproduct))
  { 
    if (isset($cart[$productid]))
    { 
      $prevct = $cart[$productid]['count']; 
      $prevname = $cart[$productid]['name']; 
      $prevprice = $cart[$productid]['price']; 
      $cart[$productid] = array( 
            'name' => $prevname, 
            'price' => $prevprice, 
            'count' => $prevct + 1 
            ); 
    }
    else
    { 
      $cart[$productid] = array( 
            'name' => $fullproduct['name'], 
            'price' => $fullproduct['price'], 
            'shipping' => $fullproduct['shipping']
            'count' => 1 
            );           
    } 

    $shipping = 0;
    foreach ($cart as $id => $product)
    { 
      $shipping = $shipping < $product['shipping'] ? $product['shipping'] : $shipping;
      $totalprice += $product['price'] * $product['count']; 
    }        

    $_SESSION['totalprice'] = $totalprice; 
    $_SESSION['cart']       = $cart; 
    $_SESSION['shipping']   = $shipping;

    $msg = $this->lang->line('orders_added_cart'); 
    $this->session->set_flashdata('conf_msg', $msg);  
  } 
} 

Таким образом, вы можете иметь любую стоимость доставки, и вы будете взимать только более высокую цену.

Однако при этом учитывается только стоимость доставки одного товара. Я бы тоже принял во внимание количество или предметы. Потому что стоимость доставки меняется при отгрузке одного товара и при отгрузке сто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...