<?php
session_start(); //初始化session变量
require("config.php"); //连接smarty模板
$id=$_GET["id"]; //获取要删除商品的ID
$arrayid=explode("@",$_SESSION["goodsid"]); //将购物车中存储的商品ID的字符串转换到数组中
$arraynum=explode("@",$_SESSION["goodsnum"]); //将购物车中存储的商品数量的字符串转换到数组中
$key=array_search($id,$arrayid); //获取到数组中指定的数据,并返回键名
$arrayid[$key]=""; //根据返回的键名,将数组中的数据赋值为空
$arraynum[$key]=""; //根据返回的键名,将数组中的数据赋值为空
$_SESSION["goodsid"]=implode("@",$arrayid); //重新将数组中的数据添加到购物车中
$_SESSION["goodsnum"]=implode("@",$arraynum); //重新将数组中的数据添加到购物车中
echo "<script>window.location.href='shopping_car.php';</script>";
$smarty->display("shopping_car.tpl");
?>
删除前$_SESSION["goodsid"]的值为"3@2@5@",删除$id=5后$_SESSION["goodsid"]的值为"3@2@@";这样Session中存在多余的数据@。
解决方法:
复制代码 代码如下:
<?php
session_register("goods"); //创建session数组
$id=$_GET['id'];
$arraygoods=$_SESSION["goods"];
if($_SESSION["goods"]==""){
$_SESSION["goods"][$id]="$id,1"; //根据商品ID保存商品,键名为$id,键值为$id,1(商品ID和购买商品数量,默认购买数量为1)
}else{
if(array_key_exists($id,$_SESSION["goods"])){
echo "<script>alert('该商品已经被放入购物车!');history.back();</script>";
exit;
}
$_SESSION["goods"][$id]="$id,1";
}
?>
商品信息以数组形式保存,[4] => 4,4。键名为商品ID,值为键名和购买商品数量。添加删除商品只需要根据ID号找到对应商品修改信息即可。
复制代码 代码如下:
Array
(
[4] => 4,4
[3] => 3,5
[1] => 1,10
[2] => 2,1
)
3,生成订单功能的实现
生成订单功能就是从数据库中读取出填写的订单信息,对其内容进行重新整合,形成一个订单模式,并且实现订单打印和订单预览的功能。订单生成的操作通过两个文件来完成,一个是从数据库中读取数据,将所需的数据赋值给指定的Smarty模板变量,并指定模板页。
复制代码 代码如下:
<?php
session_start();
header("Content-type:text/html;charset= utf-8");
require_once("conn.php");
require_once("config.php");
$array=array(); //定义一个空数组
$ddnumber=base64_decode($_GET["ddno"]);
mysql_query("set names utf8");
$sql=mysql_query("select * from tb_commodity_order_form where ddnumber='".$ddnumber."'",$conn);
$info=mysql_fetch_array($sql);
array_push($array,$info); //将获取的数组值写入到新的数组中
$smarty->assign("info",$array);
$array=explode("@",$info["spc"]);
$arraynum=explode("@",$info["slc"]);
$totalprice=0; //定义价格变量
$arrayinfo=array(); //创建数组
for($i=0;$i<count($array);$i++){
if($array[$i]!=""){
$sqlcart=mysql_query("select * from tb_commodity where tb_commodity_id='".$array[$i]."'",$conn);
$infocart=mysql_fetch_array($sqlcart); //读取数据库中数据
$totalprices=$infocart["tb_commodity_price"]*$arraynum["$i"]; //计算总的价格
array_push($infocart,$arraynum["$i"]); //将购买数量的数据写入到数据库中返回的数组中
array_push($infocart,$totalprices); //将购买数量的数据写入到数据库中返回的数组中
array_push($arrayinfo,$infocart); //将整理的数据压入到创建的新数组中
$totalprice+=$infocart["tb_commodity_price"]*$arraynum["$i"]; //计算总的价格
}
}
session_unregister("goods");
if(count($arrayinfo)>0){ //判断数组是否为空
$gnum=count($arrayinfo);
$smarty->assign("isShow","T");
$smarty->assign("gnum",$gnum);
$smarty->assign("myrow",$arrayinfo);
$smarty->assign("totalprice",$totalprice);
}else{
$smarty->assign("isShow","F");
}
$smarty->display("shopping_dd.tpl");
?>
另一个是shopping_dd.tpl模板页,输出模板变量中存储的数据,生成一个订单。
四,源代码下载:点击下载
您可能感兴趣的文章: