Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 2 of 2
  1. #1
    New Coder
    Join Date
    Mar 2011
    Posts
    30
    Thanks
    5
    Thanked 0 Times in 0 Posts

    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
    Master Coder mlseim's Avatar
    Join Date
    Jun 2003
    Location
    Cottage Grove, Minnesota
    Posts
    9,378
    Thanks
    8
    Thanked 1,075 Times in 1,066 Posts
    You are correct.
    You need to add a weight column to the database table.
    The total weight then becomes the weight * quantity purchased.

    You can use an array for the various levels of weight VS cost.
    Find where your total weight falls within the various levels you set.

    Maybe someone has the spare time to really dive into this and show an example.



    .


  •  

    Posting Permissions

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