首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

PHP/ASP 實現類似主機屋的服務器選購計價系統

     編輯:程式設計疑難解答

需求分析

用戶在頁面選擇產品配置(CPU、內存、硬盤、帶寬等),系統即時計算價格,提交訂單後數據存入數據庫(偏好 MDB/Access),無需複雜用戶系統,僅需計價、結算、存儲。

架構設計

  1. 前端:HTML + JavaScript(或 jQuery/Vue)動態計算總價,<select>、<input type="radio"> 綁定價格數據屬性 data-price。
  2. 後端:PHP 或 ASP 接收表單,驗證數據,寫入 Access (.mdb) 或 MySQL。
  3. 數據庫:orders 表存訂單主信息;order_items 存選中的配置明細;products 表維護可選項及單價。

關鍵代碼片段 (PHP + PDO)

<?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();
?>

前端即時計價 (Vanilla JS)

<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 併發性能差,建議遷移 SQLite 或 MySQL。
  • 價格邏輯後端必須再算一遍,防止前端篡改。
  • 訂單號生成策略:時間戳 + 隨機數或數據庫自增 ID。

總結

拆分表單、前端即時計價、後端驗證入庫,配合 Access/MySQL 即可快速構建輕量級選購系統。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved