簡體   English   中英

使用PHP POST數組數據創建收據

[英]Create a receipt using PHP POST array data

我正在學習PHP,並嘗試制作一個簡單的購物車/處理腳本。

我創建的商品購物車很好,但是當用戶承諾購買其購物車中的商品時,我無法在收據中顯示信息。

為了節省空間/時間,我省略了我的物品清單和購物車的生成,如果需要,可以在這里找到它們。

這是將數據發布到我的checkout.php腳本cart.php的PHP (已更新以反映更改)

<?php 
session_start(); ?>
<form name="cart" id="cart" action="checkout.php" target='_blank'
    method='post'>
    <h1>Your Cart:</h1>
    <table>
        <tr>
            <td><span class='title'>ID</span></td>
            <td><span class='title'>Product</span></td>
            <td><span class='title'>Price</span></td>
        </tr>
        <?php
// Set a default total
$total = 0;
foreach ( $_SESSION['cart'] as $cartid ) {
    ?>
        <tr>
            <td width="20%">
                <?php echo $cartid; ?> <input type="hidden" name="id[]"
                value="<?php echo $cartid; ?>">
            </td>
            <td width="100%">
                <?php echo $title?>
                <input type="hidden" name="title[]" value="<?php echo $title; ?>">
            </td>
            <td width="100%">$<?php echo $price;?>
                <input type="hidden" name="prices[]" value="<?php echo $price; ?>">
            </td>
        </tr>
        <?php
    $total += $price;
} // end foreach
?>
        <tr>
            <td>Total</td>
            <td></td>
            <td>$<?php echo $total; ?></td>
        </tr>
    </table>
    <input type="submit" value="Buy" class="submit-button" />
</form>

checkout.php(已更新以反映更改)

<table>
    <tr>
        <th>ID</th>
        <th>Product</th>
        <th>Price</th>
    </tr>
    <?php
foreach($_POST['ids'] as $id) {
  echo "  
  <tr>
    <td>$id</td>
    <td>$_POST['titles'][$id]</td>
    <td>$_POST['prices'][$id]</td>
  </tr>
  ";
}

?>
    <tr>
        <td>Total</td>
        <td></td>
        <td>$</td>
    </tr>
</table>

我似乎無法讓foreach循環讀取商品ID,標題或價格。 我可以看到正在使用print_r($ _ POST);傳​​遞數組; 但是它將每個項目索引為一個新的數組項目,例如:

Array
(
[checkout] => Array
    (
        [0] => A123
        [1] => Item1
        [2] => 1000 
        [3] => Z999
        [4] => Item999
        [5] => 9999  
    )
)

如何以更有意義的方式發布信息,即關聯數組。 然后使用該關聯數組以類似表格的形式顯示信息嗎?

預期產量

<table>
  <tr>
    <th>ID</th>
    <th>Product</th>
    <th>Price</th>
  </tr>
  <tr>
    <td>A123</td>
    <td>Item1</td>
    <td>$1000</td>
  </tr>
  <tr>
    <td>Z999</td>
    <td>Item999</td>
    <td>$9999</td>
  </tr>
  <tr>
    <td>Total</td>
    <td></td>
    <td>$10999</td>
  </tr>
</table>

注意:這只是一個學習練習,因此不需要數組清理,也不需要SQL。

編輯:更新以反映@Obsidian年齡建議,現在獲取解析錯誤

您的所有商品在HTML中都具有相同的name屬性:

<input type="hidden" name="checkout[]">

您將需要三個不同的命名變量來提交,其中一個是特定交易的ID:

<input type="hidden" name="ids[]">
<input type="hidden" name="titles[]">
<input type="hidden" name="prices[]">

然后,您可以遍歷每個項目並將其添加到相應的數組中:

$titles = [];
$prices = [];
foreach($_POST['ids'] as $id) {
  array_push($titles, $_POST['titles'][$id]);
  array_push($prices, $_POST['prices'][$id]);
}

或直接輸出:

foreach($_POST['ids'] as $id) {
  $title = $_POST['titles'][$id];
  $price = $_POST['prices'][$id];
  echo "  
  <tr>
    <td>$id</td>
    <td>$title<td>
    <td>$price</td>
  </tr>
  ";
}

希望這可以幫助! :)

暫無
暫無

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

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