很久没有上论坛了,一直牵挂着。项目结束之际,我上来冒个泡泡谈一下项目中的订单部分感受。
功能主要是
商品点击量:在商量打开页面时,点击量加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
标题
关键词
描述调用
安全措施
防注入
高级搜索,搜索时关键词变红,防百度(已完成)
修改注册时邮编采用正规与字符替换两种方式(已完成)
分享到:
相关推荐
安装系统时无raid驱动处理方法 在安装系统时,可能会遇到无法识别到硬盘的困扰,即使查看服务器硬件均无异常,且从 BIOS 或者 RAID 配置界面中能正常看到 RAID 信息及硬盘信息,但是在安装系统时却无法识别到硬盘。...
exFAT的主要优势在于它能处理非常大的单个文件,并且在处理大量小文件时效率更高。它支持更大的卷大小和文件大小,不像FAT32有文件大小的限制。 2. **ko扩展名**: 在Linux系统中,"ko"通常代表"kernel object",...
SAP系统在建工程内部订单操作手册 本手册主要介绍了SAP系统在建工程内部订单的操作流程,包括创建内部订单、批准作业、内部订单过账、内部订单结算到在建工程、在建工程结转到固定资产等步骤。 一、创建内部订单并...
5. **系统启动自动加载**:为了使系统启动时自动加载OV5642驱动,可以在`/etc/modules`文件中添加ko文件名,这样每次启动系统时都会自动加载该驱动。 在实际操作中,可能会遇到一些常见问题,如驱动不兼容、I/O错误...
"rtl"是Realtek的缩写,".ko"是Linux内核模块的标准扩展名,表明这是一段编译过的内核代码,可以在运行时动态加载到内核中,或者在系统启动时自动加载。 关于8188EU驱动的详细知识点: 1. **Realtek 8188EU芯片**...
USBIP是一种开源软件,用于将USB设备通过网络连接到远程系统。这个技术允许用户将物理上连接在一台计算机(称为“服务器”)上的USB设备共享给另一台计算机(称为“客户端”),就像这些设备直接连接在客户端上一样...
Linux系统中的USB-TTL模块是连接微控制器或其他设备与计算机之间通信的重要接口。这个压缩包“linux-USB-TTL.zip_CP210x”包含了针对Linux和Android平台的USB到UART(通用异步接收发送器)转换器的驱动程序,如CH341...
【kovetskiy-ko.zip】是一个开源项目,它的核心是`ko`工具,这个工具在软件开发领域,特别是前端构建和部署过程中扮演着重要角色。`ko`通常指的是Ko-Builder,一个用于快速构建和打包Node.js应用的工具。它由...
在深入探讨Linux内核模块(通常称为.ko文件)的编译过程之前,我们先来了解几个关键概念:内核模块、GCC以及Android系统与Linux的关系。 ### 内核模块 内核模块是Linux内核的可加载组件,用于扩展内核的功能而无需...
通过配置GPIO为中断触发模式,当外部设备改变GPIO状态时,内核会触发中断,然后调用预先注册的中断处理函数。 5. **GPIO测试**:`gpio-test_jdq`可能是针对GPIO功能的一个测试程序或脚本,用于验证`gpio.ko`驱动的...
在IT行业中,无线网络连接设备的驱动程序是操作系统与硬件通信的关键部分,Rt5370就是一个典型的无线网卡芯片。"Rt5370 脚本和.ko文件"指的是针对这款芯片的驱动程序包,包含了用于安装、配置和管理Rt5370无线网卡的...
在Linux系统,特别是CentOS环境下,安装和使用VMware虚拟机时,可能会遇到需要编译内核模块的情况,比如`vmmon.ko`。这个模块是VMware Workstation或VMware Player运行所必需的,它允许虚拟化软件与主机操作系统进行...
标题中的“wifi-wlan.ko”是一个Linux内核模块,主要负责无线局域网(WLAN)的功能。在Linux系统中,驱动程序通常以“ko”(kernel object)文件的形式存在,它们是编译后的内核模块,可以动态加载到内核中,以支持...
在Linux系统中,驱动程序是操作系统与硬件设备之间的桥梁,它们负责向内核提供与特定硬件设备交互的接口。在嵌入式系统中,由于资源有限,驱动程序的编写和管理更为关键。本主题主要围绕如何在Linux下为嵌入式系统...
文档的目的在于指导用户理解并执行SAP系统中的项目立项管理操作,特别是对于三类项目的特殊处理。这份手册适用于XXXX集团的SAP项目组成员,旨在确保他们能有效地创建和管理投资程序定义,从而实现集团的信息化管理...
EasyUI 和 Knockout.js(ko)的结合使用在Java开发中常常被用来构建高效、响应式的用户界面。EasyUI 是一款基于 jQuery 的前端框架,提供了一系列的组件和样式,如表格、表单、对话框等,帮助开发者快速构建美观的...
在Linux系统中,驱动程序通常以模块的形式存在,便于加载和卸载。"hello.ko" 是一个简单的内核模块示例,它用于初学者学习内核编程和模块开发。这个压缩包包含两种不同的 `Makefile` 文件,它们都是为了构建 "hello....
【标题】"kingzhexian ko-kr" 可能是指一个与韩国文化和传统日历相关的项目或资源,其中"ko-kr"是语言代码,代表韩语(韩国)。这可能是一个程序、软件或者数据库,专门处理韩国的阴历(Lunisolar Calendar)信息。 ...
标题 "uvcvideo.ko" 指向的是一个内核模块,它是USB Video Class (UVC) 驱动程序的一部分,常用于处理来自USB摄像头的视频流。在Linux系统中,`.ko` 扩展名代表 "kernel object",意味着这是一个可以直接加载到内核...
ERP中内部订单用来规集... 期末处理:可将日常内部订单规集的成本费用在期末进行重分配(Tcode:KSW1/KSW5)或结算(Tcode:KO88)到目标成本对象,这些成本对象包括订单/项目/成本中心/网络/资产/Co-PA的获利段/费用科目等。