1、用SESSION来做的购物车,做成数组,用isbn对应书的数量作为二维数组保存

$new GET传值加入购物车,submit是修改数量,提交后的表单,通过历遍原来的数组,对应isbn修改最新的数量

对数组的运用很巧妙。收藏下来

   if ($new) {
if (!isset($_SESSION['cart'])) {
$_SESSION['cart'] = array();
$_SESSION['items'] = 0;
$_SESSION['total_price'] = '0.00';
} if (isset($_SESSION['cart'][$new])) {
$_SESSION['cart'][$new]++;
}else{
$_SESSION['cart'][$new] = 1;
} $_SESSION['total_price'] = calculate_price($_SESSION['cart']);
$_SESSION['items'] = calculate_items($_SESSION['cart']);
} if ($_POST['submit']) {
foreach ($_SESSION['cart'] as $isbn => $qty) {
if ($_POST[$isbn] == '0') {
unset($_SESSION['cart'][$isbn]);
}else{
$_SESSION['cart'][$isbn] = $_POST[$isbn];
}
}
$_SESSION['total_price'] = calculate_price($_SESSION['cart']);
$_SESSION['items'] = calculate_items($_SESSION['cart']);
} //计算购物车里商品总价
function calculate_price($cart){
$db = db_connect();
$total_prices = 0.00;
foreach ($cart as $isbn => $qty) {
$query = "select price from books where isbn = '".$isbn."'";
$result = $db->query($query);
$price = $result->fetch_assoc();
$prices = $price['price'] * $qty;
$total_prices += $prices;
}
return $total_prices;
} //计算购物车里商品总数量
function calculate_items($cart){
$db = db_connect();
$total_qty = 0;
foreach ($cart as $isbn => $qty) {
$total_qty += $qty;
}
return $total_qty;
}

2、number_format()  函数 — 以千位分隔符方式格式化一个数字(我挺喜欢这个,价格看的清楚

如果只提供第一个参数,number的小数部分会被去掉 并且每个千位分隔符都是英文小写逗号","

如果提供两个参数,number将保留小数点后的位数到你设定的值,其余同楼上

如果提供了四个参数,number 将保留decimals个长度的小数部分, 小数点被替换为dec_point,千位分隔符替换为thousands_sep

如果不习惯千位用逗号分隔的,可以下面这样

$chinese_format_number = number_format($number, 2, '.', '');   // 1234.57

3、MySQL事务,有很多数据库操作的时候,为了保持数据一致,需要全部执行通过才会执行

$db->autocommit(false);  开始,关闭自动提交模式

$db->commit();结束,统一提交

$db->autocommit(true); 开启自动提交模式

《PHP和MySQL Web开发》精彩的地方收录的更多相关文章

  1. 《PHP与MySQL WEB开发》读书笔记

    <PHP与MySQL WEB开发>读书笔记 作者:[美]Luke Welling PHP输出的HereDoc语法: echo <<<theEnd line 1 line ...

  2. PHP和MySQL Web开发 原书第4版 高清文字版,有目录,附带源码

    PHP和MySQL Web开发  原书第4版:http://yunpan.cn/QCWIS25zmYTAn  提取码 fd9b PHP和MySQL Web开发  原书第4版源码:http://yunp ...

  3. PHP和MySQL Web开发(原书第4版) 高清PDF+源代码

    PHP和MySQL Web开发(原书第4版) 高清PDF+源代码 [日期:2014-08-06] 来源:Linux社区  作者:Linux [字体:大 中 小]     内容简介 <PHP和My ...

  4. PHP和MySQL Web开发学习笔记介绍

    前言 从2016年2月1日开始,之后的几个月左右的时间里,我会写一个系列的PHP和MySQL Web开发的学习笔记.我之前一直从事Java语言的开发工作,最近这段时间非常想学习一门语言,就选择了PHP ...

  5. 《PHP和MySQL Web开发》读书笔记(下篇)

    又与大家见面了.继续<PHP和MySQL Web开发>的总结. Chapter8.设计Web数据库 ·回去看看数据卡那本书吧,这里就不累赘谈这个东西. Chapter9.创建Web数据库 ...

  6. PHP和MySQL Web开发 经典书籍

    <PHP和MySQL Web开发> PHP and MySQL Web Development“使用PHP和MySQL构建数据库驱动的Web应用程序的权威指南” 笔者推荐 PHP和MySQ ...

  7. 《php和mysql web开发》读书笔记

    总算是强迫自己把第一篇给看完了,在这里做一个小结,将一些知识点记录下来. 一.第一篇 使用PHP 1.php中的注释.php支持c.c++和shell脚本风格注释 /**/多行注释  //单行注释   ...

  8. 《PHP和MySQL Web开发》读书笔记(上篇)

    最近过得太浮躁了,实在自己都看不下去了,看了PHP圣经之后,觉得非常有必要要总结一下. Chapter1.快速入门 ·PHP标记:总共有三种风格,常用的还是XML风格为主 <?php echo ...

  9. PHP和MySQL.Web开发(原书第4版)学习盲点笔记

    1.浏览器输出中文乱码解决: <?php header("Content-type: text/html; charset=utf-8"); ?> 相当于html中的: ...

随机推荐

  1. 属性通知之INotifyPropertyChanged

    为什么后台绑定的值改变了前台不发生变化了? 针对这个初学者很容易弄错的问题,这里介绍一下INotifyPropertyChanged的用法 INotifyPropertyChanged:用于绑定属性更 ...

  2. oracle 本地使用命令导入数据到远程主机

    第一步:装载oracle客户端 第二部:配置tnsnames.ora. db_172.21.1.7 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST ...

  3. Java Script基础(五) 内置对象Date

    在JavaScript中,系统的内置对象有Date对象.Array对象.String对象和Math对象等. 1.Date:用于操作日期和时间. 2.Array:用于在单独的变量名中存储一系列的值. 3 ...

  4. input[type='submit']input[type='button']button等按钮在低版本的IE下面,去掉黑色边框的问题

    今天做一个tabs效果的时候,发现上面的button在低版本下会出现黑色的边框,很难看,于是我整理了下几个去掉黑色边框的办法: 1.在button的外层嵌套一个div,设置button的border: ...

  5. BI中PowerDesigner建模

    PowerDesigner下载: http://pan.baidu.com/share/link?shareid=296749&uk=1479845243

  6. hdu 4081 最小生成树+树形dp

    思路:直接先求一下最小生成树,然后用树形dp来求最优值.也就是两遍dfs. #include<iostream> #include<algorithm> #include< ...

  7. selenium判断元素类型

    在做级联的下拉框时发现第一次选择了下拉框(如省份),第二个下拉框可能是输入框,也可能是下拉框,这个时候就需要判断他的元素类型,来做判断 图1 图2 原理很简单:获取控件的html文件内容,拿到内容后在 ...

  8. backbone.Router History源码笔记

    Backbone.History和Backbone.Router history和router都是控制路由的,做一个单页应用,要控制前进后退,就可以用到他们了. History类用于监听URL的变化, ...

  9. 常用的Linux系统调用命令

    常用的Linux系统调用命令   下面一些函数已经过时,被新的更好的函数所代替了(gcc在链接这些函数时会发出警告),但因为兼容的原因还保留着,这些函数将在前面标上“*”号以示区别.   一.进程控制 ...

  10. Part 97 Performance of a multithreaded program

    class Program { static void Main(string[] args) { Stopwatch s = new Stopwatch(); s.Start(); EvenNumb ...