『PHPとMySQL Web開発』の素晴らしい場所収録
5269 ワード
1、SESSIONで作ったカートを配列し、isbn対応本の数を二次元配列として保存する
$new GETはカートに値を入れ、submitは数量を修正し、提出したフォームは、元の配列を遍歴することでisbnに対応して最新の数量を修正します.
配列の運用が巧みである.コレクション
2、number_format()関数-千桁区切りで数値をフォーマットします(これが好きです.価格がはっきり見えます)
最初のパラメータのみが指定されている場合、
2つのパラメータを指定すると、
4つのパラメータが提供される場合、
千桁をカンマで区切るのに慣れていない場合は、次のようにします.
$chinese_format_number = number_format($number, 2, '.', ''); //1234.57
3、MySQLトランザクション、データベース操作が多い場合、データを一致させるために、すべて実行してから実行する必要があります
$db->autocommit(false); 開始、オートコミットモードのオフ
$db->commit();まとめて提出する
$db->autocommit(true); オートコミットモードをオンにする
$new GETはカートに値を入れ、submitは数量を修正し、提出したフォームは、元の配列を遍歴することでisbnに対応して最新の数量を修正します.
配列の運用が巧みである.コレクション
1 if ($new) {
2 if (!isset($_SESSION['cart'])) {
3 $_SESSION['cart'] = array();
4 $_SESSION['items'] = 0;
5 $_SESSION['total_price'] = '0.00';
6 }
7
8 if (isset($_SESSION['cart'][$new])) {
9 $_SESSION['cart'][$new]++;
10 }else{
11 $_SESSION['cart'][$new] = 1;
12 }
13
14 $_SESSION['total_price'] = calculate_price($_SESSION['cart']);
15 $_SESSION['items'] = calculate_items($_SESSION['cart']);
16 }
17
18 if ($_POST['submit']) {
19 foreach ($_SESSION['cart'] as $isbn => $qty) {
20 if ($_POST[$isbn] == '0') {
21 unset($_SESSION['cart'][$isbn]);
22 }else{
23 $_SESSION['cart'][$isbn] = $_POST[$isbn];
24 }
25 }
26 $_SESSION['total_price'] = calculate_price($_SESSION['cart']);
27 $_SESSION['items'] = calculate_items($_SESSION['cart']);
28 }
29
30 //
31 function calculate_price($cart){
32 $db = db_connect();
33 $total_prices = 0.00;
34 foreach ($cart as $isbn => $qty) {
35 $query = "select price from books where isbn = '".$isbn."'";
36 $result = $db->query($query);
37 $price = $result->fetch_assoc();
38 $prices = $price['price'] * $qty;
39 $total_prices += $prices;
40 }
41 return $total_prices;
42 }
43
44 //
45 function calculate_items($cart){
46 $db = db_connect();
47 $total_qty = 0;
48 foreach ($cart as $isbn => $qty) {
49 $total_qty += $qty;
50 }
51 return $total_qty;
52 }
2、number_format()関数-千桁区切りで数値をフォーマットします(これが好きです.価格がはっきり見えます)
最初のパラメータのみが指定されている場合、
number
の小数部は削除され、各千桁の区切り文字は英語の小文字カンマです.2つのパラメータを指定すると、
number
は小数点以下の桁数を設定した値に保持し、残りは同じ階に残ります.4つのパラメータが提供される場合、
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); オートコミットモードをオンにする