-3

可能重复:
Php 购物车 - 每种产品数量的尺寸和长度

嗨,我以前在这里发布了这个问题和一些回复,但仍然无法弄清楚是什么弄乱了我的脚本......

我在 order.php 页面上有一个购物车。它是一家公司的零售部门,以便商店可以从该在线部门购买礼服。所以有多种裙子,人们可以选择任意数量的裙子。此外,在该购物脚本上,还有一个地方可以更改衣服的尺寸和长度。

目前,当您订购一件连衣裙时,您可以为每个订单选择单一尺寸和单一长度 例如:如果您订购 4 件连衣裙 A,您只能为该连衣裙 A 选择一个尺寸和长度。

现在我要实现的是当您订购 4 件连衣裙 A 时,您应该能够为每件连衣裙 A 选择长度和尺寸,这意味着 4 种长度和 4 种尺寸。也许这听起来很奇怪,但这是我非常迫切需要的东西

以下是代码:

会话初始化

session_start();

//Create 'cart' if it doesn't already exist
if (!isset($_SESSION['SHOPPING_CART'])){ $_SESSION['SHOPPING_CART'] = array(); }


//Add an item only if we have the threee required pices of information: name, price, qty
if (isset($_GET['add']) && isset($_GET['price']) && isset($_GET['qty']) && isset($_GET['size'])&& isset($_GET['length'])&& isset($_GET['code']) ){
//Adding an Item
//Store it in a Array
$ITEM = array(
//Item name
'name' => $_GET['add'],
//Item Price
'price' => $_GET['price'],
//Qty wanted of item
'qty' => $_GET['qty'],

'size' => array_fill(0, $_GET['qty'], $_GET['size']),

    'length' => array_fill(0, $_GET['qty'], $_GET['length']),

'code' => $_GET['code']
);

应该更新和存储数量、大小和长度值的部分。

foreach ($_POST['items_qty'] as $itemID => $qty) {
//If the Qty is "0" remove it from the cart
if ($qty == 0) {
//Remove it from the cart
unset($_SESSION['SHOPPING_CART'][$itemID]);
}
else if($qty >= 1) {
//Update to the new Qty
$_SESSION['SHOPPING_CART'][$itemID]['qty'] = $qty;

}
foreach ($_POST['items_size'] as $itemID => $size) {
//If the Qty is "0" remove it from the cart
if($size >= 1) {
//Update to the new Qty
$_SESSION['SHOPPING_CART'][$itemID]['size'] = $size;

}
}
foreach ($_POST['items_length'] as $itemID => $length) {
//If the Qty is "0" remove it from the cart

//Update to the new Qty
$_SESSION['SHOPPING_CART'][$itemID]['length'] = $length;


}

第三,应该显示值的部分:

<

?php
//Print all the items in the shopping cart
foreach ($_SESSION['SHOPPING_CART'] as $itemNumber => $item) {
?>
<tr align="center" id="item<?php echo $itemNumber; ?>">
<td><a href="?remove=<?php echo $itemNumber; ?>">remove</a></td>
<td><?php echo $item['name']; ?></td>
<td><?php echo $item['price']; ?></td>
<td><input name="items_qty[<?php echo $itemNumber; ?>]" type="text" id="item<?php echo $itemNumber; ?>_qty" value="<?php echo $item['qty']; ?>" size="2" maxlength="3" /></td>
<td><?php echo $item['qty'] * $item['price']; ?></td>

<td><select name="items_size[<?php echo $itemNumber; ?>]" value="<?php echo $item['size']; ?>" type="text" id="item<?php echo $itemNumber; ?>_size" >
<option selected="selected" value="<?php echo $item['size']; ?>"><?php echo $item['size']; ?></option>
<option value="2">2</option>
<option value="4">4</option>
<option value="6">6</option>
<option value="8">8</option>
<option value="10">10</option>
<option value="12">12</option>
<option value="14">14</option>
<option value="16">16</option>
<option value="18">18</option>
<option value="20">20</option>
<option value="22">22</option>
<option value="24">24</option>
<option value="26">26</option>
<option value="28">28</option>
<option value="30">30</option>

</select>
<?php
foreach ($_SESSION['SHOPPING_CART'] as $item_id => $item)
{
    echo '<p>Name: ' . $item['name'] . ' for ' . $item['price'] . '$</p>';
    foreach($item['size'] as $j => $size)
    {
        echo '<p>#' . $j . ': size ' . $size . ', length ' . $item['length'][$j] . '</p>';
    }
}
?>
<?php
$order=strtotime("now");

if($cntry == "USA" || $cntry =="United States Of America" || $cntry == "America")
{
$price=100;
}
else
{
$price=200;
}

?>
<td><select name="items_length[<?php echo $itemNumber; ?>]" type="text" select="<?php echo $item['length']; ?>" id="item<?php echo $itemNumber; ?>_length" >
<option selected="selected" value="<?php echo $item['length']; ?>"><?php echo $item['length']; ?></option>
<option value="46">46</option>
<option value="48">48</option>
<option value="50">50</option>


</select>

</tr>
<?php
}
?>

这里

 foreach ($_SESSION['SHOPPING_CART'] as $item_id => $item)
    {
        echo '<p>Name: ' . $item['name'] . ' for ' . $item['price'] . '$</p>';
        foreach($item['size'] as $j => $size)
        {
            echo '<p>#' . $j . ': size ' . $size . ', length ' . $item['length'][$j] . '</p>';
        }
    }

这部分是论坛成员之一向我建议的。

同样在将以下行添加到项目数组(第 1 部分)之后

'size' => array_fill(0, $_GET['qty'], $_GET['size']),

    'length' => array_fill(0, $_GET['qty'], $_GET['length']),

当我在更改数量后按下更新按钮时它不会更新..它保持在一个...

现在我真的不知道或不明白在哪里添加什么代码。我很困惑。请帮我

4

1 回答 1

1

从我在您的问题中可以看到,您刚刚发布了您拥有的整个代码,并要求人们对其进行调试。

我理解您的沮丧,我去过那里多次,但您无法通过复制粘贴来帮助您解决问题。我试图通过代码并且没有缩进,有无数的标题重定向,基本上很难调试它甚至理解发生了什么。我什至尝试对其进行编辑以使其更具可读性,但 10 分钟后我放弃了。

将您的代码分成更小的块,您将自己找到解决方案

对于您的问题:您可以做的是进行一些服务器端检查或客户端检查

客户端检查:

  • 您可以添加 4 行(数量 4)并允许用户选择每个项目的大小。一旦您在提交期间从用户那里获得数据,您就可以合并数量。
  • 您可以添加尺寸为 40 的数量 4,但也提供一个按钮(同样是 Javascript),该按钮将从数量中删除一个项目并创建一个新的行项目,以便用户可以添加新的尺寸。

服务器检查:

  • 让用户选择尺寸,然后在完成后为订单的每个项目提供不同尺寸的页面。

您采用哪种方法取决于您。

PS:请考虑将您的数据库访问权限更改为mysqliPDOmysql已被弃用。这个网站上有很多关于如何做到这一点的资源。

于 2012-12-24T18:58:57.967 回答