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的缩写)开发人员最常面临的挑战提供了一个完整的、面向解决方案的指南rn这本书是专门为有经验的网开发人员编写的,为现实世界的需求提供了现实世界的解决方案 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 lih3作者:/h3 ;

echo $ book[ author ];

echo /lilih3ISBN:/h3 ;

echo $ book[ ISBN ];

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

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

echo /Lili h3描述:/h3 ;

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= #ccccccItem/th

价格/日

th bgcolor= cccccc 数量/th

th bgcolor=#ccccccTotal/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/h3

/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> <h3>Please press Purchase to confirm yout purchase, or Continue Shopping to add or remove items</h3> </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实现购物车功能的前篇,代码很详细,希望对大家的学习有所帮助,之后还有下篇分享给大家,不要错过。

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