上一篇文章,我简单介绍了php+ajax购物车的基本原理--加入购物车。而有时客户可能会临时把一些加入购物车的东西去掉,所以我们不得不加入一个移出购物车的功能。如下图:

加入购物车就是为商品创建一个$_SESSION变量,那移出购物车就是销毁这个变量。
我们会新建一个文件remove_to_cart.php----ajax请求的页面,用来把商品移出购物车。
首先我们对check_out.php用来显示购物车商品信息的代码增加一个移除的按钮。另外给在显示总金额那里增加一个id="totalamount"的标记,因为移出购物车,总金额会发生变化。更改后的代码如下:(只在表格那里修改就行了。)
<table>
<tr><td>商品</td><td>大小</td><td>数量</td><td>价格</td><td>操作</td></tr>
<?php foreach($products as $product){ ?>
<tr>
<td><?php echo $product['name'];?></td>
<td><?php echo $product['size'];?></td>
<td><?php echo $product['num'];?></td>
<td><?php echo $product['num']*$product['price'];?></td>
<td><input type="button" value="移除" onclick="remove_to_cart(this,'<?php echo $product[$key];?>')"</td>
</tr>
<?php } ?>
<tr><td colspan="5">总金额为:<span id="totalamount"><?php echo $_SESSION['totalamount'];?></span></td></tr>
</table>
<!---上面的代码增加了一个移除的按钮,点击就会触发remove_to_cart()函数,有两个参数,第一个this表示是按钮本身,方便把商品信息去掉,见下面分析,第二个参数key,是商品的标识符,方便销毁$_SESSION[$key]这个变量。-->
<!--我们先分析一下js代码remove_to_car()函数应该怎么写。第一个肯定是把参数key传递给remove_to_cart.php页面。第二个就是把移出购物车的商品信息从页面中去掉。第三个就是更改页面的总金额。-->
<script type="text/javascript">
function remove_to_cart(myInput,key){
createXMLHttpRequest(); //创建一个XMLHttpReques对象。最终会把所有的js代码放在同一个文件,所以就不必重复写createXMLHttpRequest()这个函数了。
var postStr="key="+key;
xmlHttp.open("post", "remove_to_cart.php"); //设置请求的页面,这里为remove_to_cart.php;
xmlHttp.setRequestHeader("cache-control","no-cache");
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send(postStr);
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4 & xmlHttp.status==200){
//myINput表示按钮本身,它的父元素是td,td的父元素是tr,我们把tr设为隐藏,也就删除了商品信息了。
myInput.parentNode.parentNode.style.display="none";
//下面这句更改移除后商品的总金额,xmlHttp.responseText为返回的总金额。
document.getElementById("totalamount").innerHTML=xmlHttp.responseText;
}else alert("移除失败");
}
}
</script>
<!--上面的js代码把参数key作为参数以poss方式传递给remove_to_cart.php,请求成功后删除该商品信息并更改商品总金额。-->下面我们看一下remove_to_cart.php代码是怎么写的。
<?php
session_start();
ob_start();
if($_POST['key']){
$key=$_POST['key'];
//第一步先更改商品总金额。
$num=$_SESSION[$key]['num'];
$price=$_SESSION[$key]['price'];
//之前我们已经把总金额保存在$_SESSION['totalamount']里了,所以这里只需减去移除商品的金额就可以了。
$_SESSION['totalamount']-=$num*$price;
//第二步销毁该商品的变量。
unset($_SESSION[$key]);
echo $_SESSION['totalamount']; //返回更改后的总金额。
}
?>ok,搞定了,如有任何问题,欢迎留言指出。
« 上一篇:php+ajax购物车的基本原理--加入购物车
发表于 2010年05月16日 4:13 下午
现在手工编写的很少了 都是模板程序
[回复]
发表于 2010年05月16日 9:01 下午
强悍的技术贴啊
[回复]
发表于 2010年05月31日 3:15 下午
希望能和你合作一把啊
[回复]
发表于 2010年06月6日 5:31 下午
你博客不错 很想和你友情链接一下
[回复]
发表于 2010年06月11日 10:04 上午
强人,想学习PHP却一直学不会!
[回复]
admin 回复:
六月 19th, 2010 at 11:56 下午
php入门并不难,可以参考php100的视频教程。
[回复]
发表于 2010年06月21日 2:10 下午
学习了 收藏下
[回复]
发表于 2010年06月25日 3:22 上午
高手。。
[回复]
发表于 2010年06月30日 4:29 下午
太深渊,看不懂
[回复]
发表于 2010年07月1日 8:33 下午
不错有意思。
[回复]
发表于 2010年07月1日 9:39 下午
有趣哈。
[回复]
发表于 2010年07月4日 2:50 上午
有点意思哈。
[回复]
发表于 2010年07月4日 9:39 上午
我现在暂时在学习ZBLOG,
别人告诉我说PHP比ASP要复杂得多,也不知道是不是真的,只有行内人才明确吧
[回复]
陈勇文 回复:
七月 4th, 2010 at 9:42 上午
php入门很简单。
[回复]
发表于 2010年07月6日 5:46 下午
有兴趣学习php,我的网站www.jieetong.net 就是采用dede做的!
[回复]
发表于 2010年07月7日 8:25 下午
哎呀,太简单了这也!
[回复]
发表于 2010年07月10日 11:59 上午
怎么这么久了还不更新
[回复]
发表于 2010年07月13日 11:23 下午
都直接用网上商城系统了吧
[回复]
发表于 2010年07月18日 12:38 下午
看来不学深PHP还真看不懂哈~
[回复]
发表于 2010年07月22日 12:07 下午
谢谢分享
[回复]
发表于 2010年08月10日 6:43 下午
看不懂哈
[回复]
发表于 2010年08月19日 9:12 上午
不错的 文章 很简单很淡 适合新手学习 不过 ajax调用部分还是用个框架比较好
[回复]
发表于 2010年08月23日 10:44 下午
想弄个表玩啊 看了 貌似不是沙发
[回复]
发表于 2010年08月24日 11:59 上午
你好,我是解放军414医院的医生,刚学会写博,可以交换链接吗?
[回复]
陈勇文 回复:
八月 24th, 2010 at 1:09 下午
你我的博客类型不同,恕不同意交换链接。
[回复]
发表于 2010年08月28日 1:50 上午
时间允许的话,也想系统的进行php的学习。
[回复]
发表于 2010年08月28日 6:43 下午
嗯 这个了解啦
[回复]
发表于 2010年09月1日 12:49 下午
已经加了您的链接 互连下 http://www.kushu.net Hyperblue's Blog
[回复]
陈勇文 回复:
九月 1st, 2010 at 1:25 下午
已经加上你的链接,麻烦把我的链接文字改为专注于php+mysql程序设计。
[回复]
发表于 2010年09月2日 12:21 下午
看来楼主是搞技术的啊,挺牛逼的啊
[回复]