Maison développement back-end tutoriel php 一个比较完善的购物车类_PHP

一个比较完善的购物车类_PHP

Jun 01, 2016 pm 12:25 PM
商品 比较 购物车

前不久做到一个项目需要用到购物车,考虑到可能经常用到,所以把它封装成一个类,以便以后调用。你可以简单的把这个类稍微修改一下就可以用在自己的程序里了,具体使用请见。


/*****************************************************************************/
/* */
/* file type: 包含文件,建议后缀为.inc */
/* */
/* file name: cart.inc */
/* */
/* Description: 定义一个购车类 */
/* */
/* Func list : class cart */
/* */
/* author : bigeagle */
/* */
/* date : 2000/12/24 */
/* */
/* History: 2000/12/24 finished */
/* */
/*****************************************************************************/

//定义本文件常量
define("_CART_INC_" , "exists") ;

/*购物车类*/
class TCart
{

var $SortCount; //商品种类数
var $TotalCost; //商品总价值

var $Id; //每类商品的ID(数组)
var $Name; //每类商品的名称(数组)
var $Price; //每类商品的价格(数组)
var $Discount; //商品的折扣(数组)
var $GoodPrice ; //商品的优惠价格(数组)
var $Count; //每类商品的件数(数组)
var $MaxCount ; //商品限量(数组)

//******构造函数
function TCart()
{
$this->SortCount=0;

session_start(); //初始化一个session
session_register('sId');
session_register('sName');
session_register('sPrice');
session_register('sDiscount');
session_register('sGoodPrice') ;
session_register('sCount') ;
session_register('sMaxCount') ;

$this->Update();
$this->Calculate();
}

//********私有,根据session的值更新类中相应数据
function Update()
{
global $sId,$sName,$sPrice,$sCount,$sDiscount,$sMaxCount,$sGoodPrice;

if(!isset($sId) or !isset($sName) or !isset($sPrice)
or !isset($sDiscount) or !isset($sMaxCount)
or !isset($sGoodPrice) or !isset($sCount)) return;

$this->Id =$sId;
$this->Name =$sName;
$this->Price =$sPrice;
$this->Count =$sCount;
$this->Discount = $sDiscount ;
$this->GoodPrice = $sGoodPrice ;
$this->MaxCount = $sMaxCount ;

//计算商品总数
$this->SortCount=count($sId);

}

//********私有,根据新的数据计算每类商品的价值及全部商品的总价
function Calculate()
{
for($i=0;$iSortCount;$i++)
{
/*计算每件商品的价值,如果折扣是0 ,则为优惠价格*/
$GiftPrice = ($this->Discount[$i] == 0 ? $this->GoodPrice :
ceil($this->Price[$i] * $this->Discount[$i])/100 );
$this->TotalCost += $GiftPrice * $this->Count[$i] ;
}
}


//**************以下为接口函数

//*** 加一件商品
// 判断是否蓝中已有,如有,加count,否则加一个新商品
//首先都是改session的值,然后再调用update() and calculate()来更新成员变量
function Add($a_ID , $a_Name , $a_Price , $a_Discount ,
$a_GoodPrice , $a_MaxCount , $a_Count)
{
global $sId , $sName , $sCount , $sPrice , $sDiscount ,
$sGoodPrice , $sMaxCount ;

$k=count($sId);
for ($i=0; $i{ //先找一下是否已经加入了这种商品
if($sId[$i]==$a_ID)
{
$sCount[$i] += $a_Count ;
break;
}
}
if($i >= $k)
{ //没有则加一个新商品种类
$sId[] = $a_ID;
$sName[] = $a_Name;
$sPrice[] = $a_Price;
$sCount[] = $a_Count;
$sGoodPrice[] = $a_GoodPrice ;
$sDiscount[] = $a_Discount ;
$sMaxCount[] = $a_MaxCount ;
}

$this->Update(); //更新一下类的成员数据
$this->Calculate();
}

//移去一件商品
function Remove($a_ID)
{
global $sId , $sName , $sCount , $sPrice , $sDiscount ,
$sGoodPrice , $sMaxCount ;

$k = count($sId);
for($i=0; $i {
if($sId[$i] == $a_ID)
{
$sCount[$i] = 0 ;
break;
}
}

$this->Update();
$this->Calculate();
}

//改变商品的个数
function ModifyCount($a_i,$a_Count)
{
global $sCount;

$sCount[$a_i] = $a_Count ;
$this->Update();
$this->Calculate();
}


/***************************
清空所有的商品
*****************************/
function RemoveAll()
{
session_unregister('sId');
session_unregister('sName');
session_unregister('sPrice');
session_unregister('sDiscount');
session_unregister('sGoodPrice') ;
session_unregister('sCount') ;
session_unregister('sMaxCount') ;
$this->SortCount = 0 ;
$this->TotalCost = 0 ;
}


//是否某件商品已在蓝内,参数为此商品的ID
function Exists($a_ID)
{
for($i=0; $iSortCount; $i++)
{
if($this->Id[$i]==$a_ID) return TRUE;
}
return FALSE;
}

//某件商品在蓝内的位置
function IndexOf($a_ID)
{
for($i=0; $iSortCount; $i++)
{
if($this->Id[$i]==$id) return $i;
}
return 0;
}

//取一件商品的信息,主要的工作函数
//返回一个关联数组,
function Item($i)
{
$Result[id] = $this->Id[$i];
$Result[name] = $this->Name[$i];
$Result[price] = $this->Price[$i];
$Result[count] = $this->Count[$i];
$Result[discount] = $this->Discount[$i] ;
$Result[goodprice] = $this->GoodPrice[$i] ;
$Result[maxcount] = $this->MaxCount[i] ;
return $Result;
}

//取总的商品种类数
function CartCount()
{
return $this->SortCount;
}

//取总的商品价值
function GetTotalCost()
{
return $this->TotalCost;
}
}

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment activer la fonction nfc sur Xiaomi Mi 14 Pro ? Comment activer la fonction nfc sur Xiaomi Mi 14 Pro ? Mar 19, 2024 pm 02:28 PM

De nos jours, les performances et les fonctions des téléphones mobiles deviennent de plus en plus puissantes. Presque tous les téléphones mobiles sont équipés de fonctions NFC pratiques pour faciliter le paiement mobile et l'authentification de l'identité des utilisateurs. Cependant, certains utilisateurs de Xiaomi 14Pro ne savent peut-être pas comment activer la fonction NFC. Ensuite, permettez-moi de vous le présenter en détail. Comment activer la fonction nfc sur Xiaomi 14Pro ? Étape 1 : Ouvrez le menu des paramètres de votre téléphone. Étape 2 : Recherchez et cliquez sur l'option « Connecter et partager » ou « Sans fil et réseaux ». Étape 3 : Dans le menu Connexion et partage ou Sans fil et réseaux, recherchez et cliquez sur « NFC et paiements ». Étape 4 : Recherchez et cliquez sur « NFC Switch ». Généralement, la valeur par défaut est désactivée. Étape 5 : Sur la page du commutateur NFC, cliquez sur le bouton du commutateur pour l'activer.

Comment définir l'espacement des lignes dans WPS Word pour rendre le document plus soigné Comment définir l'espacement des lignes dans WPS Word pour rendre le document plus soigné Mar 20, 2024 pm 04:30 PM

WPS est notre logiciel bureautique couramment utilisé lors de l'édition d'articles longs, les polices sont souvent trop petites pour être clairement visibles, c'est pourquoi les polices et l'ensemble du document sont ajustés. Par exemple : ajuster l'espacement des lignes du document rendra l'ensemble du document très clair. Je suggère à tous les amis d'apprendre cette étape de l'opération. Je la partagerai avec vous aujourd'hui. Les étapes de l'opération spécifiques sont les suivantes, venez jeter un oeil ! Ouvrez le fichier texte WPS que vous souhaitez ajuster, recherchez la barre d'outils de configuration des paragraphes dans le menu [Démarrer] et vous verrez la petite icône de configuration de l'espacement des lignes (représentée par un cercle rouge dans l'image). 2. Cliquez sur le petit triangle inversé dans le coin inférieur droit du paramètre d'espacement des lignes et la valeur d'espacement des lignes correspondante apparaîtra. Vous pouvez choisir 1 à 3 fois l'espacement des lignes (comme indiqué par la flèche sur la figure). 3. Ou cliquez avec le bouton droit sur le paragraphe et il apparaîtra.

Comment utiliser TikTok sur Huawei Pocket2 à distance ? Comment utiliser TikTok sur Huawei Pocket2 à distance ? Mar 18, 2024 pm 03:00 PM

Faire glisser l'écran dans les airs est une fonctionnalité de Huawei très appréciée dans la série Huawei mate60. Cette fonctionnalité utilise le capteur laser du téléphone et la caméra de profondeur 3D de la caméra frontale pour compléter une série de fonctions qui ne nécessitent pas de fonction. fonction de toucher l'écran, comme faire glisser TikTok depuis les airs, mais comment utiliser le Huawei Pocket 2 pour faire glisser TikTok depuis les airs ? Comment faire des captures d'écran depuis les airs avec Huawei Pocket2 ? 1. Ouvrez les paramètres de Huawei Pocket2. 2. Sélectionnez ensuite [Accessibilité]. 3. Cliquez pour ouvrir [Perception intelligente]. 4. Activez simplement les commutateurs [Air Swipe Screen], [Air Screenshot] et [Air Press]. 5. Lorsque vous l'utilisez, vous devez le tenir à 20 ~ 40 cm de l'écran, ouvrir votre paume et attendre que l'icône de la paume apparaisse sur l'écran.

Les dessins CAO de l'iPhone 16 Pro exposés, ajoutant un deuxième nouveau bouton Les dessins CAO de l'iPhone 16 Pro exposés, ajoutant un deuxième nouveau bouton Mar 09, 2024 pm 09:07 PM

Les fichiers CAO de l'iPhone 16 Pro ont été exposés et la conception est conforme aux rumeurs précédentes. L'automne dernier, l'iPhone 15 Pro a ajouté un bouton d'action, et cet automne, Apple semble prévoir d'apporter des ajustements mineurs à la taille du matériel. Ajout d'un bouton Capture Selon les rumeurs, l'iPhone 16 Pro pourrait ajouter un deuxième nouveau bouton, ce qui sera la deuxième année consécutive à ajouter un nouveau bouton après l'année dernière. La rumeur veut que le nouveau bouton Capture soit placé sur le côté inférieur droit de l'iPhone 16 Pro. Cette conception devrait rendre le contrôle de l'appareil photo plus pratique et permettre également d'utiliser le bouton Action pour d'autres fonctions. Ce bouton ne sera plus un simple déclencheur ordinaire. Concernant la caméra, à partir de l'iP actuelle

La différence et analyse comparative entre le langage C et PHP La différence et analyse comparative entre le langage C et PHP Mar 20, 2024 am 08:54 AM

Différences et analyse comparative du langage C et de PHP Le langage C et PHP sont tous deux des langages de programmation courants, mais ils présentent des différences évidentes sur de nombreux aspects. Cet article procédera à une analyse comparative du langage C et de PHP et illustrera les différences entre eux à travers des exemples de code spécifiques. 1. Syntaxe et utilisation : Langage C : Le langage C est un langage de programmation orienté processus, principalement utilisé pour la programmation au niveau système et le développement embarqué. La syntaxe du langage C est relativement simple et de bas niveau, peut exploiter directement la mémoire, et est efficace et flexible. Le langage C met l'accent sur l'exhaustivité du programme pour le programmeur

Comparaison et analyse des avantages et inconvénients des versions PHP7.2 et 5 Comparaison et analyse des avantages et inconvénients des versions PHP7.2 et 5 Feb 27, 2024 am 10:51 AM

Comparaison et analyse des avantages et des inconvénients de PHP7.2 et 5. PHP est un langage de script côté serveur extrêmement populaire et largement utilisé dans le développement Web. Cependant, PHP est constamment mis à jour et amélioré dans différentes versions pour répondre à l'évolution des besoins. Actuellement, PHP7.2 est la dernière version, qui présente de nombreuses différences et améliorations notables par rapport à la version précédente de PHP5. Dans cet article, nous comparerons les versions PHP7.2 et PHP5, analyserons leurs avantages et inconvénients et fournirons des exemples de code spécifiques. 1. PH des performances

Tutoriel pratique : Explication détaillée de la fonction panier avec PHP et MySQL Tutoriel pratique : Explication détaillée de la fonction panier avec PHP et MySQL Mar 15, 2024 pm 12:27 PM

Tutoriel pratique : Explication détaillée de la fonction de panier d'achat en utilisant PHP et MySQL La fonction de panier d'achat est l'une des fonctions courantes dans le développement de sites Web. Grâce au panier d'achat, les utilisateurs peuvent facilement ajouter les articles qu'ils souhaitent acheter au panier. puis procédez au règlement et au paiement. Dans cet article, nous détaillerons comment implémenter une fonction de panier simple à l'aide de PHP et MySQL et fournirons des exemples de code spécifiques. Pour créer une base de données et une table de données, vous devez d'abord créer une table de données dans la base de données MySQL pour stocker les informations sur le produit. Ce qui suit est un simple tableau de données

TrendX Research Institute : analyse du projet Merlin Chain et inventaire écologique TrendX Research Institute : analyse du projet Merlin Chain et inventaire écologique Mar 24, 2024 am 09:01 AM

Selon les statistiques du 2 mars, la TVL totale du réseau de deuxième couche de Bitcoin, MerlinChain, a atteint 3 milliards de dollars. Parmi eux, les actifs écologiques Bitcoin représentaient 90,83 %, dont BTC d’une valeur de 1,596 milliard de dollars et les actifs BRC-20 d’une valeur de 404 millions de dollars. Le mois dernier, le TVL total de MerlinChain a atteint 1,97 milliard de dollars américains dans les 14 jours suivant le lancement des activités de jalonnement, dépassant Blast, qui a été lancé en novembre de l'année dernière et est également le plus récent et tout aussi accrocheur. Le 26 février, la valeur totale des NFT dans l'écosystème MerlinChain a dépassé 420 millions de dollars américains, devenant ainsi le projet de chaîne publique avec la valeur marchande NFT la plus élevée après Ethereum. Introduction du projet MerlinChain est un support OKX

See all articles