在首页,点“购买”后,将商品添加到购物车。
第一步:建立buy.php
在cart根目录下建立buy.php.
代码:
~~~
<?php
$id=$_GET['id'];
echo 'goods ID '.$id.', Test Success buy.php';
?>
~~~
$_GET[id],接收点击“购买”按钮后,首页传过来的参数id。
echo行,输出id参数。
* * * * *
打开首页,点“购买”按钮,打开buy.php页,显示:
goods ID 4, Test Success buy.php
说明测试成功,完成了buy.php页面正常显示和参数传递
* * * * *
第二步:进行正式代码书写
~~~
<?php
//启用SESSION功能.
session_start();
//设置网页字符集,否则,提示时会出现乱码.
header("Content-type:text/html;charset=utf8");
//判断是否有goodsid和goodsnum的SESSION记录.
if(!isset($_SESSION['goodsid']) && !isset($_SESSION['goodsnum'])){
//给goodsid和goodsnum的SESSION变量赋值.
$_SESSION['goodsid']=$_GET['id'].'@';
$_SESSION['goodsnum']='1'.'@';
}else{
//将SESSION['goodsid']变量分割开,这样便于后边判断.
$array=explode('@',$_SESSION['goodsid']);
//判断新传来的商品id是否已在goodsid中.
if(in_array($_GET['id'],$array)){
//如果存在,则出现提示.
echo "<script>alert('此商品已在购物车里!');history.back();</script>";
//退出程序,即下边代码不再执行.
exit;
}//if end.
//如果检测goodsid的SESSION数组变量中没有此商品id,则将此商品id赋值给SESSION数组.
//注意,此时赋值与上边稍有不同,看等式.".="用此表达式,意思将新id添加到原变量后边.
$_SESSION['goodsid'].=$_GET['id'].'@';
$_SESSION['goodsnum'].='1'.'@';
}//if end.
var_dump($_SESSION['goodsid']);
//最后,将跳转到购物车页。
echo "<script>window.location.href='shopping_car.php';</script>";
?>
~~~
往购物车中添加商品后,因为有可能更改数量等,所在是临时性存储,一定要用到SESSION功能([SESSION详解](http://www.w3school.com.cn/php/php_sessions.asp))。
所以,必须先开启session_start();
* * * * *
isset($_SESSION['goodsid'])
isset(),此函数是检测变量是否设置。
$_SESSION[],设置SESSION变量.
* * * * *
explode('@',$_SESSION['goodsid'])
explode('字符',字符串),以某个字符为标记,分解字符串,分解后将以数组形式出现。
* * * * *
in_array($_GET['id'],$array)
in_array(),搜索数组中是否存在指定的值。
搜索$array数组中是否含有新传递过来的商品id.
如果有,则出现js代码提示。
如果没有,则将新购商品id添加到SESSION['goodsid']数组中,重点注意表达式“.=”,这是字符串连接表达式。
* * * * *
window.location.href='shopping_car.php'
是js代码的跳转代码。shopping_car.php是购物车页。下一节讲解。