كيفية إضافة تكلفة الشحن عن طريق العثور على أكبر حجم مع PHP؟

StackOverflow https://stackoverflow.com/questions/2036578

  •  19-09-2019
  •  | 
  •  

سؤال

في الوقت الحالي، أضف رسوم الشحن 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;
...

كما ترون أستطيع استخدام الجلسة لتتبع الحجم أو السعر. لذلك أعتقد أنه يمكنني استخدامها للعثور على سعر الشحن النهائي.

سوف أقدر أي أيدي مساعدة.

شكرا مقدما.

هل كانت مفيدة؟

المحلول

في التسوق الخاص بك يحسب السعر الإجمالي

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;
   }
} 

نصائح أخرى

كنت أستخدم شيئا مثل:

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);  
  } 
} 

وبهذه الطريقة يمكنك الحصول على أي سعر الشحن وستحصل على شحن واحد فقط.

لكن بهذه الطريقة تأخذ في الاعتبار فقط سعر الشحن لعنصر واحد. سأأخذ في الاعتبار الرقم أو العناصر أيضا. لأن تكلفة تغيير الشحن عند الشحن منتج واحد وعند الشحن مائة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top