《PHP和MySQL Web开发》精彩的地方收录

时间:2024-10-15 14:07:08

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); 开启自动提交模式