私はPHPを学んでいて、簡単なカート/処理スクリプトを作成しようとしています。PHP POST配列データを使ってレシートを作成する
私はアイテムカートを細かく作成しましたが、ユーザーがカート内のアイテムを購入する際に領収書に情報を表示するのに問題があります。
私は自分のアイテムリストとカートの生成を省いたので、必要に応じてhereを見つけることができます。ここで
は、PHPは(変更を反映するために更新)私のcheckout.phpスクリプト cart.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>
N.B:これは単なる配列を必要としないので消毒学習運動、無SQLです。
編集:は@Obsidian年齢の勧告を反映するために更新し、あなたの項目はすべてHTMLで同じname
属性持っている今
IDに基づいてどこかから価格とタイトルを取得する必要があります。 –