php实现一个简单的购物网站

news/2024/5/8 3:58:54/文章来源:https://blog.csdn.net/weixin_30393907/article/details/97452325

实现一个简单的购物网站

一、考试时间:8小时

二、开发工具:DW

三、数据库:见附件

四、需要实现的页面:

Index:浏览商品页面,显示商品列表,用户可以点击“购买“。

ViewCart:查看购物车页面,显示已购买的商品信息,可以点击“删除“已买的商品

ViewAccount:查看个人账户余额

Login:登录页面

 

建议使用的技术:Ajax,Session,数组。

 

五、实现功能:

1、 显示商品列表

2、 实现购买功能,购买的时候动态显示购物车中的商品数量商品总价格

3、 点击查看购物车后,显示已购买的商品。注意“购买数量”列,如果对一种商品点击购买多次,其“购买数量”不断增加。

4、 删除购物车中已购买的商品。
如果某商品的“购买数量”为1时,则点击“删除”时,直接从购物车中删除该商品;
如果商品的“购买数量”大于1时,点击一次“删除”时,把其购买数量减1。直到该商品购买数量为1时,再点击删除时,删除该商品

5、 在查看完购物车后还可以点击“浏览商品”继续购买。并在上面显示已购买的商品数量和总价格。

6、 “查看购物车“后,可以提交订单

但在提交订单时,须完成以下功能:

a) 检查用户是否已登录,未登录则转到Login页面

 

b) 检查用户账户余额是否能够满足本次够买

c) 检查库存数量是否满足本次够买

d) 如果以上条件都满足则

  1. 从用户账户中扣除本次购买的总价格
  2. 从商品库存中扣除本次每种商品的购买数量
  3. 向订单表和订单内容表中加入本次购买的商品信息

7、 点击查看账户,可以查看该用户的账户余额。

 

开始做,首先先做一个登录页面:login.php

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head><body>
<h1>登录页面</h1>
<div>
<form action="logincl.php" method="post">
账号:
<input type="text" name="uid" />
</div>
<div>
密码:
<input type="password" name="pwd" />
</div>
<input type="submit" value="登录" />
</form>
</body>
</html>

 

效果如图:

在做一个登录的处理页面:logincl.php

<?php
session_start();
include("../fengzhuang/DBDA.class.php");
$db = new DBDA();$uid =$_POST["uid"];
$pwd = $_POST["pwd"];$sql = "select password from login where username = '{$uid}'";
$arr = $db->Query($sql);if($arr[0][0]==$pwd && !empty($pwd))
{$_SESSION["uid"] =$uid;header("location:main.php");
}
else
{echo"登录失败";
}

这样就可以和数据库联系了,这个是数据库的登录帐号和密码,验证帐号,密码,然后跳到主页:main.php

现在做主页的页面:main.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head><body>
<h1>大苹果购物网</h1><?php
session_start();
include("../fengzhuang/DBDA.class.php");
$db = new DBDA();
date_default_timezone_set("PRC");//1.找出购物车中多少种商品和总价
$uid = $_SESSION["uid"];
$attr = array();
//如果购物车有商品,取出值
if(!empty($_SESSION["gwc"]))
{$attr = $_SESSION["gwc"];
}$gs = count($attr);//$gs 商品数量
$sum = 0;//$sum 总价格,默认总价格为0
foreach($attr as $v)
{$v[0];//水果代号$v[1]; //水果数量$sql = "select price from fruit where ids ='{$v[0]}'";//查询单价$ajg = $db->Query($sql);$dj = $ajg[0][0];//单价$sum += $dj * $v[1];//总价=单价*数量
}
echo"<div>购物车中有:{$gs}种商品,商品总价为:{$sum}元</div>";
?><table width="100%" border="1" cellpadding="0" cellspacing="0"><tr><td>代号</td><td>水果名称</td><td>水果价格</td><td>原产地</td><td>货架</td><td>库存量</td><td>&nbsp;&nbsp;</td></tr><?php//2.从数据库中找出数据$sql = "select * from fruit";$arr = $db->Query($sql);foreach($arr as $v){echo"<tr><td>$v[0]</td><td>$v[1]</td><td>$v[2]</td><td>$v[3]</td><td>$v[4]</td><td>$v[5]</td><td><a href='add.php?ids={$v[0]}'>购买</a></td></tr>";}?></table>
<a href="gouwuche.php?ids={$v[0]}">查看购物车</a></body>
</html>

然后做主页的处理页面:add.php

<?php
session_start();
//找出点击"购买"的ids
$ids = $_GET["ids"];//1.第一次点击添加购物车
//2.如果购物车中没有该商品
//3.如果购物车中有该商品//第一步,判断购物车为空,则第一次点击把商品添加到购物车
if(empty($_SESSION["gwc"]))
{$arr = array(array($ids,1));$_SESSION["gwc"] = $arr;
}
//如果不为空,则有2种判断,1:该商品为空,则需添加进去,2:该商品有,则需数量上+1;
else
{//不是第一次点击//判断购物车中是否存在该商品$arr = $_SESSION["gwc"];$chuxian = false;foreach($arr as $v){if($v[0]==$ids){$chuxian =true;}}if($chuxian){//如果购物车中有该商品for($i=0;$i<count($arr);$i++){$arr[$i][1]+=1;}$_SESSION["gwc"] =$arr;}else{//如果购物车中没有该商品$asg = array($ids,1);$arr[] =$asg;$_SESSION["gwc"] = $arr;}
}header("location:main.php");    

登录效果如图:

然后再做查看购物车页面,能看到购物车中的商品和单价和总价:gouwuche.php

首先购买3中商品:

然后代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head><body><h1>大苹果购物网</h1><h2>购物车中有以下商品:</h2><table width="100%" border="1" cellpadding="0" cellspacing="0"><tr><td>商品名称</td><td>商品单价</td><td>购买数量</td><td>&nbsp;&nbsp;</td></tr><?phpsession_start();include("../fengzhuang/DBDA.class.php");$db = new DBDA();$uid = $_SESSION["uid"];$arr = array();if(!empty($_SESSION["gwc"])){$arr = $_SESSION["gwc"];}foreach($arr as $k=>$v){$sql = "select * from fruit where ids ='{$v[0]}' ";$attr =$db->Query($sql);echo"<tr><td>{$attr[0][1]}</td><td>{$attr[0][2]}</td><td>{$v[1]}</td><td><a href='shanchu.php?sy={$k}'>删除</a></td></tr>";}
?>    
</table>
<div>
<a href="tijiao.php?ids='{$v[0]}'">提交订单</a>
</div></body>
</html>

效果如图所示:

然后做提交页面 :tijiao.php

 

