SitePoint Sponsor

User Tag List

Results 1 to 3 of 3
  1. #1
    SitePoint Member
    Join Date
    Jul 2011
    0 Post(s)
    0 Thread(s)

    Help pls !! customize shipping cost

    Hi there, I would like to customize $shippingCost in my shopping cart. I follow a tutorial from:

    This tutorial using flat shipping rate, how to customize shippingCost based on the product weight ?

    Example: shipping method will based on weight & place within Malaysia:

    west malaysia, up to 1kg = rm9
    east malaysia, up to 1kg = rm12

    west malaysia, up to 2kg = rm12
    east malaysia, up to 2kg = rm16

    west malaysia, up to 5kg = rm18
    east malaysia, up to 5kg = rm32

    west malaysia, up to 10kg = rm24
    east malaysia, up to 10kg = rm48

    Do i need to create a new field inside my database for product weight ? is it $weight * $product_quantity ? Does anyone know how to accomplish this customization? . Please help because I am very confuse. Thank you in advanced

    PHP Code:
    require_once 'config.php';

    *                 CHECKOUT FUNCTIONS 
    function saveOrder()
    $orderId       0;
    $shippingCost  5;
    $requiredField = array('hidShippingFirstName''hidShippingLastName''hidShippingAddress1''hidShippingCity''hidShippingPostalCode',
        if (
    checkRequiredPost($requiredField)) {
    // make sure the first character in the 
            // customer and city name are properly upper cased
    $hidShippingFirstName ucwords($hidShippingFirstName);
    $hidShippingLastName  ucwords($hidShippingLastName);
    $hidPaymentFirstName  ucwords($hidPaymentFirstName);
    $hidPaymentLastName   ucwords($hidPaymentLastName);
    $hidShippingCity      ucwords($hidShippingCity);
    $hidPaymentCity       ucwords($hidPaymentCity);
    $cartContent getCartContent();
    $numItem     count($cartContent);
    // save order & get order id
    $sql "INSERT INTO tbl_order(od_date, od_last_update, od_shipping_first_name, od_shipping_last_name, od_shipping_address1, 
                                          od_shipping_address2, od_shipping_phone, od_shipping_state, od_shipping_city, od_shipping_postal_code, od_shipping_cost,
                                          od_payment_first_name, od_payment_last_name, od_payment_address1, od_payment_address2, 
                                          od_payment_phone, od_payment_state, od_payment_city, od_payment_postal_code)
                    VALUES (NOW(), NOW(), '
    $hidShippingFirstName', '$hidShippingLastName', '$hidShippingAddress1', 
    $hidShippingAddress2', '$hidShippingPhone', '$hidShippingState', '$hidShippingCity', '$hidShippingPostalCode', '$shippingCost',
    $hidPaymentFirstName', '$hidPaymentLastName', '$hidPaymentAddress1', 
    $hidPaymentAddress2', '$hidPaymentPhone', '$hidPaymentState', '$hidPaymentCity', '$hidPaymentPostalCode')";
    $result dbQuery($sql);
    // get the order id
    $orderId dbInsertId();
            if (
    $orderId) {
    // save order items
    for ($i 0$i $numItem$i++) {
    $sql "INSERT INTO tbl_order_item(od_id, pd_id, od_qty)
                            VALUES (
    $result dbQuery($sql);                    
    // update product stock
    for ($i 0$i $numItem$i++) {
    $sql "UPDATE tbl_product 
                            SET pd_qty = pd_qty - 
                            WHERE pd_id = 
    $result dbQuery($sql);                    
    // then remove the ordered items from cart
    for ($i 0$i $numItem$i++) {
    $sql "DELETE FROM tbl_cart
                            WHERE ct_id = 
    $result dbQuery($sql);                    

        Get order total amount ( total purchase + shipping cost )
    function getOrderAmount($orderId)
    $orderAmount 0;
    $sql "SELECT SUM(pd_price * od_qty)
                FROM tbl_order_item oi, tbl_product p 
                WHERE oi.pd_id = p.pd_id and oi.od_id = 
                SELECT od_shipping_cost 
                FROM tbl_order
                WHERE od_id = 
    $result dbQuery($sql);

        if (
    dbNumRows($result) == 2) {
    $row dbFetchRow($result);
    $totalPurchase $row[0];
    $row dbFetchRow($result);
    $shippingCost $row[0];
    $orderAmount $totalPurchase $shippingCost;


    any help will be greatly appreciated

  2. #2
    Keeper of the SFL StarLion's Avatar
    Join Date
    Feb 2006
    Atlanta, GA, USA
    73 Post(s)
    0 Thread(s)
    $shippingCost = 5;

    Change that into whatever if() you need to differentiate between east and west malaysia, and by weight.

  3. #3
    SitePoint Wizard bronze trophy
    Join Date
    Jul 2006
    Augusta, Georgia, United States
    16 Post(s)
    4 Thread(s)
    Calculation of shipping properly based on weight, location and provider is a very complex and involved process. You will need to get familiar with the provider APIs, in which case you usually send them information via SOAP or REST to get a close estimate of shipping costs. There is a ton of things not only in terms of PHP to understand but provided APIs making it my no means easy to paste in a little code and have t just magically work.
    The only code I hate more than my own is everyone else's.


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts