欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[原创]订单系统处理时销量自增自减|项目小感|34期KO战队房子

程序员文章站 2022-07-16 13:50:22
...
很久没有上论坛了,一直牵挂着。项目结束之际,我上来冒个泡泡谈一下项目中的订单部分感受。
功能主要是
  商品点击量:在商量打开页面时,点击量加1更新到数据库就可以了,这个没有难的,
  商品销量:销量的话如果在前台订单提交成功就处理,就有点不合适,因为订单产生,并不代表支付成功,所以我把销量处理放到了后台,订单管理里面的发货处理时执行。

数据库部分表:
  商品表goods
  订单表orders
  订单详情表xiangqing
关联性:
xiangqing.orderid=orders.id
xiangqing.goodsid=goods.id
思路:
  就像初中学习的几何证明题目一样,从两端向中间推理。
不要急着想如何一次性写出SQL语句来,
先写出最终的SQL语句,如果实现需要那些值。
再根据现有的条件能查出什么来,这里面的字段有没有其它库里面的,如果有还有根据这个如何查询?(累了就不展开写了,直接给代码)
<?php
session_start();
//判断用户是否登陆,没有登陆则跳转登陆界面
if(empty($_SESSION['loginuser'])){
//跳转登陆界面
header("Location:login.php");
//退出
exit();
}
//1 导入配置信息
require '../public/conn.php';
//2连接MYSQL,选择数据库
$link=@mysql_connect(HOST,USER,PASS) or die ('连接数据库失败');
mysql_select_db(DB,$link);
$nosend=$_GET['nosend'];//获取取消发货订单的ID
$send=$_GET['send'];//获取已发货订单的ID
if($send && $send!=""){//确保提交的有值存在
$sql="update orders set stats='1' where id={$send}";//构造sql语句
$result=mysql_query($sql,$link);//更新发货状态

if(mysql_affected_rows($link)>0){//判断影响的行数,也就是更改状态是否成功。
//统计出订单下有多少商品数量
$sqla="select count(goodsid) from xiangqing where orderid=26";
$rea=mysql_query($sqla,$link);
$sum=mysql_result($rea,0,0);

//循环出详情表中的商品ID,并查询出原商品的数量相应递增递减
$i=0;
for($i=0;$i<$sum;$i++){
//查询订单表中商品ID下的商品ID与数量
$sqlb="select goodsid,num from xiangqing where orderid=26";
$reb=mysql_query($sqlb,$link);
$goodsid=mysql_result($reb,$i,0);//将订单表中商品ID赋值给GOODSID
$num=mysql_result($reb,$i,1);//将订单表中商品数据赋值给NUM

//查询GOODS表中历史销量
$sqlc="select salenum from goods where id=$goodsid";
$rec=mysql_query($sqlc,$link);
$salenum=mysql_result($rec,0,0);//确保ID的唯一性

//销量处理
$salenum+=$num;

//将处理的结果写回数据库
$sqld="update goods set salenum=$salenum where id=$goodsid";
mysql_query($sqld,$link);

//如果更新成功则返回销量处理成功,否则返回假。
if(mysql_affected_rows($link)>0){//这步条件不足 问老师
echo "<script>alert('处理成功!');window.location='orderlist.php'</script>";
}
}
}else{
echo "<script>alert('处理失败!');window.location='orderlist.php'</script>";
}
}

if($nosend && $nosend!=""){
$sql="update orders set stats='0' where id={$nosend}";
mysql_query($sql,$link);

if(mysql_affected_rows($link)>0){
//统计出订单下有多少商品数量
$sqla="select count(goodsid) from xiangqing where orderid=26";
$rea=mysql_query($sqla,$link);
$sum=mysql_result($rea,0,0);

//循环出详情表中的商品ID,并查询出原商品的数量相应递增递减
$i=0;
for($i=0;$i<$sum;$i++){
//查询订单表中商品ID下的商品ID与数量
$sqlb="select goodsid,num from xiangqing where orderid=26";
$reb=mysql_query($sqlb,$link);
$goodsid=mysql_result($reb,$i,0);//将订单表中商品ID赋值给GOODSID
$num=mysql_result($reb,$i,1);//将订单表中商品数据赋值给NUM

//查询GOODS表中历史销量
$sqlc="select salenum from goods where id=$goodsid";
$rec=mysql_query($sqlc,$link);
$salenum=mysql_result($rec,0,0);//确保ID的唯一性

//销量处理
$salenum-=$num;

//将处理的结果写回数据库
$sqld="update goods set salenum=$salenum where id=$goodsid";
mysql_query($sqld,$link);

//如果更新成功则返回销量处理成功,否则返回假。
if(mysql_affected_rows($link)){//这步条件不足 问老师
echo "<script>alert('处理成功!');window.location='orderlist.php'</script>";
}
}
}else{
echo "<script>alert('处理失败!');window.location='orderlist.php'</script>";
}
}

ps:项目赶完了,身体也感冒了,兄弟们要注意身体呀!

接来下要项目加强的内容有:


SEO
标题
关键词
描述调用
安全措施
防注入 

高级搜索,搜索时关键词变红,防百度(已完成)

修改注册时邮编采用正规与字符替换两种方式(已完成)