用戶在頁面選擇產品配置(CPU、內存、硬盤、帶寬等),系統即時計算價格,提交訂單後數據存入數據庫(偏好 MDB/Access),無需複雜用戶系統,僅需計價、結算、存儲。
<select>、<input type="radio"> 綁定價格數據屬性 data-price。.mdb) 或 MySQL。orders 表存訂單主信息;order_items 存選中的配置明細;products 表維護可選項及單價。<?php
// config.php
$dsn = "odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:/data/orders.mdb;";
$pdo = new PDO($dsn);
// submit.php
$items = $_POST['items']; // ['cpu'=>'i5-12400', 'ram'=>'16G', ...]
$total = 0;
$stmt = $pdo->prepare("INSERT INTO orders (total, created_at) VALUES (?, NOW())");
$pdo->beginTransaction();
$stmt->execute([$total]);
$orderId = $pdo->lastInsertId();
$stmtItem = $pdo->prepare("INSERT INTO order_items (order_id, item_key, item_value, price) VALUES (?,?,?,?)");
foreach ($items as $key => $val) {
$price = getPrice($key, $val); // 查 products 表
$total += $price;
$stmtItem->execute([$orderId, $key, $val, $price]);
}
$pdo->exec("UPDATE orders SET total=$total WHERE id=$orderId");
$pdo->commit();
?>
<select id="cpu" data-price="800"><option value="i5">i5 (¥800)</option>...</select>
<span id="total">¥0</span>
<script>
document.querySelectorAll('[data-price]').forEach(el =>
el.addEventListener('change', calcTotal)
);
function calcTotal() {
let sum = 0;
document.querySelectorAll('[data-price]:checked, [data-price] option:checked').forEach(opt =>
sum += parseFloat(opt.dataset.price)
);
document.getElementById('total').textContent = '¥' + sum;
}
</script>
拆分表單、前端即時計價、後端驗證入庫,配合 Access/MySQL 即可快速構建輕量級選購系統。