1

一連のページをウォークスルーする販売ソフトウェアを作成しています。特定のページには販売するアイテムがリストされており、[購入]をクリックすると、基本的に非表示の変数を次のページに渡してセッション変数として設定します。最後に、呼び出しがデータベースに報告されます。ただし、雇用主は私にショッピングカートを含めることを望んでいました。このショッピングカートには、購入するアイテムの名前、SKU、価格、および削除ボタンが表示されるため、スクリプトを実行している人が戻る必要はありません。 1つのアイテムを削除するためのすべて。現時点では、カートにすべてを表示するように設定していますが、これは非常に簡単です。しかし、削除ボタンを機能させる方法がわかりません。ショッピングカートのコードは次のとおりです。

        $total = 0;
    //TEST CODE:
    $_SESSION['itemname-addon'] = "Test addon";
    $_SESSION ['price-addon'] = 10.00;
    $_SESSION ['sku-addon'] = "1234h";

    $_SESSION['itemname-addon1'] = "Test addon1";
    $_SESSION ['price-addon1'] = 99.90;
    $_SESSION ['sku-addon1'] = "1111";

    $_SESSION['itemname-addon2'] = "Test addon2";
    $_SESSION ['price-addon2'] = 19.10;
    $_SESSION ['sku-addon2'] = "123";
    //end test code


    $items = Array
    (
            "0"=> Array
            (
                "name" => $_SESSION['itemname-mo'],
                "price" => $_SESSION ['price-mo'],
                "sku" => $_SESSION ['sku-mo']
            ),
            "1" => Array
            (
                "name" => $_SESSION['itemname-addon'],
                "price" => $_SESSION ['price-addon'],
                "sku" => $_SESSION ['sku-addon']
            ),
            "2" => Array
            (
                "name" => $_SESSION['itemname-addon1'],
                "price" => $_SESSION ['price-addon1'],
                "sku" => $_SESSION ['sku-addon1']
            ),
            "3" => Array
            (
                "name" => $_SESSION['itemname-addon2'],
                "price" => $_SESSION ['price-addon2'],
                "sku" => $_SESSION ['sku-addon2']
            )

        );

    $a_length = count($items);

    for($x = 0; $x<$a_length; $x++){
    $total +=$items[$x]['price']; 
    }
    $formattedtotal = number_format($total,2,'.','');
    for($i = 0; $i < $a_length; $i++){
    $name = $items[$i]['name'];
    $price = $items[$i]['price'];
    $sku = $items[$i]['sku'];
    displaycart($name,$price,$sku);
    }
    echo "<br />
    <b>Sub Total:</b> 
    $$formattedtotal";

        function displaycart($name,$price,$sku){

            if($name != null || $price != null || $sku != null){

            if ($name == "no sale" || $price == "no sale" || $sku == "no sale"){
            echo ""; 
            }
            else{
                $formattedprice = number_format($price,2,'.','');
                echo "$name: $$formattedprice ($sku)";
                echo "<form action=\"\" method=\"post\">";
                echo "<button type=\"submit\" />Remove</button><br />";
                echo "</form>";
            }

            }
        }

したがって、この時点では、削除ボタンをここからどこに移動すればよいかわかりません。任意の提案をいただければ幸いです。

4

1 に答える 1

2

セッション変数で配列を使用できるため、形式を次のように変更できます。

$_SESSION[items][] = ("name"=>$name, "sku"=>$sku, "price"->$price)

あなたfunction displaycart()の要素を追加します

echo "<input type='hidden' name='delete_sku' value='$sku'>\n";

次に、単に削除すると、次のようになります。

$delete_sku = $_POST[delete_sku]; // the posted ID sent from delete form
$i = 0;
foreach ($_SESSION[items] as $item) {
    if ($item['sku'] == $delete_sku) {
        unset ($_SESSION[$i]);  // remove the item from the session array
    }
    $i++;
}
print_r ($_SESSION);
于 2012-09-28T15:27:02.173 に答える