簡體   English   中英

從 SQL 數據庫到購物車數組的數據

[英]Data from a SQL database to an array for a shopping cart

我正在嘗試將從 SQL 數據庫中檢索到的數據傳遞到$_SESSION數組,以便向用戶顯示購物車。 我認為信息實際上並沒有被傳遞,程序最終顯示但它給了我空白字段。 作為參考,我正在嘗試通過多個 PHP 文件傳遞數據。 此外,一旦我傳遞了信息,我不確定我將如何循環所說的 $_SESSION 數組用戶添加多個項目。

我不確定問題是通過我的indexinclude()還是我在product_list中的form action 但是在某個地方,要么數據沒有通過,要么它不像我認為的那樣工作。

這是我的product_list中最初發送數據的代碼

foreach ($products as $product)  : ?>
                <tr>

                    <td><?php echo $product['productID']; ?></td>
                    <td><?php echo $product['productName']; ?></td>
                    <td class="right"><?php echo $product['price']; ?></td>
                    <td><form action="../Cart/index.php" method="post">
                        <input type="hidden" name="action"
                               value="add_product">
                        <input type="hidden" name="product_name"
                               value="<?php echo $product['productName'];?>"> 
                        <input type="hidden" name="product_price"
                               value ="<?php echo $product['price'];?>">
                        <input type="submit" value="Add to Cart">
                    <?php endforeach; 

這是我的index中包含購物車的代碼

if ($action == 'add_product') 
{   

    include('../Cart/index.php');
}

這是我在購物車路徑中的```索引中的代碼

$action = 'add_to_cart';


if(!isset($_SESSION['cart']))
{
    $_SESSION['cart'] = array();
}

if($action == 'add_to_cart')
{
    $cart_product_name = filter_input(INPUT_GET, 'product_name');
    $cart_product_price = filter_input(INPUT_GET, 'product_price', FILTER_VALIDATE_FLOAT);
    $product = array('price' => $cart_product_price, 'name' => $cart_product_name);
    $_SESSION['cart'][] = $product; 
   include('cart_view.php');
}

這就是$_SESSION數組應該顯示的地方

<main>
        <h1>Your Cart</h1>
        <link rel='stylesheet' type="text/css" href="main.css">
        <?php
            print_r($_SESSION['cart'][0]);
        ?>  

實際顯示的是這個Array ( [price] => [name] => )

我看到的第一個問題是您的輸入名稱不正確。 每個產品名稱輸入當前都是 name="product_name",product_price 也是如此。 您需要將這些作為數組傳遞,或者每個都有自己的唯一鍵。 否則,您將獲得 product_name 和 product_price 的一個帖子值 - 這將是表單中帶有這些名稱的最后輸入的任何內容。

您可以通過 name="product_name[]" 將它們作為數組傳遞,然后您的帖子將包含所有這些值的數組,按照它們在表單中出現的順序。

接下來,您說您的 output 當前是 Array ( [price] => [name] => )。 這向我表明您的 session 實際上正在工作,因為您在該數組中有鍵。 所以實際上設置 session 不是問題。 那么你 go 回到設置 session 的位置,並看到你在 filter_input 參數中使用 INPUT_GET - 但你正在接收 POST 值。 您的參數不應該是 INPUT_GET,而應該是 INPUT_POST。

一旦你把所有的東西都弄清楚了,你仍然會遇到問題,因為 product_name 和 product_price 的輸入將是 arrays 具有多個值。 您需要遍歷它們以組裝設置為 session 的最終數組。 我將把它留給你去探索,因為這看起來與你當前在 add_to_cart 操作中所做的完全不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM