这篇文章主要介绍了服务器端编程语言(专业超文本预处理器的缩写)实现购物车功能的全部代码,提出了需求分析、解决方案、数据库的创建,帮助大家轻轻松松实现购物车功能,感兴趣的小伙伴们可以参考一下
本文分两篇为大家介绍
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实现购物车功能的前篇,代码很详细,希望对大家的学习有所帮助,之后还有下篇分享给大家,不要错过。