【问题标题】:value from database not appearing into php数据库中的值没有出现在 php 中
【发布时间】:2019-05-02 14:06:51
【问题描述】:

我使用 sql、html 和 php 创建了一个购物车网站。购物车按钮如下:

<form method="post" action="cart.php" class="form-inline">
<input type="hidden" value="' . $product['id'] . '" name="product_id">
<input type="hidden" value="add_to_cart" name="add_to_cart">
<button type="submit" name="id" value="12" class="btn btn-primary">Add to Cart</button>
</form>

这是我的购物车的样子:

<div class="card">
        <h5 class="card-header">My Cart</h5>
            <div class="card-body">

                <?php
                    if(isset($_SESSION['shopping_cart']) && count($_SESSION['shopping_cart']) > 0)
                    {
                        $entertainment = $_SESSION['shopping_cart'];

                        echo '
                                <table class="table table-hover table-bordered">
                                <thead>
                                    <tr>
                                    <th scope="col">#</th>
                                    <th scope="col">Title</th>
                                    <th scope="col">Quantity</th>
                                    <th scope="col">Price</th>
                                    <th scope="col" width="100">Action</th>
                                    </tr>
                                </thead>';

                        $item_number = 1;
                        $total = 0;
                        foreach ($entertainment as $product) {
                        echo '
                                <tbody>
                                    <tr>
                                    <th scope="row">'. $item_number .'</th>
                                    <td>' . $product['title'] . '</td>
                                    <td>'.$product['quantity'].'</td>
                                    <td>$ '. $product['offer_price_corporate_artist']. '</td>
                                    <td>
                                        <a href="cart.php?id_to_remove=' . $item_number . '" class="btn btn-danger btn-sm">X</a>
                                    </td>
                                    </tr>
                                </tbody>
                           ';
                           $total += ($product['offer_price_corporate_artist'] * $product['quantity']);
                            $item_number++;
                        }

                        echo '
                                <tr>
                                    <th colspan="4" align="right">
                                        Total:
                                    </th>
                                    <td>
                                        $ '. $total .'
                                    </td>
                                </tr>
                                </table>';

                    }
                    else {
                        echo '<div class="alert alert-primary" role="alert">
                              Shopping cart is empty, visit <a href="index.php" class="alert-link">products</a> page to add product into shopping cart.
                            </div>';
                    }
                ?>

library.php文件如下:

<?php

// load database connection script

include("database_connection.php");

/*
 * Tutorial: PHP MySQL Shopping cart
 *
 * Page: Application library
 * */

class ShopingCart
{



    protected $db;

    function __construct()
    {
        $this->db = DB();
    }

    /**
     * get products list
     *
     * @return array
     */
    public function getProducts()
    {
        $query = "SELECT *  FROM `entertainment`";
        if (!$result = mysqli_query($this->db, $query)) {
            exit(mysqli_error($this->db));
        }
        $data = [];
        if (mysqli_num_rows($result) > 0) {
            while ($row = mysqli_fetch_assoc($result)) {
                $data[] = $row;
            }
        }

        return $data;
    }

    /**
        * get given product details
        *
        * @param [integer] $id
        * @return array
        */
       public function getProductDetails($id)
       {
           $id = mysqli_real_escape_string($this->db, $id);
           $query = "SELECT *  FROM `entertainment` WHERE `id` = '$id'";
           if (!$result = mysqli_query($this->db, $query)) {
               exit(mysqli_error($this->db));
           }
           $data = [];
           if (mysqli_num_rows($result) > 0) {
               while ($row = mysqli_fetch_assoc($result)) {
                   $data['id'] = $row['id'];
                   $data['title'] = $row['title'];
                   $data['price'] = $row['offer_price_corporate_artist'];
                   $data['quantity'] = 1;
               }
           }

           return $data;
       }

       /**
        * Add new product into the cart
        *
        * @param [integer] $id
        * @return void
        */
       public function addToCart($id)
       {
           $product = $this->getProductDetails($id);

           $isFound = false;
           $i = 0;

           if (!isset($_SESSION['shopping_cart']) || count($_SESSION['shopping_cart']) < 1)
           {
               $_SESSION['shopping_cart'] = array(0 => $product);
           } else {

               foreach ($_SESSION['shopping_cart'] as $item) {
                   $i++;
                   foreach ($item as $key => $value) {
                       if ($key == "id" && $value == $id) {
                           array_splice($_SESSION['shopping_cart'], $i - 1, 1, array([
                               'id' => $item['id'],
                               'title' => $item['title'],
                               'price' => $item['offer_price_corporate_artist'],
                               'quantity' => $item['quantity'] + 1,
                           ]));
                           $isFound = true;
                       }
                   }

               }
               if ($isFound == false) {
                   array_push($_SESSION['shopping_cart'], $product);
               }
           }

       }

       /**
        * remove existing product from the cart
        *
        * @param [integer] $id
        * @return void
        */
       public function removeProductFromCart($id)
       {
           unset($_SESSION['shopping_cart'][$id - 1]);
       }


}

?>

问题是当我将商品添加到购物车时,我可以显示标题和购物车。但我无法显示价格,其字段名称为我的数据库中的 offer_price_corporate_artist。谁能告诉我我错过了什么。

【问题讨论】:

  • &lt;input type="hidden" value="' . $product['id'] . '" name="product_id"&gt; 应该是 &lt;input type="hidden" value="&lt;?= $product['id']; ?&gt;" name="product_id"&gt;
  • 您的购物车模型将offer_price_corporate_artist 放入$data['price'] = $row['offer_price_corporate_artist'];
  • @RiggsFolly 如何解决它
  • 使用&lt;td&gt;$ '. $product['price']. '&lt;/td&gt;
  • 小注如果您的查询将只返回一行,则无需在 WHILE 循环中编写 FETCH 代码

标签: javascript php html css sql


【解决方案1】:

您的购物车模型将offer_price_corporate_artist 列作为重命名事件price 放入返回的数组中

$data['price'] = $row['offer_price_corporate_artist'];

所以在其他脚本中替换

<td>$ '. $product['offer_price_corporate_artist']. '</td>

<td>$ '. $product['price']. '</td>

小警告

不幸的是,getProducts() 方法不会将该列重命名为 price,因此您会遇到一些异常情况,这会导致您在某处出现问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2020-07-29
    相关资源
    最近更新 更多