PHP购物车,php立即购买和购物车功能

PHP购物车,php立即购买和购物车功能,php实现购物车功能(上)

这篇文章主要介绍了服务器端编程语言(专业超文本预处理器的缩写)实现购物车功能的全部代码,提出了需求分析、解决方案、数据库的创建,帮助大家轻轻松松实现购物车功能,感兴趣的小伙伴们可以参考一下

本文分两篇为大家介绍php实现购物车功能,具有一定的参考价值,相信大家一定喜欢。

1、需求分析

我们需要找到一种将数据库连接到用户的浏览器的方法。用户能够按目录浏览商品。用户应该能够从商品目录中选取商品以便此后的购买。我们也要能够记录他们选中的物品。当用户完成购买,要合计他们的订单,获取运送商品细节,并处理付款。创建一个管理界面,以便管理员在上面添加、编辑图书和目录。

2、解决方案

2.1 用户视图

2.2 管理员视图

2.3 O-Rama图书中的文件列表

3、实现数据库3.1 创建book_sc数据库的结构化查询语言代码

创建数据库book _ sc#创建book_sc数据库

使用book _ sc#使用book_sc数据库

创建表客户#创建用户表

customerid INT UNSIGNED NOT NULL AUTO _ INCREMENT主键

姓名字符(60)不为空,

地址字符(80)不为空,

城市字符(30)不为空,

状态充电器(10),

拉链充电器(10),

国家字符(20)不为空

);

创建表订单#创建订单表

orderid INT UNSIGNED NOT NULL AUTO _ INCREMENT主键,

customerid INT无符号不为空,

金额浮动(6,2),

日期日期不为空,

订单状态字符(10),

ship_name CHAR(60)不为空,

发货地址字符(80)不为空,

发货城市字符(30)不为空,

发货状态字符(20),

ship_zip CHAR(10),

发货国家字符(20)非空

);

创建表格书籍#创建图书表

国际标准书号字符(13)非空主键,

作者充电器(80),

标题充电器(100),

catid INT无符号,

价格浮动(4,2)不为空,

描述VARCHAR(255)

);

创建表格类别#创建目录表

catid INT UNSIGNED NOT NULL AUTO _ INCREMENT主键

类别名字符(60)不为空

);

创建表订单_项目#订单物品表

orderid INT无符号不为空,

国际标准书号字符(13)不为空,

item _价格浮动(4,2)不为空,

数量TINYINT无符号不为空,

主键(订单编号,国际标准书号)

);

创建表管理员#管理员表

用户名字符(16)非空主键,

密码字符(40)不为空

);

授权选择、插入、更新、删除

在book_sc上。*

to book_sc@localhost由'密码'标识;

3.2 数据库测试数据文档

使用book _ sc

插入到图书值(' 0672329166 ','卢克韦林和劳拉汤姆森,' PHP和MySQL网络开发',1,49.99,

PHP MySQL Web开发教会读者开发动态、安全的电子商务网站。通过跟随真实世界的例子和工作样本项目,你将学会集成和实现这些技术。);

插入到书值(' 067232976X ','朱莉梅洛尼','萨姆斯自学PHP,MySQL和阿帕奇一体机,1,34.99,

本书中的每一课都以前面的课为基础,采用简单明了、循序渐进的方法,让你从头开始学习服务器端编程语言(Professional Hypertext Preprocessor的缩写)脚本、MySQL数据库和Apache web服务器的基本知识。);

