|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在学习PHP这六个月里,每看到一个优秀的php脚本,就会兴奋的手舞足蹈,嘴里还不停的说:太酷了,太酷了。呵呵,很幼稚吧,但这可能就是兴趣。session 引见
假如你还没有效PHP 完成你自已的购物篮,在读完这篇文章以后你应当可以创立一个了。乃至你能够已
经有了一个购物篮,我在这里所供应的一些技能能够会匡助你改良你的体系。
我将给你一些提醒,关于若何去做或许才干削减对购物篮表的无穷的查询,或削减无穷的文本文件填充
你的文件体系,由于使用法式只会做但不会删除它们。
假如你对这类的标题是个老手,不关键怕。它实践上相当复杂和无效,你只需求一个撑持php4的主机,
象notepad或vi之类的html编纂器,你名贵的几分种,和这个小例子。
设法
在1998年,我有一个在硬件商铺任务的伴侣请求我为他们编写一个在线商铺。需求疾速和复杂,同时还
要有在线办理。当我发着39度高烧的时分我变得想当有创立力,所以我用perl写了谁人器材,利用minisql
作为后端。在全部处置中我拔出了我所提到的迷你购物篮。
这个迷你购物篮与平凡的购物车只要很小的分歧,它会在每页显示你的购物车的器材,不需求在放入
一件器材后在购物车往返跳转。这就是我写这篇文章的初志。
方针
人们喜好掌握,那末为何不给他们些通明度,以便让他们信任具有了掌握?这个迷你购物篮演示了一
个完善的办法:它供应给人们所必需的信息,而且节俭了他们一次点击,接近了在线商铺的3击典范。
所以,方针就是在任什么时候候将这个迷你购物篮显示为你的页面上的一局部,在开头处供应一个摘要用以
修正购物篮中的物品,接着在最初发送一个定单。
请求
你应当晓得甚么是session。假如不晓得,这里有一个疾速的大纲。已有良多文章关于这个话题,你
可以从中找到一切你需求的代码例子。在你的入手下手页面翻开一个session,利用
<?php
session_start();
?>
如许将创立一个session名字和一个session id。你如今既可使用缺省的经由过程基于cookie的设置session
的体例,经由过程一个表单来传递session id,或把它作为一个变量附在你的链接上(get办法)的办法。不要忘
记在最初释放session。:)
你的商品应当有一个名字,价钱和独一标识,以便能用在这个例子中,假如不如许,你能够需求做一点
修正。这里我利用mysql作为后端以便创立页面及其它,为了让购物能任务这不是必需的。:)
你应当懂得数组。如今假如有人有工夫使用我的代码而且创立一个它的类,我天经地义地要感谢失掉它。
界说
为了简化这个例子,我利用了四个自力的数组和一些额定的变量。代码可以被优化。如许可以很轻易地
显示设法和浏览代码。可使用类更好的完成,然而我不克不及非常一定是不是可以把对象保留到session 里。有
人想对此宣布评论吗?
咱们还需求一个项目计数器。固然可使用count() 号令来完成,我只不外以为它足够好,以便总能知
道有几何的项目,而且它也为轮回供应了一个好的计数器。
任务
让咱们假定在你的HTML页中有一个商品列表
ID Name Price
1 Mouse 25.00 add
2 Key 100.00 add
3 Car 5000.00 add
4 Game 25.00 add
向你的页面增添链接
下面的'add'字段应当是一个链接,用来将商品放到迷你购物篮中。利用$PHP_SELF将这个链接指向它自
已。然后向它增添商品信息。这里是商品1的例子。
<A HREF="<?echo $PHP_SELF;?>?id=1&price=25&basket=Mouse">add</A>
商品的称号可以包括空格,所以将它放在链接的最初。Get办法好象对这个很抉剔。
筹办迷你购物篮
为了代码重用,让咱们创立一个额定的文件minibasket.inc。我利用.inc扩大名来标识我的包含文件。
利用这个内部文件的缘由是,虽然你将利用session变量来传递给购物篮,代码依然需求无效。这个文件将
包括显示迷你购物篮的代码,也包话增添项目标函数。完成它的最好的中央是将 <?php include ("minibasket.inc"); ?> 号令放在你需求的中央。
minibasket.inc的逻辑
花些工夫思索一下这个。迷你购物篮应当是个甚么模样,它需求些甚么特征?这里显示的迷你购物篮应
该看上去象如许:
# Name Price
1 Mouse 25.00
3 Game 75.00
Total 100.00
你可以很轻易的经由过程利用一个内部款式表格局化这个输入。可是,它不该该太大。这个迷你购物篮是一
个信息,但是它不该该成为你所显示页面的核心。
这个文件的逻辑十分复杂。
反省是不是需求增添一个新的项目。
假如true,增添项目
在到场中,它要反省复重的纪录,经由过程更新数目和价钱来更新存在的纪录。
片断1。反省将要增添的新的项目
这是一个正常的IF语句,用于反省$basket变量的值。
<?php
if ($basket!=""){
//向篮子中到场项目
}
?>
片断2。在阅读器中显示篮子
<?php
if ($ses_basket_items>0){
// 假如在篮子中有项目
for ($basket_counter=0;$basket_counter<$ses_basket_items;$basket_counter++){
// 遍历篮子,打印出每行
// 你固然可以用格表来格局化显示
// 需求经由过程格局化来显示价钱的分值。假如没有格局化,则.00是不会显示出来的
$price=sprintf("%01.2f",$ses_basket_price[$basket_counter]);
$amount=$ses_basket_amount[$basket_counter];
$name=$ses_basket_name[$basket_counter];
echo "$amount $name $price";
echo "<BR>\n";
}
} else {
// 在篮子中没有商品
// 设置项目计数为0,且排除一切的变量
// 这是一个排除处置。它避免人们失掉旧的数组
$ses_basket_items=0;
unset($ses_basket_name);
unset($ses_basket_amount);
unset($ses_basket_price);
unset($ses_basket_id);
}
?>
这段代码不会发生任何了局。项目还没有被填充,篮子老是空的,所以篮子不会被显示。那末让咱们向
这个篮子中加些项目吧。
不过还好,PHP语言给出的语法错误很详细,只要稍微熟悉一点之后,看错误提示就能很容易找出错误所在的。PHP还有一个特别好用的调试功能,在PHP语句中,你可以随时用echo来输出结果。 |
|