PHP案例 简易网上书店之购物车设计.docx

上传人:b****7 文档编号:10984016 上传时间:2023-02-24 格式:DOCX 页数:23 大小:201.20KB
下载 相关 举报
PHP案例 简易网上书店之购物车设计.docx_第1页
第1页 / 共23页
PHP案例 简易网上书店之购物车设计.docx_第2页
第2页 / 共23页
PHP案例 简易网上书店之购物车设计.docx_第3页
第3页 / 共23页
PHP案例 简易网上书店之购物车设计.docx_第4页
第4页 / 共23页
PHP案例 简易网上书店之购物车设计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

PHP案例 简易网上书店之购物车设计.docx

《PHP案例 简易网上书店之购物车设计.docx》由会员分享,可在线阅读,更多相关《PHP案例 简易网上书店之购物车设计.docx(23页珍藏版)》请在冰豆网上搜索。

PHP案例 简易网上书店之购物车设计.docx

PHP案例简易网上书店之购物车设计

案例简易网上书店之购物车设计

一、概述

当会员从图书显示页面选择了所购图书并填写了购书的数量后,就要把书放入购物车中。

购物车就是记录存放会员暂时选定图书的数据表,对这个数据表的操作包括添加、更改、删除和查询。

当把选中的图书放入购物车时,就是向数据库添加数据;当查看购物车时,就是把数据库中的数据读出来,按一定的格式显示在浏览器上;当删除不想要的图书或更改购书的数量时,就是删除或更改数据表中的数据;当重新购物时,就要清除数据表中的数据。

二、系统架构

对购物车的操作发生在选中图书之后。

建立一个数据表记录会员选购的图书信息。

当进入图书显示页面,选定了想要的图书后,要更新数据表中的数据。

查看购物车,除了显示数据表中与会员有关的图书信息外,还提供变更购书数量和取消不想要的图书的表单,并交给相关程序处理。

在查看购物车页面也提供结算的入口。

同时定单也要从确定的购物车中提取数据。

因此,购物车页面应该具有以下功能:

1.添加购物车。

2.查看购物车。

3.修改购物车。

4.清除购物车。

本案例的工作流程图如图1所示。

图1

说明:

1.会员从图书显示页面选定图书,请求加入购物车;

2.处理了添加后,会员的去向可能是继续购书,那就回到显示页面,也可能想查看购物车,那就进入到查看购物车页面;

3.进入查看购物车页面后,会员能浏览到所选图书的信息,同时还能修改购书信息,也能选择继续购书,或结账;

4.清除购物车是在购物结束时发生。

三、系统设计

1.逻辑结构设计

根据对系统的功能描述,可得如图2所示的系统逻辑结构图。

图2

2.数据库设计

在MySQL数据库服务器上名为bookshop数据库内建立数据表buychat,各字段的定义和说明如下。

表buychat

字段

类型

NULL

说明

备注

buyid

Int(11)

购书序列号

auto_increment

userid

char(30)

会员登录id

bookid

Int(11)

书号

buynum

Int(11)

购买数量

buyprice

float

购买价格

buystatus

varchar

(2)

购买状态

f

注:

通过phpMyadmin建立,在MySQL的data文件夹中会自动创建以此数据库为名的文件夹,包含相关数据。

3.界面设计

添加购物车页面:

addchat.php

标题行

继续购书(submit)查看购物车(submit)

查看购物车:

checkchat.php

标题行

提示信息栏

取消

书名

出版社

价格

购买数量

合计

表单(复选框)

表单(文本框)

提示语:

取消某本书或修改了购书数量后,单击“修改”按钮

修改

(submit)

还要卖(submit)

结账(submit)

状态提示栏:

购书数量不能为0,请修改。

四、编码实现

1.添加购物车页面:

addchat.php

session_start();//创建会话

$userid=$_SESSION['userid'];//使用会话变量

include("sys_conf.inc");

//建立与SQL数据库的连接

$connection=@mysql_connect($DBHOST,$DBUSER,$DBPWD)ordie("无法连接数据库!

");

@mysql_query("setnames'gb2312'");

@mysql_select_db("bookshop")ordie("无法选择数据库!

");

$query="SELECT*FROMbookinforderbybookid";

$result=@mysql_query($query,$connection)ordie("读取数据失败!

1");

$query="SELECT*FROMbuychatwhereuserid='$userid'orderbybookid";

$result2=@mysql_query($query,$connection)ordie("读取数据失败!

2");

$i=1;

while($row2=mysql_fetch_array($result2))

{

$bc[$i][bookid]=$row2[bookid];

$bc[$i][buynum]=$row2[buynum];

$i++;

}

$count=1;

while($row=mysql_fetch_array($result))

{

if($bookbm[$count]=="sel")

{

if($buynum[$count]=="")

$buynum[$count]=0;

$p=0;

for($j=1;$j<=count($bc);$j++)

{

if($count==$bc[$j][bookid])

{

$p=1;

break;

}

}

if($p==1)

{

$buynu=$buynum[$count]+$bc[$j][buynum];

$query="UPDATEbuychatsetbuynum='$buynu'where(bookid='$count'anduserid='$userid')";

@mysql_query($query,$connection)ordie("添加购物车数据失败!

1");

}

else

{

$buynu=$buynum[$count];

$query="INSERTINTObuychat(buynum,buyprice,userid,buystatus,bookid)VALUES('$buynu','$row[priceyh]','$userid','f','$count')";

@mysql_query($query,$connection)ordie("添加购物车数据失败!

2");

}

}

$count++;

}

mysql_close($connection)ordie("无法断开与数据库的连接");

?

>

成功选购!


--addchat.php--

代码解读

1)获取会话变量——会员id

session_start();要把在登录时创建的会话变量(会员id)取出,必须先创建会话;

$userid=$_SESSION['userid'];获取会话变量,将在数据库操作中使用;

2)包含数据库服务器配置变量文件

使用include()函数把数据库服务器配置变量文件包括在程序中。

include()函数的参数是公共文件sys_conf.inc,用于设置系统使用的数据库全局变量。

--sys_conf.inc:

系统配置文件-->

php

//数据库配置全局变量

$DBHOST="localhost";

$DBUSER="root";

$DBPWD="";

?

>

3)写入或修改购物车中的数据

这个部分相对复杂些,主要算法是:

包含数据库服务器配置数据文件

连接数据库服务器

设置数据库服务器处理的字符集,以处理汉字在浏览器上的显示

打开数据库bookbook

读取数据表bookinf中的数据赋予变量$result

读取数据表buychat中指定会员的的数据并赋予变量$result2

依次提取字段bookid和booknum中的值

依次提取数据表bookinf中记录;

对被选中的记录

如果没有填写数量,就设置为0;

如果已经在数据表buychat中,就修改它的数量;

如果不在数据表buychat中,就把相关图书信息插入在表尾;

关闭数据库连接。

4)用HTML编写在浏览器上显示的添加购物车页面

注意:

继续购书的提交按钮表单交给newbook.php处理,而查看购物车按钮表单交给checkchat.php处理。

5)这段代码中用到的SQL命令

命令格式

含义

setnames'gb2312'

设置字符处理集为gb2312

SELECT*FROMbookinforderbybookid

获取数据表bookinf的所有记录

SELECT*FROMbuychatwhereuserid='$userid'orderbybookid

获取数据表bookchat中与登录会员相关的所有记录

UPDATEbuychatsetbuynum='$buynu'where(bookid='$count'anduserid='$userid')

更新数据表buychat中登录会员指定书号的购书数量

INSERTINTObuychat(buynum,buyprice,userid,buystatus,bookid)VALUES('$buynu','$row[priceyh]','$userid','f','$count')

把登录会员当前的购书信息插入到数据表buychat中

6)程序中用到的变量

变量名

取值

含义

$userid

字符串

记录会员ID

$connection

整数,标识连接数据库的句柄

记录连接数据库德指针

$query

SQL命令

记录SQL命令

$result,$result2

查询数据集

记录执行SQL命令后的返回结果

$count

整数

记录书号

$row,$row2

数组

记录查询数据集中的一条记录

$bc

查询数据集中的值,二维数组

记录查询结果数据集的值

$bookbm

数组

记录对每本书的选购状态

$buynum

数组

记录对每本书的选购数量

$p

逻辑值(0/1)

0-已经记录在购物车上

$i,$j

整数

记录查询数据集中的记录指针

7)程序中用到的函数

函数

用法

含义

count()

参数取数组型

统计数组中元素的个数

mysql_connect()

三个参数分别是服务器名,会员名,会员密码

连接到指定的数据库服务器上,访问会员建立的数据库

die()

参数取字符串型

返回字符串的信息,错误警报

mysql_query()

参数为SQL命令

执行SQL命令

mysql_select_db()

参数为数据库名

打开数据库文件

mysql_fetch_array()

参数为字符串

以数组返回查询数据集中的记录

mysql_close()

参数为标识连接数据库的句柄

关闭数据库文件

2.查看购物车:

checkchat.php

session_start();

$userid=$_SESSION['userid'];

include("sys_conf.inc");

//建立与SQL数据库的连接

$connection=@mysql_connect($DBHOST,$DBUSER,$DBPWD)ordie("无法连接数据库!

");

@mysql_query("setnames'gb2312'");

@mysql_select_db("bookshop")ordie("无法选择数据库!

");

//向数据库发送查询请求

$query="SELECT*FROMbuychatwhereuserid='$userid'orderbybookid";

$result=@mysql_query($query,$connection)ordie("读取数据失败!

1");

$query="SELECT*FROMbookinforderbybookid";

$result2=@mysql_query($query,$connection)ordie("读取数据失败!

2");

$count=1;

$errmsgnum="";

while($row=mysql_fetch_array($result))

{

$bc[$count][buyprice]=$row[buyprice];

$bc[$count][buynum]=$row[buynum];

$bc[$count][bookid]=$row[bookid];

$i=1;

while($rows=mysql_fetch_array($result2))

{

if($bc[$count][bookid]==$rows[bookid])

{

$bc[$count][bookname]=$rows[bookname];

$bc[$count][publisher]=$rows[publisher];

break;

}

$i++;

}

if($row[buynum]==0)

$errmsgnum="购书数量不能为0,请修改!

";

$count++;

}

mysql_close($connection)ordie("无法断开与数据库的连接");

?

>

查询购物车

--

.STYLE2{FONT-size:

14px;}

-->

购物车清单

echo$_SESSION['userid']?

>:

以下是你所选购的图书,你可以修改购买的数量或取消!

取消

书名

出版社

价格

购买数量

合计

for($j=1;$j<=count($bc);$j++)

{

echo"";

echo'';

echo''.$bc[$j][bookname].'';

echo''.$bc[$j][publisher].'';

echo''.$bc[$j][buyprice].'';

echo'

';

echo''.$bc[$j][buyprice]*$bc[$j][buynum].'';

echo"";

}

?

>

取消某本书或修改了购书数量后,单击“修改”按钮

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1