A-A+

php cookie和数组实现的购物车

2012年11月18日 编程技术 暂无评论

利用cookie和数组实现的购物车,主要文件是一个购物车的类,主要实现的功能有购物,查看购物车,删除产品,清空购物车,以及修改产品数量,共要支付款项,利用ajax技术,基本的购物车功能已经实现了。

只有四个源码文件,产品是定义的数组,保存购物产品是利用的COOKIE技术,还有一个无刷新的ajax技术,里面保留有源码作者,感觉很简单,挺适合新手的,先保存下来,以备实用。

共有四个文件,共保存下来运行即可。

首页 index.php 显示产品源码如下:

[code lang="php"]


购物车



viewCart();
echo '

';
break;
default:
echo <<

苹果
香蕉
菠萝
葡萄
梨子
西红柿
芒果
猕猴桃
草莓
荔枝
桃子
石榴

EOT;
break;
}

?>



[/code]

购物车类 cart.class.php 源码如下:

[code lang="php"]
addCart($id);
}else if($action == "del"){
$obj_cart->delCart($id);
}else if($action == "all"){
$obj_cart->delAll();
}
}

//购物车类
class Cart{
//添加商品
function addCart($proID){
//自定义一些产品
switch($proID){
case 1:
$product_name = "苹果";
$product_price = 12.8;
$product_number = 1;
break;
case 2:
$product_name = "香蕉";
$product_price = 18;
$product_number = 1;
break;
case 3:
$product_name = "菠萝";
$product_price = 21.2;
$product_number = 1;
break;
case 4:
$product_name = "葡萄";
$product_price = 14;
$product_number = 1;
break;
case 5:
$product_name = "梨子";
$product_price = 17.8;
$product_number = 1;
break;
case 6:
$product_name = "西红柿";
$product_price = 9.5;
$product_number = 1;
break;
case 7:
$product_name = "芒果";
$product_price = 28;
$product_number = 1;
break;
case 8:
$product_name = "猕猴桃";
$product_price = 31;
$product_number = 1;
break;
case 9:
$product_name = "草莓";
$product_price = 28.8;
$product_number = 1;
break;
case 10:
$product_name = "荔枝";
$product_price = 7.8;
$product_number = 1;
break;
case 11:
$product_name = "桃子";
$product_price = 8.8;
$product_number = 1;
break;
case 12:
$product_name = "石榴";
$product_price = 32;
$product_number = 1;
break;
default:
break;
}

if($product_name != NULL){
if(isset($_COOKIE["shop_cart_info_".$proID])){
echo "exist";
}else{
setcookie("shop_cart_info_".$proID,$proID."-".$prod
uct_name."-".$product_price."-".$product_number,time()+7200);
}
}
} // end function addCart

//删除产品
function delCart($proID){
setcookie("shop_cart_info_".$proID,"");
} // end function delCart

//清空购物车
function delAll(){
foreach ($_COOKIE as $key => $val){
if(strstr($key,"shop_cart_info")){
setcookie($key,"");
}
}
} // end function delAll

//查看购物车
function viewCart(){
echo '

';
echo '

';

$i = 0; //购物车里商品数量
$total_money = 0; //总金钱

foreach ($_COOKIE as $key => $val){
if(strstr($key,"shop_cart_info")){
list($id,$name,$price,$number) = explode("-",$val);
echo "

删除

";
$i=$i+1;
$total_money+=$price * $number;
}
}

if($name == NULL){
echo "

";
}else{
echo "

";
}

echo "

产品名称 价格 修改数
删除
$name $pric
e
你还没有购买任何东西!点击返回购物
共有$i件商品,一共要支付$total_mone
y

";
}

}
?>
[/code]

无刷新选择商品 ajax.js 源码如下:

[cc lang="javascript"]
var xmlhttp;
function createXMLHttp(){
if(navigator.cookieEnabled){
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}else if(window.ActiveXObject){
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}else{
alert("你的浏览器不支持XMLHttpRequest对象,购物车功能无法
实现!");
}
}else{
tips("浏览器不支持cookie,无法操作!",1,"hideTips()");
}
}

function addCart(productID){
createXMLHttp();
xmlhttp.onreadystatechange = add_back;
xmlhttp.open("GET","cart.class.php?action=buy&productID="+pr
oductID,true);
xmlhttp.send(null);
}

function delCart(productID,type){
createXMLHttp();
xmlhttp.onreadystatechange = del_back;
xmlhttp.open("GET","cart.class.php?action="+type+"&productID="+p
roductID,true);
xmlhttp.send(null);
}

function add_back(){
if(xmlhttp.readyState == 4){
if(xmlhttp.status == 200){
if(!xmlhttp.responseText.indexOf("exist")){
tips("购物车中已经存在此商品",1,"hideTips()");
}else{
tips("添加购物车成功",2);
}
}else{
tips("添加失败,请重新添加!",1,"hideTips()");
}
}
}

function del_back(){
if(xmlhttp.readyState == 4){
if(xmlhttp.status == 200){
window.location.reload();
}else{
tips("删除失败,请重新失败!",1,"hideTips()");
}
}
}

function tips(str,type,fun){
var o = document.getElementById("tips");
if(type == 1){
var tip_str = '

×小白温馨提示
' + str + '

';
o.innerHTML = tip_str;
}else if(type == 2){
var tip_str = '

×小白温馨提示
' + str + '

';
o.innerHTML = tip_str;
}
}

function hideTips(){
document.getElementById("tips_cont").style.display = "none";
}

function editNum(){
var n = document.getElementsByName("num");
var p = document.getElementsByTagName("span");
var totalcost = 0; //购物车商品总价格
var re = "^[1-9]{1}[0-9]*$";
for(var i=0;i界面控制 CSS 样式文件:

[cc lang="css"]
*{
margin:0px;padding:0px;
font-size:14px;
}
#product div{
float:left;
width:100px;
height:100px;
border:1px solid #ccc;
text-align:center;
font-size:20px;
font-weight:bold;
line-height:100px;
letter-spacing:10px;
color:#970000;
margin:30px;
cursor:pointer;
}
#viewcart{
clear:both;
border:1px solid #ccc;
width:200px;
text-align:center;
margin:0 auto;
color:#970000;
padding:2px;
font-weight:bold;
}
a,a:visited,a:hover,a:link,a:active{
color:#970000;
text-decoration:none;
}

#tips_cont{
background-color:#cccccc;
width:300px;
height:150px;
margin:0 auto;
position:fixed;
top:30%;
left:35%;
padding:5px;
}
.tips_title{
background-color:#970000;
color:#ffffff;
padding:2px 10px;
}
.tips_main{
background-color:#ffffff;
padding:0 10px;
height:80px;
line-height:80px;
}
.tips_button{
background-color:#eee;
padding:10px;
text-align:center;
border-top:1px solid #ccc;
height:25px;
}
.tips_button input{
border:1px solid #ccc;
padding:3px;
margin:0 20px;
}
input{
border:1px solid #ccc;
font-size:12px;
padding:2px;
}

table{
background-color:#ccc;
margin:20px auto;
}
td{
background-color:#ffffff;
padding:10px;
text-align:center;
}
.ml{
color:#970000;
font-weight:bold;
}
[/code]

另需要建立 images 文件夹,下面有 1.gif 购物失败 2.gif 购物成功,图片自行建立。

给我留言