php cookie和数组实现的购物车
利用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 '
| 产品名称 | 价格 | 修改数 量  | 
删除 | |
| $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 = '
';
        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
[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 购物成功,图片自行建立。
