Zend - The PHP Company




Commerce

Add Code


PHP/MySQL Shopping cart  

Type: class
Added by: homechicken
Entered: 03/04/2000
Last modified: 08/12/1999
Rating: **** (48 votes)
Views: 110050
This was based on a shopping cart by Ethan Schroeder. You can still find the original on px.sklar.com (thanks Bill)


<?
    
/* shoppingcart.php
     *
     *
     */

    
if(!$session && !$scid) {
        
$session md5(uniqid(rand()));
        
SetCookie("scid""$session"time() + 14400);
    } 
/* last number is expiration time in seconds, 14400 sec = 4 hrs */
    
    
class Cart {
        function 
check_item($table$session$product) {
            
$query "SELECT * FROM $table WHERE session='$session' AND product='$product' ";
            
$result mysql_query($query);
            
            if(!
$result) {
                return 
0;
            }

            
$numRows mysql_num_rows($result);

            if(
$numRows == 0) {
                return 
0;
            } else {
                
$row mysql_fetch_object($result);
                return 
$row->quantity;
            }
        }

        function 
add_item($table$session$product$quantity) {
            
$qty $this->check_item($table$session$product);
            if(
$qty == 0) {
                
$query "INSERT INTO $table (session, product, quantity) VALUES ";
                
$query .= "('$session', '$product', '$quantity') ";
                
mysql_query($query);
            } else {
                
$quantity += $qty;
                
$query "UPDATE $table SET quantity='$quantity' WHERE session='$session' AND ";
                
$query .= "product='$product' ";
                
mysql_query($query);
            }
        }
        
        function 
delete_item($table$session$product) {
            
$query "DELETE FROM $table WHERE session='$session' AND product='$product' ";
            
mysql_query($query);
        }
        
        function 
modify_quantity($table$session$product$quantity) {
            
$query "UPDATE $table SET quantity='$quantity' WHERE session='$session' ";
            
$query .= "AND product='$product' ";
            
mysql_query($query);
        }
        
        function 
clear_cart($table$session) {
            
$query "DELETE FROM $table WHERE session='$session' ";
            
mysql_query($query);
        }
        
        function 
cart_total($table$session) {
            
$query "SELECT * FROM $table WHERE session='$session' ";
            
$result mysql_query($query);
            if(
mysql_num_rows($result) > 0) {
                while(
$row mysql_fetch_object($result)) {
                    
$query "SELECT price FROM inventory WHERE product='$row->product' ";
                    
$invResult mysql_query($query);
                    
$row_price mysql_fetch_object($invResult);
                    
$total += ($row_price->price $row->quantity);
                }
            }
            return 
$total;
        }
        
        function 
display_contents($table$session) {
            
$count 0;
            
$query "SELECT * FROM $table WHERE session='$session' ORDER BY id ";
            
$result mysql_query($query);
            while(
$row mysql_fetch_object($result)) {
                
$query "SELECT * FROM inventory WHERE product='$row->product' ";
                
$result_inv mysql_query($query);
                
$row_inventory mysql_fetch_object($result_inv);
                
$contents["product"][$count] = $row_inventory->product;
                
$contents["price"][$count] = $row_inventory->price;
                
$contents["quantity"][$count] = $row->quantity;
                
$contents["total"][$count] = ($row_inventory->price $row->quantity);
                
$contents["description"][$count] = $row_inventory->description;
                
$count++;
            }
            
$total $this->cart_total($table$session);
            
$contents["final"] = $total;
            return 
$contents;
        }
        
        function 
num_items($table$session) {
            
$query "SELECT * FROM $table WHERE session='$session' ";
            
$result mysql_query($query);
            
$num_rows mysql_num_rows($result);
            return 
$num_rows;
        }
        
        function 
quant_items($table$session) {
            
$quant 0;
            
$query "SELECT * FROM $table WHERE session='$session' ";
            
$result mysql_query($query);
            while(
$row mysql_fetch_object($result)) {
                
$quant += $row->quantity;
            }
            return 
$quant;
        }
    }
?>

/*
   This part contains a description of how to create the tables on your mysql server.
   
# MySQL dump 6.0
#
# Host: localhost    Database: kmartShopper
#--------------------------------------------------------
# Server version    3.22.25

#
# Table structure for table 'inventory'
#
CREATE TABLE inventory (
  product tinytext NOT NULL,
  quantity tinytext NOT NULL,
  id int(4) DEFAULT '0' NOT NULL auto_increment,
  description tinytext NOT NULL,
  price float(10,2) DEFAULT '0.00' NOT NULL,
  category char(1) DEFAULT '' NOT NULL,
  KEY id (id),
  PRIMARY KEY (id),
  KEY price (price)
);

#
# Table structure for table 'shopping'
#
CREATE TABLE shopping (
  session tinytext NOT NULL,
  product tinytext NOT NULL,
  quantity tinytext NOT NULL,
  card tinytext NOT NULL,
  id int(4) DEFAULT '0' NOT NULL auto_increment,
  KEY id (id),
  PRIMARY KEY (id)
);
*/


Usage Example


<?
    
include("shoppingcart.php");
    
$cart = new Cart;
    
$mysql_link mysql_connect("localhost""wwwrun""");
    
$mysql_select_db("kmartShopper"$mysql_link/* heh, use whatever database name you put the 2 tables under in place of kmartShopper */
?>
/* call functions like $cart->add_item and such, see the code.  */


Rate This Script





Search



This Category All Categories