购物车页,也是此程序最量要的页,涉及修改商品数量、清空购物车、删除某一商品等功能,由于代码多,所以分开多页来学习。
在cart根目录里建立shopping_car.php页。
测试页代码:
~~~
<?php
echo 'Hello shopping_car.php';
?>
~~~
然后,点首页的"购买"按钮,网页迅速跳转到shopping_car.php,显示内容:
”Hello shopping_car.php“,测试成功。
看似跳转一页很简单,其实后边还执行过了buy.php页的代码,也说明buy.php代码没问题。其实,笔者在写buy.php页时,也反复用了var_dump()进行了测试,只不过正式用时,将测试代码去掉了,以免多余代码影响学习。
下面开始写正式代码:
~~~
<?php
//启动session功能.
session_start();
//设置网页字符集.
header("Content-type:text/html;charset=utf8");
//导入smarty配置文件.
require('config.php');
//导入数据连接文件.
require('conn.php');
//判断goodsid的session变量是否设置.
if(isset($_SESSION['goodsid']) && isset($_SESSION['goodsnum'])){
//如果已设置,则分解成数组.
$array=explode('@',$_SESSION['goodsid']);
//goodsnum的session数组必须同时分解.
$arraynum=explode('@',$_SESSION['goodsnum']);
}else{
$array=array();
}//if end.
//定义价格变量
$totalprice=0;
//创建准备存储记录的数组.
$arrayinfo=array();
//根据$array中的元素,从表中读取相关记录.
for($i=0;$i<count($array);$i++){
if($array[$i]!=''){
//设置sql语句.
$sql='select * from goods where id='.$array[$i];
//执行查询.
$query=mysqli_query($link,$sql);
//读取数据.
$info=mysqli_fetch_array($query);
//将arraynum[]数组相对应的值也存入arrayinfo.
array_push($info,$arraynum[$i]);
//将整理好的$info数组给总数组.
array_push($arrayinfo,$info);
//统计商品价格.
$totalprice+=$info['price']*$arraynum[$i];
}//if end.
}//for end.
var_dump($arrayinfo);
?>
~~~
主要代码解析:
session_start()、require()、explode()、mydqli_query()等函数解释参考前面章节。
array_push(数组,新元素),此函数向第一个参数的数组尾部添加一个或多个元素(入栈)
* * * * *
测试运行,结果如下:
~~~
array (size=1)
0 =>
array (size=11)
0 => string '3' (length=1)
'id' => string '3' (length=1)
1 => string '笔记本TN001' (length=14)
'name' => string '笔记本TN001' (length=14)
2 => string '戴尔' (length=6)
'brand' => string '戴尔' (length=6)
3 => string '7788.50' (length=7)
'price' => string '7788.50' (length=7)
4 => string '100' (length=3)
'count' => string '100' (length=3)
5 => string '1' (length=1)
~~~
测试成功。
下一节,讲购物车模板。