[英]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.