-3

重複の可能性:
Php ショッピング カート - 製品の種類ごとの数量ごとのサイズと長さ

こんにちは私は以前にこの質問をここに投稿し、いくつかの返信をしましたが、スクリプトが台無しになっている原因をまだ理解できません....

ページ order.php にショッピング カートがあります。店舗がそのオンライン セクションからドレスを購入できるようにするための会社の小売セクションです。したがって、複数のドレスがあり、人々は任意の数のドレスを選ぶことができます. さらに、そのショッピングスクリプトには、ドレスのサイズと長さを変更する場所があります.

現在、ドレスを注文する際、注文ごとにシングルサイズとシングルレングスを選択できます.例:ドレスAを4個注文した場合、そのドレスAのサイズとレングスは1つだけ選択できます.

今私が実装したいのは、ドレスAの4つの数量を注文すると、ドレス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']),

数量を変更した後に更新ボタンを押しても更新されません..1のままです...

今、どこにどのコードを追加すればよいのか本当にわかりません。私は混乱しています。私を助けてください

4

1 に答える 1

1

あなたの質問で私が見ることができることから、あなたはあなたが持っているコード全体を投稿し、人々にそれをデバッグするように求めています.

私はあなたの欲求不満を理解しています、私は何度もそこにいましたが、あなたはコピーペーストであなたのケースを助けません. コードを調べてみましたが、インデントがなく、無数のヘッダー リダイレクトがあり、基本的にデバッグすることも、何が起こっているのかを理解することも非常に困難です。読みやすくするために編集しようとさえしましたが、10分後にあきらめました.

コードを小さなチャンクに分割すると、自分で解決策を見つけることができます

あなたの質問に対して:あなたができることは、サーバー側のチェックまたはクライアントのチェックを行うことです

クライアントのチェック:

  • 4 行 (数量 4) を追加して、ユーザーが各アイテムのサイズを選択できるようにすることができます。送信中にユーザーからデータを取得したら、数量をマージできます。
  • サイズ 40 の数量 4 を追加できますが、数量から 1 つのアイテムを削除し、ユーザーが新しいサイズを追加できるように新しい品目を作成するボタン (これも Javascript です) を提供することもできます。

サーバーチェック:

  • ユーザーにサイズを選択してもらい、それが完了したら、注文のアイテムごとに異なるサイズのページを提供します。

どのアプローチを取るかはあなた次第です。

追伸: データベース アクセスをmysqliまたはに変更することを検討してくださいPDOmysql廃止されました。このサイトには、その方法に関するリソースがたくさんあります。

于 2012-12-24T18:58:57.967 に答える