//提交订单
function add_order(){
session_start();
// var_dump($_SESSION);
// die();
// session_destroy();
// die(); $ary =$_POST['order'];
$ary= json_decode($ary, true);
// var_dump($data1);
// die(); $shop_list = $ary['order'];
$total_money = $ary['order_money'];
$obj =UserModel::getInstance();
//获得user_id
$user_id = $_SESSION['uid'];
//获得对应的cart_id
$sql = "select id from cart where user_id = '$user_id'";
$cart_id = $obj->getOne($sql); // $arr = $_SESSION['gwc'];
foreach($shop_list as $k=> $shop){
// var_dump($k);
// die();
// 获取对应商品的订单金额
$xiaoji = $ary[$k]; // 获取8位随机值作为order_id $strs="QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm";
$random=substr(str_shuffle($strs),mt_rand(0,strlen($strs)-11),8);
$order_id = strval(time())."$random";
//插入一条订单
$sql = "INSERT INTO orders(id,user_id,xiaoji) VALUES ('$order_id', '$user_id',$xiaoji)";
$obj->exec($sql);
// die();
// echo "$sql";
// die();
foreach($shop as $sid=> $sku_id){ // 拼接sku_id
// $sku_id = "$goods_id"."_"."$color_id"."_"."$size_id";
$number ="num_$sku_id";
$price = "price_$sku_id";
$num = $ary[$number];
$pay_price = $ary[$price];
//插入一条sku_orders记录
$sql = "INSERT INTO orders_sku(sku_id,orders_id,num,pay_price) VALUES ('$sku_id','$order_id',$num,$pay_price)";
// echo("$sql");
// die();
$obj->exec($sql); // $sql = "select count(*) from cart_sku";
// echo("$sql");
// die();
// $_SESSION["goods_number"] = $obj->getOne($sql);
$_SESSION["goods_number"]--; $sql = "delete from cart_sku where sku_id = '$sku_id' and cart_id = '$cart_id'";
// echo("$sql");
// die();
$obj->exec($sql); } } echo "OK";
exit; // die(); }
json_decode($ary, true);这句是把ajax方式传过来的json串,转为php的数组数组形式,还有一种是转为对象。

 

$strs="QWERTYUIOPASDFGHJKLZXCVBNM1234567890qwertyuiopasdfghjklzxcvbnm";
$random=substr(str_shuffle($strs),mt_rand(0,strlen($strs)-11),8);

上面两句是从str字符串(包含大小写和数字)获取一个8位的随机值。


$order_id = strval(time())."$random";这句是使用时间戳和一个随机值拼接形成订单的id。


json字符串转为php数组,使用随机字符串生成订单号(学生笔记)的更多相关文章

  1. 字符串、bute[]数组和十六进制字符串的相互转换

    1.字符串转换成十六进制字符串 public static String str2HexStr(String str) { if (EncodingUtil.isEmpty(str)) { retur ...

  2. java 如何对由json对象构成的数组形式的字符串进行遍历?

      1.情景展示 现在已知字符串为: [{"name":"微微笑","img":"http://zos.alipayobjects ...

  3. C#将MD5后的字符串转为字符数据,随机大小写

    一如下代码 public static string GenerateCode(Guid id, DateTime endTime, string Type) { string str = id + ...

  4. JavaScript字符串和字符数组

    字符串 字符串与字符数组: 字符串:var a = 'ddd'; 字符数组:var arr = 'f','o','o' 相同点: 1.都是类数组 2.都有length属性 3.都有indexOf()和 ...

  5. 【C#】字符串与字符数组

    字符串与字符数组的相互转换. 字符串转换成字符数组: string ss="abcdefg"; char[] cc=ss.ToCharArray();     字符数组转换成字符串 ...

  6. (C#)生成指定长度的随机字符串的通用方法

    .NET(C#)生成指定长度的随机字符串的通用方法,此方法可以指定字符串的长度,是否包含数字,是否包含符号,是否包含小写字母,是否包含大写字母等, 源码: #region 生成指定长度的随机字符串 / ...

  7. php json字符串转为数组或对象

    从网上查到的方法是 用get_object_vars 把类类型转换成数组 然后在用foreach  遍历即可 $array = get_object_vars($test); $json= '[{&q ...

  8. JSON字符串转为JSON对象

    在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是对象,所以,JSON对象(js对象)和JSON字符串之间的相互转换是关键. JSON可以有两种格式,一种是对象格式的,另一种是数 ...

  9. json对象转为字符串,当做参数传递时加密解密

    [son对象  字符串 互相转行] 比如我有两个变量,我要将a转换成字符串,将b转换成JSON对象: var a={"name":"tom","sex ...

随机推荐

  1. Cisco学习记录(二):路由及网络设备配置

    本篇我们利用cisco packet tracer搭建一个简单的网络.我们在左下方的设备中尝试选择创建两个4321路由器和一个3560-24PS Multilayer交换机,然后在左下方的电缆线中选择 ...

  2. fjnu2019第二次友谊赛 B题

    ### 题目链接 ### 题目大意: 给你一个 n * m 的地图以及小蛇蛇头的初始位置,告诉你它会往 上.下.左.右 四个方向走.若在走的过程中(包括结束时)会使得小蛇越界,则输出 "Ga ...

  3. C sharp #004# 进度条与Timer

    饮水思源:金老师的自学网站 C#实现进度条异常简单,因为所有东西都已经封装好了. 只需要简单的拖拽: 写两行代码就完工了: private void timer1_Tick(object sender ...

  4. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU量产神器RT-Flash常见问题

    对于MCUBootUtility,RT-Flash工具,有任何使用上的问题,可以在本博客下留言,也可以扫码加入QQ交流群.

  5. javascript模块化开发(二)

    模块化开发(一) ES6模块化 详解 ES6 的模块自动采用严格模式,不管你有没有在模块头部加上"use strict". 顶层的this指向undefined,即不应该在顶层代码 ...

  6. Linux下使用 github+hexo 搭建个人博客02-hexo部署到Github Pages

    之前的这篇文章<Linux下使用 github+hexo 搭建个人博客01-hexo搭建>,相信大家都知道怎么搭建 hexo ,怎么切换主题,并且完成了一篇博文的创建,以及 MarkDow ...

  7. Django2.1集成xadmin管理后台所遇到的错误集锦,解决填坑(二)

    django默认是有一个admin的后台管理模块,但是丑,功能也不齐全,但是大神给我们已经集成好了xadmin后台,我们拿来用即可,但是呢,django已经升级到2.1版本了,xadmin貌似跟不上节 ...

  8. 如何确定UNDO_RETENTION参数的值以避免ORA-1555 (Doc ID 822411.1)

    How to Determine the Value Of UNDO_RETENTION Parameter to Avoid ORA-1555 (Doc ID 822411.1) APPLIES T ...

  9. Linux-3.14.12内存管理笔记【构建内存管理框架(5)】

    前面已经分析了内存管理框架的构建实现过程,有部分内容未完全呈现出来,这里主要做个补充. 如下图,这是前面已经看到过的linux物理内存管理框架的层次关系. 现着重分析一下各个管理结构体的成员功能作用. ...

  10. LInux:服务的管理-systemctl

    使用systemctl管理服务 服务的启动与停止 服务的启动与停止 命令格式:systemctl 选项 服务名 选项说明: start:启动;stop:停止:restart:重启:status:服务状 ...