<?phpsession_start();
include("../fengzhuang/DBDA.class.php");
$db = new DBDA();date_default_timezone_set('PRC') ;
$uid=$_SESSION["uid"];
$sye="select account from login where username ='{$uid}' ";
$aye=$db->Query($sye);
$aye[0][0];//余额$attr =array();
if(!empty($_SESSION["gwc"]))
{$attr =$_SESSION["gwc"];
}$sum = 0;//总价
foreach($attr as $v)
{$v[0];//水果代号$v[1];//数量$sql = "select price from fruit where ids='{$v[0]}'";$ajg = $db->Query($sql);$dj = $ajg[0][0];//单价$sum +=$dj*$v[1];}//判断余额是否满足购买
if($aye[0][0]>=$sum)
{//余额满足,判断库存foreach($attr as $v){$skc = "select name,number from fruit where ids='{$v[0]}'";$akc = $db->Query($skc);$akc[0][1];//库存//判库存是否满足if($akc[0][1]<$v[1]){echo"{$akc[0][0]}库存不足";exit;}}//提交订单//账户扣除余额$skcye = "update login set account=account-{$sum} where username ='{$uid}'";$db->Query($skcye,0);//扣除库存foreach($attr as $v){$skckc = "update fruit set number = number-{$v[1]} where ids ='{$v[0]}'";$db->Query($skckc,0);}//添加订单$ddh = date("YmdHis");$time = time();$sdd = "insert into orders values('{$ddh}','{$uid}','{$time}')";$db->Query($sdd,0);//添加订单详情foreach($attr as $v){$sddxq ="insert into orderdetails values('','{$ddh}','{$v[0]}','$v[1]')";$db->Query($sddxq,0);}
}
else
{echo"余额不足";exit;
}
header("location:main.php");

然后看看数据库有没有改变:

李四的账户余额已经减少了

 

转载于:https://www.cnblogs.com/shenzikun1314/p/6529624.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_710686.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式 IOT 汽车 航空 AI 领域从IP到片上系统SOC信息检索网站 DR

http://www.design-reuse.cn/ 从IP到片上系统以及物联网 450家供应商的16,000个IP核 200供应商的1000多个SoC解决方案 http://www.design-reuse.cn/ About Design and Reuse Design & Reuse (D&R) was founded in October, 1997 by Gabriele Saucier and Philippe…

大型网站高并发——服务器负载均衡设计

大型网站高并发——服务器负载均衡设计 方案一&#xff1a;直接路由方式(LVS-DR) 硬件配置&#xff1a;一台负载均衡器&#xff0c;两台或则三台TOMCAT服务器 WEB服务器配置&#xff1a;Linux tomcat WEB应用程序(JAVA) 工具 LVS技术介绍&#xff1a;它是通过修改数据包的目…

37个自学网站,一年让你省下十几万

37个自学网站&#xff0c;一年让你省下十几万 一.综合类 1、学堂在线 学堂在线运行了包括包括清华大学、北京大学、复旦大学、斯坦福大学、麻省理工学院、加州大学伯克利分校等国内外几十所顶尖高校的优质课程。 2、MOOC网 中国大学MOOC(慕课)是爱课程网携手云课堂打造的在线…

网站引入特殊字体

先获取这些字体文件 然后添加css /*引入字体&#xff08;pt-din-condensed-cyrillic&#xff09;*/ font-face {font-family: pt;src: url(../font/pt/pt-din-condensed-cyrillic.eot);src: url(../font/pt/pt-din-condensed-cyrillic.eot?#iefix) format(embedded-opentype),…

企业简约网站模板

这个模板使用许多场景&#xff0c;比如团队公益网站、公司网站等等&#xff0c;网站风格简洁大方&#xff0c;高端上档次&#xff0c;许多地方改一改就好了&#xff0c;不会改的私信我。 这是整个模板的文件&#xff0c;可以去我的资源下载—>>>企业网站通用模板 首…

有这几个编程利器网站,再也不愁学习

工欲善其事&#xff0c;必先利其器&#xff0c;有好的武器才能打更好的仗&#xff0c;今天给大家分享一些程序员学习必备的编程学习网站。像谷歌、知乎、B站、各大博客csdn、掘金、思否这些家喻户晓的网站这里就不再进行介绍啦&#xff0c;相信大家可能一直在使用。今天给大家介…

网站项目上线当晚,后端的同事被打了...

事情是这样的&#xff1a;今天我们公司的后端说他接口写完了&#xff0c;并分享了一个接口文档给我。用的就是 Swagger UI 自动生成的那种接口文档&#xff0c;就像这种&#xff1a;这种 Swagger UI文档我每次看着就头大&#xff0c;毛病多多查看多级模型时要一级级点开在接口数…

django不修改数据库创外键_【实战演练】Python+Django网站开发系列03-Django初始配置与静态Index页面开发...

#本文欢迎转载&#xff0c;转载请注明出处和作者。1、Django配置前面已经将开发环境准备好了&#xff0c;可以开始进行静态网页的开发。先介绍一下django的目录与文件结构&#xff0c;有几个文件需要重点掌握的&#xff1a;settings.py #用来配置django项目的基本信息的&#x…

大数据平台网站日志分析系统

1&#xff1a;大数据平台网站日志分析系统&#xff0c;项目技术架构图&#xff1a; 2&#xff1a;大数据平台网站日志分析系统&#xff0c;流程图解析&#xff0c;整体流程如下&#xff1a; ETL即hive查询的sql; 但是&#xff0c;由于本案例的前提是处理海量数据&#xff0c;因…

大型网站技术架构(一)--大型网站架构演化(转)

http://blog.csdn.net/chaofanwei/article/details/26865169 看完了有一本书&#xff0c;就应该有所收获&#xff0c;有所总结&#xff0c;最近把《大型网站技术架构》一书给看完了&#xff0c;给人的印象实在深刻&#xff0c;再加上之前也搞过书本上讲的反向代理和负载均衡以及…

大型网站技术架构(四)--网站的高性能架构(转)

http://blog.csdn.net/chaofanwei/article/details/27168603 网站性能是客观的指标&#xff0c;可以具体体现到响应时间、吞吐量、并发数、性能计数器等技术指标。 1、性能测试指标 1.1 响应时间 指应用执行一个操作需要的时间&#xff0c;指从发出请求到最后收到响应数据所需要…

小心错误使用EasyUI 让网站性能减半

先不谈需求&#xff0c;和系统架构&#xff0c;直接上来就被抛来了一个问题----基础性能太差了&#xff0c;一个网页打开要好几秒。我了个天&#xff0c;我听了也简直不敢相信&#xff0c;难道是数据量特别大&#xff1f;还是其中业务逻辑特别复杂&#xff1f; 简单的介绍下&am…

大型网站技术架构(五)--网站高可用架构(转)

网站的可用性&#xff08;Avaliability&#xff09;描述网站可有效访问的特性。 1、网站可用性的度量与考核 网站不可用时间&#xff08;故障时间&#xff09;故障修复时间点-故障发现&#xff08;报告&#xff09;时间点 网站年度不可用时间&#xff08;1-网站不可用时间/年度…

大型网站技术架构(六)--网站的伸缩性架构(转)

网站系统的伸缩性架构最重要的技术手段就是使用服务器集群功能&#xff0c;通过不断地向集群中添加服务器来增强整个集群的处理能力。“伸”即网站的规模和服务器的规模总是在不断扩大。 1、网站架构的伸缩性设计 网站的伸缩性设计可以分成两类&#xff0c;一类是根据功能进行物…

大型网站技术架构(七)--网站的可扩展性架构(转)

http://blog.csdn.net/chaofanwei/article/details/29191073 扩展性是指对现有系统影响最小的情况下&#xff0c;系统功能可持续扩展或提升的能力。 设计网站可扩展架构的核心思想是模块化&#xff0c;并在此基础上&#xff0c;降低模块间的耦合性&#xff0c;提供模块的复用性…

大型网站技术架构(八)--网站的安全架构(转)

从互联网诞生起&#xff0c;安全威胁就一直伴随着网站的发展&#xff0c;各种Web攻击和信息泄露也从未停止。常见的攻击手段有XSS攻击、SQL注入、CSRF、Session劫持等。 1、XSS攻击 XSS攻击即跨站点脚本攻击&#xff08;Cross Site Script&#xff09;&#xff0c;指黑客通过篡…

网站(前端、后端)性能(架构)优化手段

网站的性能测试 性能测试是性能优化的前提&#xff0c;也是性能优化结果的检查和度量标准。温馨提示&#xff1a;本文内容有点长&#xff0c;请耐心看完或者先收藏。 性能测试的常用指标&#xff1a; 响应时间并发数目吞吐量。常用的吞吐量指标&#xff1a;①TPS(每秒事务数)…

ASP.NET Core 2.0 使用支付宝PC网站支付

概述 支付宝有比较多的支付产品&#xff0c;比如当面付、APP支付、手机网站支付、电脑网站支付等&#xff0c;本次讲的是电脑网站支付。详细 代码下载&#xff1a;http://www.demodashi.com/demo/11730.html 前言 最近在使用ASP.NET Core来进行开发&#xff0c;刚好有个接入支付…

基于Python-Flask实现的网站例子

概述 使用Flask写的体育网站 包括&#xff08;注册 论坛 文章评论 组建战队 后台管理&#xff09;等功能 示例地址文中有写 萌新 请多指教详细 代码下载&#xff1a;http://www.demodashi.com/demo/12380.html 项目示例地址: 网站演示 一、环境搭建 1. 安装配置python3.6 示例网…

JavaScript 编程精解 中文第三版 二十一、项目:技能分享网站

二十一、项目&#xff1a;技能分享网站 原文&#xff1a;Project: Skill-Sharing Website 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了《JavaScript 编程精解&#xff08;第 2 版&#xff09;》 If you have knowledge, let others l…