⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shopping_cart.php

📁 每个RFC 3261信息头有一个相应的存取标识. 但是,许多信息头拥有同样的形式。 例如。To和From的信息头都是由显示名和一个URI组成。 To和From信息头用来管理与处理NameAddr实例的
💻 PHP
字号:
<?php/*  $Id: shopping_cart.php,v 1.10 2003/06/23 01:18:56 hpdl Exp $  osCommerce, Open Source E-Commerce Solutions  http://www.oscommerce.com  Copyright (c) 2003 osCommerce  Released under the GNU General Public License*/  class shoppingCart {    var $contents, $total, $weight;    function shoppingCart() {      $this->reset();    }    function restore_contents() {      global $customer_id;      if (!$customer_id) return 0;// insert current cart contents in database      if ($this->contents) {        reset($this->contents);        while (list($products_id, ) = each($this->contents)) {          $qty = $this->contents[$products_id]['qty'];          $product_query = tep_db_query("select products_id from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");          if (!tep_db_num_rows($product_query)) {            tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET . " (customers_id, products_id, customers_basket_quantity, customers_basket_date_added) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id) . "', '" . tep_db_input($qty) . "', '" . date('Ymd') . "')");            if ($this->contents[$products_id]['attributes']) {              reset($this->contents[$products_id]['attributes']);              while (list($option, $value) = each($this->contents[$products_id]['attributes'])) {                tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " (customers_id, products_id, products_options_id, products_options_value_id) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id) . "', '" . (int)$option . "', '" . (int)$value . "')");              }            }          } else {            tep_db_query("update " . TABLE_CUSTOMERS_BASKET . " set customers_basket_quantity = '" . tep_db_input($qty) . "' where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");          }        }      }// reset per-session cart contents, but not the database contents      $this->reset(FALSE);      $products_query = tep_db_query("select products_id, customers_basket_quantity from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "'");      while ($products = tep_db_fetch_array($products_query)) {        $this->contents[$products['products_id']] = array('qty' => $products['customers_basket_quantity']);// attributes        $attributes_query = tep_db_query("select products_options_id, products_options_value_id from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products['products_id']) . "'");        while ($attributes = tep_db_fetch_array($attributes_query)) {          $this->contents[$products['products_id']]['attributes'][$attributes['products_options_id']] = $attributes['products_options_value_id'];        }      }      $this->cleanup();    }    function reset($reset_database = FALSE) {      global $customer_id;      $this->contents = array();      $this->total = 0;      if ($customer_id && $reset_database) {        tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "'");        tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where customers_id = '" . (int)$customer_id . "'");      }    }    function add_cart($products_id, $qty = '', $attributes = '') {      global $new_products_id_in_cart, $customer_id;      $products_id = tep_get_uprid($products_id, $attributes);      if ($this->in_cart($products_id)) {        $this->update_quantity($products_id, $qty, $attributes);      } else {        if ($qty == '') $qty = '1'; // if no quantity is supplied, then add '1' to the customers basket        $this->contents[] = array($products_id);        $this->contents[$products_id] = array('qty' => $qty);// insert into database        if ($customer_id) tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET . " (customers_id, products_id, customers_basket_quantity, customers_basket_date_added) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id) . "', '" . tep_db_input($qty) . "', '" . date('Ymd') . "')");        if (is_array($attributes)) {          reset($attributes);          while (list($option, $value) = each($attributes)) {            $this->contents[$products_id]['attributes'][$option] = $value;// insert into database            if ($customer_id) tep_db_query("insert into " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " (customers_id, products_id, products_options_id, products_options_value_id) values ('" . (int)$customer_id . "', '" . tep_db_input($products_id) . "', '" . (int)$option . "', '" . (int)$value . "')");          }        }        $new_products_id_in_cart = $products_id;        tep_session_register('new_products_id_in_cart');      }      $this->cleanup();    }    function update_quantity($products_id, $quantity = '', $attributes = '') {      global $customer_id;      if ($quantity == '') return true; // nothing needs to be updated if theres no quantity, so we return true..      $this->contents[$products_id] = array('qty' => $quantity);// update database      if ($customer_id) tep_db_query("update " . TABLE_CUSTOMERS_BASKET . " set customers_basket_quantity = '" . tep_db_input($quantity) . "' where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");      if (is_array($attributes)) {        reset($attributes);        while (list($option, $value) = each($attributes)) {          $this->contents[$products_id]['attributes'][$option] = $value;// update database          if ($customer_id) tep_db_query("update " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " set products_options_value_id = '" . (int)$value . "' where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "' and products_options_id = '" . (int)$option . "'");        }      }    }    function cleanup() {      global $customer_id;      reset($this->contents);      while (list($key,) = each($this->contents)) {        if ($this->contents[$key]['qty'] < 1) {          unset($this->contents[$key]);// remove from database          if ($customer_id) {            tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($key) . "'");            tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($key) . "'");          }        }      }    }    function count_contents() {  // get total number of items in cart         $total_items = 0;        if (is_array($this->contents)) {            reset($this->contents);            while (list($products_id, ) = each($this->contents)) {                $total_items += $this->get_quantity($products_id);            }        }        return $total_items;    }    function get_quantity($products_id) {      if ($this->contents[$products_id]) {        return $this->contents[$products_id]['qty'];      } else {        return 0;      }    }    function in_cart($products_id) {      if ($this->contents[$products_id]) {        return true;      } else {        return false;      }    }    function remove($products_id) {      global $customer_id;      unset($this->contents[$products_id]);// remove from database      if ($customer_id) {        tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");        tep_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where customers_id = '" . (int)$customer_id . "' and products_id = '" . tep_db_input($products_id) . "'");      }    }    function remove_all() {      $this->reset();    }    function get_product_id_list() {      $product_id_list = '';      if (is_array($this->contents))      {        reset($this->contents);        while (list($products_id, ) = each($this->contents)) {          $product_id_list .= ', ' . $products_id;        }      }      return substr($product_id_list, 2);    }    function calculate() {      $this->total = 0;      $this->weight = 0;      if (!is_array($this->contents)) return 0;      reset($this->contents);      while (list($products_id, ) = each($this->contents)) {        $qty = $this->contents[$products_id]['qty'];// products price        $product_query = tep_db_query("select products_id, products_price, products_tax_class_id, products_weight from " . TABLE_PRODUCTS . " where products_id='" . (int)tep_get_prid($products_id) . "'");        if ($product = tep_db_fetch_array($product_query)) {          $prid = $product['products_id'];          $products_tax = tep_get_tax_rate($product['products_tax_class_id']);          $products_price = $product['products_price'];          $products_weight = $product['products_weight'];          $specials_query = tep_db_query("select specials_new_products_price from " . TABLE_SPECIALS . " where products_id = '" . (int)$prid . "' and status = '1'");          if (tep_db_num_rows ($specials_query)) {            $specials = tep_db_fetch_array($specials_query);            $products_price = $specials['specials_new_products_price'];          }          $this->total += tep_add_tax($products_price, $products_tax) * $qty;          $this->weight += ($qty * $products_weight);        }// attributes price        if (isset($this->contents[$products_id]['attributes'])) {          reset($this->contents[$products_id]['attributes']);          while (list($option, $value) = each($this->contents[$products_id]['attributes'])) {            $attribute_price_query = tep_db_query("select options_values_price, price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id = '" . (int)$prid . "' and options_id = '" . (int)$option . "' and options_values_id = '" . (int)$value . "'");            $attribute_price = tep_db_fetch_array($attribute_price_query);            if ($attribute_price['price_prefix'] == '+') {              $this->total += $qty * tep_add_tax($attribute_price['options_values_price'], $products_tax);            } else {              $this->total -= $qty * tep_add_tax($attribute_price['options_values_price'], $products_tax);            }          }        }      }    }    function attributes_price($products_id) {      $attributes_price = 0;      if (isset($this->contents[$products_id]['attributes'])) {        reset($this->contents[$products_id]['attributes']);        while (list($option, $value) = each($this->contents[$products_id]['attributes'])) {          $attribute_price_query = tep_db_query("select options_values_price, price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id = '" . (int)$products_id . "' and options_id = '" . (int)$option . "' and options_values_id = '" . (int)$value . "'");          $attribute_price = tep_db_fetch_array($attribute_price_query);          if ($attribute_price['price_prefix'] == '+') {            $attributes_price += $attribute_price['options_values_price'];          } else {            $attributes_price -= $attribute_price['options_values_price'];          }        }      }      return $attributes_price;    }    function get_products() {      global $languages_id;      if (!is_array($this->contents)) return 0;      $products_array = array();      reset($this->contents);      while (list($products_id, ) = each($this->contents)) {        $products_query = tep_db_query("select p.products_id, pd.products_name, p.products_model, p.products_price, p.products_weight, p.products_tax_class_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_id='" . (int)tep_get_prid($products_id) . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");        if ($products = tep_db_fetch_array($products_query)) {          $prid = $products['products_id'];          $products_price = $products['products_price'];          $specials_query = tep_db_query("select specials_new_products_price from " . TABLE_SPECIALS . " where products_id = '" . (int)$prid . "' and status = '1'");          if (tep_db_num_rows($specials_query)) {            $specials = tep_db_fetch_array($specials_query);            $products_price = $specials['specials_new_products_price'];          }          $products_array[] = array('id' => $products_id,                                    'name' => $products['products_name'],                                    'model' => $products['products_model'],                                    'price' => $products_price,                                    'quantity' => $this->contents[$products_id]['qty'],                                    'weight' => $products['products_weight'],                                    'final_price' => ($products_price + $this->attributes_price($products_id)),                                    'tax_class_id' => $products['products_tax_class_id'],                                    'attributes' => (isset($this->contents[$products_id]['attributes']) ? $this->contents[$products_id]['attributes'] : ''));        }      }      return $products_array;    }    function show_total() {      $this->calculate();      return $this->total;    }    function show_weight() {      $this->calculate();      return $this->weight;    }    function unserialize($broken) {      for(reset($broken);$kv=each($broken);) {        $key=$kv['key'];        if (gettype($this->$key)!="user function")        $this->$key=$kv['value'];      }    }  }?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -