You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP购物车中显示商品名称而非ID并展示商品价格

问题

我通过教程实现了PHP添加购物车功能,但点击商品页的添加购物车按钮后,购物车页面显示的是商品ID而非商品名称。同时我希望能在购物车页面展示商品价格。

用户提供的相关代码:

产品页PHP代码

<?php
session_start();
if (isset($_GET["pro_id"])) {
  $proid = $_GET["pro_id"];
  if (!empty($_SESSION["cart"])) {
    $acol = array_column($_SESSION["cart"], "pro_id");
    if (in_array($proid, $acol)) {
      $_SESSION["cart"][$proid]["qty"] += 1;
    } else {
      $item = [
        "pro_id" => $_GET["pro_id"],
        "qty" => 1,
      ];
      $_SESSION["cart"][$proid] = $item;
    }
  } else {
    $item = [
      "pro_id" => $_GET["pro_id"],
      "qty" => 1,
    ];
    $_SESSION["cart"][$proid] = $item;
  }
} ?>

产品卡片HTML代码

<div class="card">
  <div class="card-body">
    <h5 class="card-title">Laptop</h5>
    <p class="card-text">$200</p>
    <a href="index.php?pro_id=2" class="btn btn-success">Add to Cart</a>
  </div>
</div>

购物车页PHP代码

<?php
if (isset($_SESSION['cart'])) :
  $i = 1;
  foreach ($_SESSION['cart'] as $cart) :
?>
  <tr class="text-center">
    <td><?php echo $i; ?> # </td>
    <td> Product <?= $cart['pro_id']; ?></td>
    <td>

解决方案

核心问题是购物车会话中只存储了商品ID和数量,缺少名称与价格数据,以下分两种场景给出修改方案:

方案1:从数据库读取商品信息(推荐)

假设你有products数据表,字段包含pro_id(商品ID)、pro_name(商品名称)、pro_price(商品价格)。

1. 修改产品页PHP代码

添加数据库查询逻辑,将商品名称和价格存入购物车会话:

<?php
session_start();
// 替换为你的数据库连接信息
$conn = mysqli_connect("localhost", "数据库用户名", "数据库密码", "数据库名");

if (isset($_GET["pro_id"])) {
  $proid = $_GET["pro_id"];
  // 查询对应商品的名称和价格
  $sql = "SELECT pro_name, pro_price FROM products WHERE pro_id = '$proid'";
  $result = mysqli_query($conn, $sql);
  $product = mysqli_fetch_assoc($result);

  if (!empty($_SESSION["cart"])) {
    $acol = array_column($_SESSION["cart"], "pro_id");
    if (in_array($proid, $acol)) {
      // 仅更新数量
      $_SESSION["cart"][$proid]["qty"] += 1;
    } else {
      // 存入完整商品信息
      $item = [
        "pro_id" => $proid,
        "pro_name" => $product['pro_name'],
        "pro_price" => $product['pro_price'],
        "qty" => 1,
      ];
      $_SESSION["cart"][$proid] = $item;
    }
  } else {
    $item = [
      "pro_id" => $proid,
      "pro_name" => $product['pro_name'],
      "pro_price" => $product['pro_price'],
      "qty" => 1,
    ];
    $_SESSION["cart"][$proid] = $item;
  }
}
?>

2. 修改购物车页PHP代码

读取会话中的名称和价格并展示:

<?php
session_start(); // 必须开启会话才能读取购物车数据
if (isset($_SESSION['cart'])) :
  $i = 1;
  foreach ($_SESSION['cart'] as $cart) :
?>
  <tr class="text-center">
    <td><?php echo $i; ?> # </td>
    <td><?= $cart['pro_name']; ?></td>
    <td>$<?= number_format($cart['pro_price'], 2); ?></td>
    <td><?= $cart['qty']; ?></td>
    <td>$<?= number_format($cart['pro_price'] * $cart['qty'], 2); ?></td>
  </tr>
<?php
  $i++;
  endforeach;
endif;
?>

方案2:通过URL参数传递(仅测试/临时场景)

如果暂时没有数据库,可以在添加购物车的链接中直接携带名称和价格参数:

1. 修改产品卡片HTML代码

更新链接参数,补充商品名称和价格:

<div class="card">
  <div class="card-body">
    <h5 class="card-title">Laptop</h5>
    <p class="card-text">$200</p>
    <a href="index.php?pro_id=2&pro_name=Laptop&pro_price=200" class="btn btn-success">Add to Cart</a>
  </div>
</div>

2. 修改产品页PHP代码

接收URL参数并存入会话:

<?php
session_start();
if (isset($_GET["pro_id"], $_GET["pro_name"], $_GET["pro_price"])) {
  $proid = $_GET["pro_id"];
  $proName = $_GET["pro_name"];
  $proPrice = $_GET["pro_price"];

  if (!empty($_SESSION["cart"])) {
    $acol = array_column($_SESSION["cart"], "pro_id");
    if (in_array($proid, $acol)) {
      $_SESSION["cart"][$proid]["qty"] += 1;
    } else {
      $item = [
        "pro_id" => $proid,
        "pro_name" => $proName,
        "pro_price" => $proPrice,
        "qty" => 1,
      ];
      $_SESSION["cart"][$proid] = $item;
    }
  } else {
    $item = [
      "pro_id" => $proid,
      "pro_name" => $proName,
      "pro_price" => $proPrice,
      "qty" => 1,
    ];
    $_SESSION["cart"][$proid] = $item;
  }
}
?>

3. 修改购物车页PHP代码

与方案1的购物车代码一致,直接读取pro_name和pro_price字段即可。


内容的提问来源于stack exchange,提问作者Fatima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 02:37:51