插入图书值(' 0672319241 ','斯特林休斯和Andrei Zmievski ',' PHP开发人员食谱',1,39.99,

为服务器端编程语言(Professional Hypertext Preprocessor的缩写)开发人员最常面临的挑战提供了一个完整的、面向解决方案的指南\r\n这本书是专门为有经验的网开发人员编写的,为现实世界的需求提供了现实世界的解决方案\ r \ n ');

插入类别值(1,"互联网");

插入类别值(2,"自助");

插入类别值(5,"虚构");

插入类别值(4,"园艺");

插入管理值(' admin ',sha1(' admin '));

4、实现在线目录

主页-目录

由以下代码实现:

4.1 index.php

?服务器端编程语言(专业超文本预处理器的缩写)

/**

* @作者开关

* @copyright 2015

* 网站首页,显示系统中的图书目录

*/

//要求_一次语句和需要语句完全相同,唯一区别是服务器端编程语言(专业超文本预处理器的缩写)会检查该文件是否已经被包含过,如果是则不会再次包含。

require _ once(' book _ sc _ fns。PHP’);

session_start()。//开始会话

do_html_header('欢迎来到book-O-Rama’);//页头

回声请选择一个类别:/p ';

$ cat _ array=get _ categories();//从数据库获取目录

display _ categories($ cat _ array);//显示目录链接

if(isset($ _ SESSION[' admin _ user '])//如果是管理员,显示管理员操作

display_button('admin.php ','管理菜单','管理菜单');

do _ html _ footer();//页尾

4.2 book_fns.php文件中的函数获取类别()

函数get_categories() //从数据库中获取目录列表

{

$ conn=db _ connect();//连接数据库

$query='从类别中选择catid,目录名

$ result=@ $ conn-query($ query);

如果(!$result) //查询失败,返回错误的

返回错误的

$ num _ cats=@ $ result-num _ rows;

if($num_cats==0) //数据库中无目录,返回错误的

返回错误的

$ result=db _ result _ to _ array($ result);

返回$结果

}

4.3输出_fns.php文件中的函数显示类别()

函数display _ categories($ cat _ array)//输出目录

{

如果(!is_array($cat_array))

{

回声”当前可用的进行性核性眼肌麻痹类别/p ";

返回;

}

回声报

foreach($cat_array as $row)

{

$url='show_cat.php?catid=' .$ row[' catid '];

$ title=$ row['猫名'];

回声'李;

do_html_URL($url,$ title);

回声'/李;

}

echo '/ul ';

echo ' HR/';

}

4.4 db_fns.php文件中的函数db_result_to_array()

函数db_result_to_array($result) //结果到数组

{

$ RES _ array=array();

for($ count=0;$ row=$ result-fetch _ assoc();$count)

$ RES _ array[$ count]=$ row;

返回$ res _ array

}

Internet目录下的所有图书

由以下代码实现:

4.5 show_cat.php

?服务器端编程语言(专业超文本预处理器的缩写)

/**

* @作者开关

* @copyright 2015

* 显示特定目录包含的所有图书

*/

//要求_一次语句和需要语句完全相同,唯一区别是服务器端编程语言(专业超文本预处理器的缩写)会检查该文件是否已经被包含过,如果是则不会再次包含。

require _ once(' book _ sc _ fns。PHP’);

session_start()。

@ $ catid=$ _ GET[' catid '];

$ name=get _ category _ name($ catid);

do _ html _ header($ name);

$ book _ array=get _ books($ catid);

display _ books($ book _ array);

//如果是管理员,显示管理界面按钮

if(isset($ _ SESSION[' admin _ user ']))

{

display_button('index.php ','继续','继续购物');

display_button('admin.php ','管理菜单','管理菜单');

显示按钮('编辑类别表单。PHP?catid=' .$catid,'编辑类别','编辑类别');

}

else //否则显示主界面按钮

{

display_button('index.php ','继续-购物','继续购物');

}

do _ html _ footer();

4.6 book_fns.php文件中的函数get_category_name()

函数get_category_name($catid) //获取目录名

{

$ conn=db _ connect();//连接数据库

$query='从catid=' '的类别中选择猫名.$catid .';

$ result=@ $ conn-query($ query);

如果(!$result) //查询失败,原因为查询出错

返回错误的

$ num _ cats=@ $ result-num _ rows;

if($num_cats==0) //查询失败,原因为无目录

返回错误的

$ row=$ result-fetch _ object();

返回$ row-猫名;

}

4.8 book_fns.php文件中的函数get_books()

函数get_books($catid) //从数据库中获取图书

{

如果((!$ catid)| |($ catid==' ')//如果目录身份证明为空

返回错误的

$ conn=db _ connect();

$ query=' select * from books where catid=' ' .$catid .';

$ result=@ $ conn-query($ query);

如果(!$result) //查询失败,原因为查询出错

返回错误的

$ num _ books=@ $ result-num _ rows;

if($num_books==0) //查询失败,原因为无图书

返回错误的

$ result=db _ result _ to _ array($ result);

返回$结果

}

4.9输出_fns文件中的函数显示_书籍()

函数display_books($book_array) //输出图书

{

如果(!is_array($book_array))

回声此类别中目前没有图书/p ';

else //有图书,建表

{

"回显"表格宽度="100%"边框="0";

foreach($book_array as $row)

{

$url='show_book.php?国际标准书号=' .$ row[' ISBN '];

echo“trtd”;

//如果图片存在

if(@file_exists('images/').$ row[' ISBN ']. jpg '))

{

$title='img src='images/' .$ row[' ISBN ']. jpg ' style=' border:1px纯黑'/';

do_html_URL($url,$ title);

}

其他

回显"";

echo '/tdtd ';

$title=$row['title'].由. row[' author '];

do_html_URL($url,$ title);

echo '/TD/tr ';

}

echo "/table ";

}

echo ' HR/';

}

PHP and MySQL Web Development的详细信息

由以下代码实现:

4.10 show_book.php

?服务器端编程语言(专业超文本预处理器的缩写)

/**

* @作者开关

* @copyright 2015

* 显示特定图书的详细信息

*/

//要求_一次语句和需要语句完全相同,唯一区别是服务器端编程语言(专业超文本预处理器的缩写)会检查该文件是否已经被包含过,如果是则不会再次包含。

require _ once(' book _ sc _ fns。PHP’);

session_start()。

$ ISBN=$ _ GET[' ISBN '];

$ book=get _ book _ details($ ISBN);

do _ html _ header($ book[' title ']);

display _ book _ details($ book);

//设置继续按钮

$ target=' index.php

if($book['catid'])

$target='show_cat.php?catid=' .$ book[' catid '];

//如果是管理员,显示编辑链接

如果(检查管理员用户())

{

display _ button(' edit _ book _ form。PHP?国际标准书号=' .$isbn,' edit-item ',' Edit Item ');

display_button('admin.php ','管理菜单','管理菜单');

display_button($target,' continue ',' Continue ');

}

其他

{

display_button('show_cart.php?新='。$isbn,'添加到购物车','添加。$book['title'].到我的购物车');

display _ button(target,'继续-购物','继续购物');

}

do _ html _ footer();

4.11 book_fns.php文件中的函数get_book_details()

函数get_book_details($isbn) //从数据库中获取一本图书的详细说明

{

如果((!$ ISBN)| |($ ISBN==' ')//如果图书统一书号为空

返回错误的

$ conn=db _ connect();//连接数据库

$ query=' select * from books where ISBN=' ' .$isbn .';

$ result=@ $ conn-query($ query);

如果(!$result) //查询失败,原因为查询出错

返回错误的

$ result=@ $ result-fetch _ assoc();

返回$结果

}

4.12输出_文件文件中的函数显示_书籍_详细信息()

函数display_book_details($book) //输出图书详细说明

{

if(is_array($book))

{

echo“tabletr”;

//如果图片存在

if(@file_exists('images/').$ book[' ISBN ']. jpg ').

{

$size=getimagesize('images/').$ book[' ISBN ']. jpg ');

if(($size[0] 0) ($size[1] 0))

{

echo 'tdimg src='images/' .$ book[' ISBN ']. jpg ' style=' border:1px纯黑//TD’;

}

}

回声报

echo ' listrong作者:/strong ';

echo $ book[' author '];

echo '/lilistrongISBN:/strong ';

echo $ book[' ISBN '];

回声/莉莉斯特朗我们的价格:/strong ';

echo number _ format($ book[' price '],2);

echo '/Lili strong描述:/strong ';

echo $ book[' description '];

echo '/Li/ul/TD/tr/table ';

}

其他

{

回声此时无法显示这本书的详细信息. p/p ';

}

echo ' HR/';

}

5、实现购物车

不使用参数的脚本只显示购物车的内容

带有参数new的脚本将添加一个物品到购物车

由以下代码实现:

5.1 show_cart.php

?服务器端编程语言(专业超文本预处理器的缩写)

/**

* @作者开关

* @copyright 2015

* 显示用户购物车的内容。也用来向购物车添加图书

*/

//要求_一次语句和需要语句完全相同,唯一区别是服务器端编程语言(专业超文本预处理器的缩写)会检查该文件是否已经被包含过,如果是则不会再次包含。

require _ once(' book _ sc _ fns。PHP’);

session_start()。

@ $ new=$ _ GET[' new '];

如果(新)

{

如果(!isset($ _ SESSION[' cart '])//购物车中无物品

{

$ _ SESSION[' cart ']=array();

$ _ SESSION[' items ']=0;

$ _ SESSION[' total _ price ']=' 0.00 ';

}

if(isset($ _ SESSION[' cart '][$ new]))

{

$ _ SESSION[' cart '][$ new];

}

其他

{

$ _ SESSION[' cart '][$ new]=1;

}

$ _ SESSION[' total _ price ']=calculate _ price($ _ SESSION[' cart ']);

$ _ SESSION[' items ']=calculate _ items($ _ SESSION[' cart ']);

}

if(isset($_POST['save']))

{

foreach($ _ SESSION[' cart ']as $ ISBN=$ qty)

{

if($_POST[$isbn]=='0 ')

unset($ _ SESSION[' cart '][$ ISBN]);

其他

$ _ SESSION[' cart '][$ ISBN]=$ _ POST[$ ISBN];

}

$ _ SESSION[' total _ price ']=calculate _ price($ _ SESSION[' cart ']);

$ _ SESSION[' items ']=calculate _ items($ _ SESSION[' cart ']);

}

do_html_header("你的购物车");

if((@ $ _ SESSION[' cart '])(array _ count _ values($ _ SESSION[' cart ']))

{

display _ cart($ _ SESSION[' cart ']);

}

其他

{

回声您的购物车中没有商品/phr/';

}

$ target=' index.php

//如果只有一种物品添加到购物车,可以继续购物

如果(新)

{

$ details=get _ book _ details($ new);

if($details['catid'])

{

$target='show_cat.php?catid=' .$ details[' catid '];

}

}

display _ button(target,'继续-购物','继续购物');

//SSL链接-需要配置,PS:没配置,所以不能使用

//$ path=$ _ SERVER[' PHP _ SELF '];//获取路径

//$ SERVER=$ _ SERVER[' SERVER _ NAME '];//获取主机名

//$ path=str _ replace(' show _ cart。PHP ','',$ path);

//display_button('https://').$服务器.$path .checkout.php去结账','去结账');

//非加密套接字协议层链接

display_button('checkout.php ','转到签出','转到退房’);

do _ html _ footer();

5.2输出_fns.php文件中的函数显示购物车()

函数display_cart($cart,$change=true,$images=1) //显示购物车

{

"回显"表格边框="0"宽度="100%"单元格间距="0"

表单操作='show_cart.php '方法='post '

tr

th栏span=" .(1 $图片)。bgcolor=' #cccccc'Item/th

价格/日

th bgcolor=' cccccc '数量/th

th bgcolor='#cccccc'Total/th

/tr ';

//输出购物车中每一项

foreach($cart as $isbn=$qty)

{

$ book=get _ book _ details($ ISBN);

回声tr’;

if($images==true)

{

echo ' td align=' left

if(file_exists('images/' .$ ISBN . 1000 . jpg '))

{

$size=getimagesize('images/').$ ISBN . 1000 . jpg’);

if(($size[0] 0) ($size[1] 1)) //图片长宽

{

echo 'img src='images/' .$国际标准书号.' jpg '

style='border: 1px纯黑'

宽度=""。($size[0]/3).''

高度=""。($size[1]/3).''/';

}

}

其他

回显"";

echo '/TD ';

}

echo 'td align='left '

a href='show_book.php?国际标准书号=' .国际标准书号美元.'''.$book['title']./a by ' .$book['author']./td

td align='center'\$ ' .number _ format($book[' price '],2). '/tdtd align=" center ";

//如果允许更改数量

if ($change==true)

{

“回声”输入类型="文本"名称=""。国际标准书号美元.值=""。$数量. size=" 3

}

其他

{

echo $数量

}

echo '/tdtd align='center'\$ ' .number _ format($ book[' price ']* $ qty,2)./TD/tr \ n ';

}

//总数

回声报

th栏span=" .(2 $图片)。bgcolor='#cccccc' /th

th align=' center ' bgcolor=' # cccccc ' ' .$_SESSION['items']./th

' th align=' center ' bgcolor=' # cccccc ' \ $ ' .number _ format($ _ SESSION[' total _ price '],2)./th/tr ';

//保存按钮

if($change==true)

{

回声报

td colspan=" " .(2 $图片)。/td

td align='居中'

输入类型=' hidden ' name=' save ' value=' true '/

输入type=' image ' src=' images/Save-Changes。gif ' border=' 0 ' alt='保存更改'/

/td

td /td

/tr ';

}

echo '/form/table ';

}

5.3 book_fns.php文件中的函数计算价格()

函数calculate_price($cart) //计算购物车中物品总价

{

$价格=0.0

if(is_array($cart))

{

$ conn=db _ connect();

foreach($cart as $isbn=$qty)

{

$query='从isbn=' '的图书中选择价格国际标准书号。

$ result=$ conn-query($ query);

如果($结果)

{

$ item=$ result-fetch _ object();

$ item _ price=$ item-price;

$ price=$ item _ price * $ qty

}

}

}

返回价格

}

5.4 book_fns.php文件中的函数计算项目()

函数calculate_items($cart) //计算购物车中的物品总数

{

$ items=0;

if(is_array($cart))

{

foreach($cart as $isbn=$qty)

$ items=$ qty

}

返回$项目

}

获取顾客的详细信息

由以下代码实现:

5.5 checkout.php

?服务器端编程语言(专业超文本预处理器的缩写)

/**

* @作者开关

* @copyright 2015

* 向用户显示所有的订单细节。获取商品运送细节

*/

//要求_一次语句和需要语句完全相同,唯一区别是服务器端编程语言(专业超文本预处理器的缩写)会检查该文件是否已经被包含过,如果是则不会再次包含。

require _ once(' book _ sc _ fns。PHP’);

session_start()。

do _ html _ header(' check out ');

if((@ $ _ SESSION[' cart '])(array _ count _ values($ _ SESSION[' cart ']))

{

display_cart($_SESSION['cart'],false,0);

display _ check out _ form();

}

其他

{

回声您的购物车中没有其他商品/p ';

}

display_button('show_cart.php ','继续-购物','继续购物');

do _ html _ footer();

5.6输出_fns.php文件中的显示_结帐_表单()

函数display_checkout_form() //输出付款台界面

{

br /

表格边框='0 '宽度='100% '单元格spacng='0 '

表单操作='purchase.php '方法='post '

tr!-客户信息-

您的详细信息/th

/tr

tr

(美)财政部(Treasury Department)名称/td

TD输入type=' text ' name=' name ' value=' ' maxlength=' 40 ' size=' 40 '//TD

/tr

tr

(美)财政部(Treasury Department)地址/td

TD输入type=' text ' name=' address ' value=' ' maxlength=' 40 ' size=' 40 '//TD

/tr

tr

(美)财政部(Treasury Department)城市/郊区/td

TD输入type=' text ' name=' city ' value=' ' maxlength=' 20 ' size=' 40 '//TD

/tr

tr

(美)财政部(Treasury Department)州/省/td

TD输入type=' text ' name=' state ' value=' ' maxlength=' 20 ' size=' 40 '//TD

/tr

tr

(美)财政部(Treasury Department)邮政编码/td

TD输入type=' text ' name=' zip ' value=' ' maxlength=' 10 ' size=' 40 '//TD

/tr

tr

(美)财政部(Treasury Department)国家/地区/td

TD输入type=' text ' name=' country ' value=' ' maxlength=' 10 ' size=' 40 '//TD

/tr

tr!-运单信息-

th colspan='2' bgcolor='#cccccc '送货地址(如果如上,请留空)/th

/tr

tr

(美)财政部(Treasury Department)名称/td

TD输入type=' text ' name=' ship _ name ' maxlength=' '//TD

/tr

tr

(美)财政部(Treasury Department)地址/td

TD输入type=' text ' name=' ship _ address ' value=' ' maxlength=' 40 ' size=' 40 '//TD

/tr

tr

(美)财政部(Treasury Department)城市/郊区/td

TD输入type=' text ' name=' ship _ city ' value=' ' maxlength=' 20 ' size=' 40 '//TD

/tr

tr

(美)财政部(Treasury Department)州/省/td

TD输入type=' text ' name=' ship _ state ' value=' ' maxlength=' 20 ' size=' 40 '//TD

/tr

tr

(美)财政部(Treasury Department)邮政编码/td

TD输入type=' text ' name=' ship _ zip ' value=' ' maxlength=' 10 ' size=' 40 '//TD

/tr

tr

(美)财政部(Treasury Department)国家/地区/td

TD输入type=' text ' name=' ship _ country ' value=' ' maxlength=' 20 ' size=' 40 '//TD

/tr

tr

td colspan='2' align='center '

p

强烈的请按"购买"确认您的购买,或继续购物以添加或删除项目100/strong

/p

?PHP display _ form _ button(' Purchase ',' Purchase There Items ');

/td

/tr

/表单

/表格

人力资源/

?服务器端编程语言(专业超文本预处理器的缩写)

}

已填写好信息的订单

获取客户信用卡信息

由以下代码实现:

5.7 purchase.php

?服务器端编程语言(专业超文本预处理器的缩写)

/**

* @作者开关

* @copyright 2015

* 从用户获取付款细节

*/

//要求_一次语句和需要语句完全相同,唯一区别是服务器端编程语言(专业超文本预处理器的缩写)会检查该文件是否已经被包含过,如果是则不会再次包含。

require _ once(' book _ sc _ fns。PHP’);

session_start()。

do _ html _ header(' check out ');

//创建变量

$ name=$ _ POST[' name '];

$ address=$ _ POST[' address '];

$ city=$ _ POST[' city '];

$ zip=$ _ POST[' zip '];

$ country=$ _ POST[' country '];

//如果订单细节填满

if(($ _ SESSION[' cart '])($ name)($ address)($ city)($ zip)($ country))

{

if(insert_order($_POST)!=假)

{

display_cart($_SESSION['cart'],false,0);

display _ shipping(calculate _ shipping _ cost());

display _ card _ form($ name);

display_button('show_cart.php ','继续-购物','继续购物');

}

其他

{

回声无法存储数据,请重试./phr/';

display_button('checkout.php ',' back ',' Back ');

}

}

其他

{

回声您没有填写所有字段,请重试./phr/';

display_button('checkout.php ',' back ',' Back ');

}

do _ html _ footer();

5.8 order_fns.php文件中的函数insert_order()

函数insert_order($order_details) //提取订单细节作为变量

{

extract($ order _ details);

//设置邮寄地址为当前地址

如果((!$ship_name)(!$ship_address)(!$ship_city)(!$ship_state)(!$ship_zi

p) &&(!$ship_country)) { $ship_name = $name; $ship_address = $address; $ship_city = $city; $ship_state = $state; $ship_zip = $zip; $ship_country = $country; } //连接数据库 $conn = db_connect(); //事务开始,必须关闭自动提交 $conn ->autocommit(false); $query = "select customrid from customers where name ='". $name ."' and address = '". $address ."' and city = '". $city ."' and state = '". $state ."' and zip = '". $zip ."' and country = '". $country ."'"; $result = $conn ->query($query); if(@$result ->num_rows > 0) { $customer = $result ->fetch_object(); $customerid = $customer ->customerid; } else { $query = "insert into customers values ('','". $name ."','". $address ."','". $city ."','". $state ."','". $zip ."','". $country ."')"; $result = $conn ->query($query); if(!$result) return false; } $customerid = $conn ->insert_id; //返回上次查询中自增量的ID $date = date("Y-m-d"); $query ="insert into orders values ('','". $customerid ."','". $_SESSION['total_price'] ."','". $date ."','PARTIAL','". $ship_name ."','". $ship_address ."','". $ship_city ."','". $ship_state ."','". $ship_zip ."','". $ship_country ."')"; $result = $conn ->query($query); if(!$result) return false; $query = "select orderid from orders where customerid ='". $customerid ."' and amount > (". $_SESSION['total_price'] ."-.001) and amount < (". $_SESSION['total_price'] ."+.001) and date ='". $date ."' and order_status = 'PARTIAL' and ship_name ='". $ship_name ."' and ship_address ='". $ship_address ."' and ship_city ='". $ship_city ."' and ship_state ='". $ship_state ."' and ship_zip ='". $ship_zip ."' and ship_country ='". $ship_country ."'"; $result = $conn ->query($query); if($result ->num_rows > 0) { $order = $result ->fetch_object(); $orderid = $order ->orderid; } else return false; foreach($_SESSION['cart'] as $isbn => $quantity) { $detail = get_book_details($isbn); $query = "delete from order_items where orderid = '". $orderid ."' and isbn = '". $isbn ."'"; $result = $conn ->query($query); $query = "insert into order_items values ('". $orderid ."','". $isbn ."',". $detail['price'] .",$quantity)"; $result = $conn ->query($query); if(!$result) return false; } //事务关闭,开启自动提交 $conn ->commit(); $conn ->autocommit(true); return $orderid; }

5.9 output_fns.php文件中的函数display_shipping()

function display_shipping($shipping) //输出包含运费的总价 { ?> <table border="0" width="100%" cellspacing="0"> <tr> <td align="left">Shipping</td> <td align="right"> <?php echo number_format($shipping, 2); ?></td> </tr> <tr> <th bgcolor="#cccccc" align="left">TOTAL INCLUDING SHIPPING</th> <th bgcolor="#cccccc" align="right">$ <?php echo number_format($shipping+$_SESSION['total_price'], 2); ?></th> </tr> </table> <br /> <?php }

5.10 output_fns.php文件中的函数display_card_form()

function display_card_form($name) //输出信用卡信息 { ?> <table border="0" width="100%" cellspacing="0"> <form action="process.php" method="post"> <tr> <th colspan="2" bgcolor="#cccccc">Credit Card Details</th> </tr> <tr> <td>Type</td> <td> <select name="card_type"> <option value="VISA">VISA</option> <option value="MasterCard">MasterCard</option> <option value="American Express">American Express</option> </select> </td> </tr> <tr> <td>Number</td> <td><input type="text" name="card_number" value="" maxlength="16" size="40"/></td> </tr> <tr> <td>AMEX code (if required)</td> <td><input type="text" name="amex_code" value="" maxlength="4" size="4"/></td> </tr> <tr> <td>Expiry Date</td> <td>Month <select name="card_month"> <option value="01">01</option> <option value="02">02</option> <option value="03">03</option> <option value="04">04</option> <option value="05">05</option> <option value="06">06</option> <option value="07">07</option> <option value="08">08</option> <option value="09">09</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> </select> Year <select name="card_year"> <?php for($y = date("Y"); $y < date("Y") + 10; $y++) echo "<option value ="". $y ."">" . $y ."</option>"; ?> </select> </td> </tr> <tr> <td>Name on Card</td> <td><input type="text" name="card_name" value="<?php echo $name; ?>" maxlength="40" size="40"/></td> </tr> <tr> <td colspan="2" align="center"> <p> <strong>Please press Purchase to confirm yout purchase, or Continue Shopping to add or remove items</strong> </p> <?php display_form_button('purchase','Purchase These Items'); ?> </td> </tr> </table> <?php }

?5.11 db_fns.php文件中的函数db_connect()

function db_connect() //连接数据库 { $result = new mysqli('localhost','book_sc','password','book_sc'); if(!$result) //连接失败 return false; $result ->autocommit(true); return $result; }

6、实现付款

已填写好信息的信用卡详细信息

购物成功

由以下代码实现: 6.1 process.php

<?php /** * @author switch * @copyright 2015 * 处理付款细节,将订单添加到数据库 */ //require_once语句和require语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。 require_once('book_sc_fns.php'); session_start(); do_html_header('Checkout'); //创建变量 $card_type = $_POST['card_type']; $card_number = $_POST['card_number']; $card_month = $_POST['card_month']; $card_year = $_POST['card_year']; $card_name = $_POST['card_name']; if(($_SESSION['cart']) && ($card_type) && ($card_number) && ($card_month) && ($card_year) &&($card_name)) { //显示没有图片,不允许更改数量的购物车 display_cart($_SESSION['cart'],false,0); display_shipping(calculate_shipping_cost()); if(process_card($_POST)) { //清空购物车 session_destroy(); //这里可以写一些关于信用卡接口调用的函数,调用银行写好的接口 echo "<p>Thank you for shopping with us. Your order has been placed.</p>"; display_button("index.php","continue-shopping","Continue Shopping"); } else { echo "<p>Could not process your card. Please contact the card issuer or try again.</p>"; display_button("purchase.php","back","Back"); } } else { echo "<p>You did not fill in all the fields,please try again.</p><hr/>"; display_button("purchase.php","back","Back"); } do_html_footer(); ?>

以上就是php实现购物车功能的前篇,代码很详细,希望对大家的学习有所帮助,之后还有下篇分享给大家,不要错过。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: