私は小さなショッピングカートを構築しています。現在、支払いページに進む前に各商品の在庫を確認するチェックアウト機能を実装しようとしています。jsonを使用してjquery配列をPHPに渡します
このwhileループは、「ショッピングカート」テーブルから各列が表示されている:そのwhileループにおいて
while ($row = $result->fetch()) {
echo '<table class="cart-row" cellspacing="0" cellpadding="0" width="100%">';
echo '<tbody>';
echo '<tr>';
echo '<td width="75"><img border="0" width="59px" height="78px" title="" alt="" src=' . $row["ImagePath"] .'></td>';
echo '<td width="203"><span class="itemElements itemName">'. $row["Name"] .'</span></td>';
echo '<td width="203"><input type="submit" class="btnMinus linkbtnType2" value="-"><input type="submit" class="btnPlus linkbtnType2" value="+"></td>';
echo '<td width="135"><span class="qtyNum">('. $row["Qty"] .')</span> <br />';
echo '<input type="hidden" name="ProductId" class="ProductId" value='.$row["ProductId"].' />';
echo '<span class="qtyRemoveLink"><input type="submit" class="btnRemove linkbtn" value="Remove"></td>';
echo '<td width="180"><span class="itemElements orderStatus">In Stock Usually dispatched within 24 hours</span></td>';
echo '<td width="175" class="itemPriceRow"><span id="itemPrice">€ '. $row["Price"]* $row["Qty"] .'</span></td>';
echo '</tr>';
echo '</tbody>';
echo '</table>';
echo '<br>';
}
隠れた入力ボタンの値は、商品コードがそれに対応してロードされている行を返しました。
今私は、ページ内のすべてのprocuctId値を読み込んで配列に格納するjQueryメソッドを持っています。
$('#btnCheckout').click(function() {
var productId = new Array();
var j = 0;
$(".ProductId").each(function() {
productId[j] == $(this).val();
j++;
});
$.ajax({
type: "POST",
url: "functions/checkProductStock.php",
data: {
productId: JSON.stringify(productId)
},
success: function (msg) {
alert(msg);
}
})
})
この方法は、その後、PHPメソッドにこれらの値を渡します。
<?php include "../config.php" ?>
<?php
$productIds = json_decode($_POST['productId']);
var_dump($productIds);
//foreach loop that iterate through an array containing the product IDs and exexcutes the below method.
foreach ($productIds as $productId)
{
$CartDAL = new CartDAL();
$result = $CartDAL->get_ProductInCartById($productId, $_SESSION["username"]);
$result = $ProductsDAL->get_ProductById($productId);
$rowProduct = $result->fetch();
//Get Product Quatity Form Cart
$qty = $row["Qty"];
//Get Product Stock
$stock = $rowProduct["AvailableStock"];
if($qty <= $stock)
{
$CartDAL->remove_ProductInCart($productId, $_SESSION["username"]);
}
else
{
echo $rowProduct["Name"].' is out of stock!';
}
}
?>
どういうわけか、私は放火犯にこのメソッドに渡される値だけを使用しているときはproductId=%5B%5D
です。 FYIに渡されると想定される値は1と2です。誤った値が読み取られて配列に渡される理由は何ですか?あるいは、私は上記の方法で間違いを犯しましたか?
生成されたHTMLを生成するPHPではなく表示できますか? – lonesomeday
qty <在庫があれば、このボタンは何のHTMLも生成しないことを意味しますか? –
HTMLテーブルを生成するPHP。 HTMLははるかに便利です。 ! 'PRODUCTID [] PRODUCTID [] \t 1 ' とソースは、この' PRODUCTID%5B%を示しています。 – lonesomeday