PHP4 Session实现的迷你购物篮(三)
时间:2007-02-17 来源:PHP爱好者
向你的页面增加链接
上面的add字段应该是一个链接,用来将商品放到迷你购物篮中。使用$PHP_SELF将这个链接指向它自已。然后向它增加商品信息。这里是商品1的例子。
$#@60;A HREF=http://www.blue1000.com/article/"$#@60;?echo $PHP_SELF;?$#@62;?id=1&price=25&basket=Mouse"$#@62;add$#@60;/A$#@62;
商品的名称能够包含空格,所以将它放在链接的最后。Get方法好象对这个很挑剔。
准备迷你购物篮
为了代码重用,让我们创建一个额外的文件minibasket.inc。我使用.inc扩展名来标识我的包括文件。使用这个外部文件的原因是,尽管你将使用session变量来传递给购物篮,代码仍然需要有效。这个文件将包含显示迷你购物篮的代码,也包话增加项目的函数。实现它的最好的地方是将 $#@60;?PHP include ("minibasket.inc"); ?$#@62; 命令放在你需要的地方。
minibasket.inc的逻辑
花些时间考虑一下这个。迷你购物篮应该是个什么样子,它需要些什么特性?这里显示的迷你购物篮应该看上去象这样:
# Name Price
1 Mouse 25.00
3 Game 75.00
Total 100.00
你可以很容易的通过使用一个外部样式表格式化这个输出。可是,它不应该太大。这个迷你购物篮是一个信息,然而它不应该成为你所显示页面的焦点。这个文件的逻辑非常简单。检查是否需要增加一个新的项目。
如果true,增加项目在加入中,它要检查复重的记录,通过更新数量和价格来更新存在的记录。
片段1。检查将要增加的新的项目,这是一个正常的IF语句,用于检查$basket变量的值。
$#@60;?PHP if ($basket!=""){//向篮子中加入项目} ?$#@62;
片段2。在浏览器中显示篮子 $#@60;?PHP if ($ses_basket_items$#@62;0){ // 如果在篮子中有项目
for ($basket_counter=0;$basket_counter$#@60;$ses_basket_items;$basket_counter ){ // 遍历篮子,打印出每一行 // 你当然可以用格表来格式化显示 // 需要通过格式化来显示价格的分值。如果没有格式化,则.00是不会显示出来的
$price=sprintf(".2f",$ses_basket_price[$basket_counter]);
$amount=$ses_basket_amount[$basket_counter];
$name=$ses_basket_name[$basket_counter];
echo "$amount $name $price";
echo "$#@60;BR$#@62;n"; }} else { // 在篮子中没有商品 // 设置项目计数为0,且清除所有的变量 // 这是一个清除处? 它防止人们得到旧的数组
$ses_basket_items=0;
unset($ses_basket_name);
unset($ses_basket_amount);
unset($ses_basket_price);
unset($ses_basket_id); }
?$#@62;
这段代码不会产生任何结果。项目还没有被填充,篮子总是空的,所以篮子不会被显示。那么让我们向这个篮子中加些项目吧。
php爱好者站 http://www.phpfans.net 为phper提供一切资讯.
上面的add字段应该是一个链接,用来将商品放到迷你购物篮中。使用$PHP_SELF将这个链接指向它自已。然后向它增加商品信息。这里是商品1的例子。
$#@60;A HREF=http://www.blue1000.com/article/"$#@60;?echo $PHP_SELF;?$#@62;?id=1&price=25&basket=Mouse"$#@62;add$#@60;/A$#@62;
商品的名称能够包含空格,所以将它放在链接的最后。Get方法好象对这个很挑剔。
准备迷你购物篮
为了代码重用,让我们创建一个额外的文件minibasket.inc。我使用.inc扩展名来标识我的包括文件。使用这个外部文件的原因是,尽管你将使用session变量来传递给购物篮,代码仍然需要有效。这个文件将包含显示迷你购物篮的代码,也包话增加项目的函数。实现它的最好的地方是将 $#@60;?PHP include ("minibasket.inc"); ?$#@62; 命令放在你需要的地方。
minibasket.inc的逻辑
花些时间考虑一下这个。迷你购物篮应该是个什么样子,它需要些什么特性?这里显示的迷你购物篮应该看上去象这样:
# Name Price
1 Mouse 25.00
3 Game 75.00
Total 100.00
你可以很容易的通过使用一个外部样式表格式化这个输出。可是,它不应该太大。这个迷你购物篮是一个信息,然而它不应该成为你所显示页面的焦点。这个文件的逻辑非常简单。检查是否需要增加一个新的项目。
如果true,增加项目在加入中,它要检查复重的记录,通过更新数量和价格来更新存在的记录。
片段1。检查将要增加的新的项目,这是一个正常的IF语句,用于检查$basket变量的值。
$#@60;?PHP if ($basket!=""){//向篮子中加入项目} ?$#@62;
片段2。在浏览器中显示篮子 $#@60;?PHP if ($ses_basket_items$#@62;0){ // 如果在篮子中有项目
for ($basket_counter=0;$basket_counter$#@60;$ses_basket_items;$basket_counter ){ // 遍历篮子,打印出每一行 // 你当然可以用格表来格式化显示 // 需要通过格式化来显示价格的分值。如果没有格式化,则.00是不会显示出来的
$price=sprintf(".2f",$ses_basket_price[$basket_counter]);
$amount=$ses_basket_amount[$basket_counter];
$name=$ses_basket_name[$basket_counter];
echo "$amount $name $price";
echo "$#@60;BR$#@62;n"; }} else { // 在篮子中没有商品 // 设置项目计数为0,且清除所有的变量 // 这是一个清除处? 它防止人们得到旧的数组
$ses_basket_items=0;
unset($ses_basket_name);
unset($ses_basket_amount);
unset($ses_basket_price);
unset($ses_basket_id); }
?$#@62;
这段代码不会产生任何结果。项目还没有被填充,篮子总是空的,所以篮子不会被显示。那么让我们向这个篮子中加些项目吧。
php爱好者站 http://www.phpfans.net 为phper提供一切资讯.
相关阅读 更多 +