SitePoint Sponsor

User Tag List

Results 1 to 3 of 3
  1. #1
    SitePoint Member
    Join Date
    Jul 2011
    Posts
    17
    Mentioned
    0 Post(s)
    Tagged
    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:
    http://www.phpwebcommerce.com/plaincart/index.php

    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


    checkout-functions.php:
    PHP Code:
    <?php
    require_once 'config.php';

    /*********************************************************
    *                 CHECKOUT FUNCTIONS 
    *********************************************************/
    function saveOrder()
    {
        
    $orderId       0;
        
    $shippingCost  5;
        
    $requiredField = array('hidShippingFirstName''hidShippingLastName''hidShippingAddress1''hidShippingCity''hidShippingPostalCode',
                               
    'hidPaymentFirstName''hidPaymentLastName''hidPaymentAddress1''hidPaymentCity''hidPaymentPostalCode');
                               
        if (
    checkRequiredPost($requiredField)) {
            
    extract($_POST);
            
            
    // 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 (
    $orderId{$cartContent[$i]['pd_id']}{$cartContent[$i]['ct_qty']})";
                    
    $result dbQuery($sql);                    
                }
            
                
                
    // update product stock
                
    for ($i 0$i $numItem$i++) {
                    
    $sql "UPDATE tbl_product 
                            SET pd_qty = pd_qty - 
    {$cartContent[$i]['ct_qty']}
                            WHERE pd_id = 
    {$cartContent[$i]['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 = 
    {$cartContent[$i]['ct_id']}";
                    
    $result dbQuery($sql);                    
                }                            
            }                    
        }
        
        return 
    $orderId;
    }

    /*
        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 = 
    $orderId
                
                UNION
                
                SELECT od_shipping_cost 
                FROM tbl_order
                WHERE od_id = 
    $orderId";
        
    $result dbQuery($sql);

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

    ?>

    any help will be greatly appreciated

  2. #2
    Keeper of the SFL StarLion's Avatar
    Join Date
    Feb 2006
    Location
    Atlanta, GA, USA
    Posts
    3,748
    Mentioned
    73 Post(s)
    Tagged
    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
    Location
    Augusta, Georgia, United States
    Posts
    4,182
    Mentioned
    16 Post(s)
    Tagged
    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.


Bookmarks

Posting Permissions

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