0

私は簡単な問題を抱えています.ショッピングカートの削除ボタンがあり、カートにある最後の製品を除いて、コードは常に機能します. ユーザーが addtoCart ボタンを押すと URL がリロードされ?buyproduct=$productNumber、削除ボタンが押されると商品が削除されます。そうですね、すべて問題ありませんが、最後の項目を削除しようとすると、URL に含まれる製品を読み続けます。そのため、現在の数量は 1 のまま$productNumberです。

フォーム メソッド タグにアクションを追加して、ページが なしでリロードされるようにしましたが?buyproduct=$productNumber、これは機能しますが、URL にも含まれていたページ番号とセクションがあり、これらもリセットされます。

?buyproduct=$productNumberが URL から削除されると (たとえば、カタログの別のセクションに移動した場合に発生する可能性があります)、カートが完全に空になる可能性があるため、削除が機能していることはわかっています。

4

2 に答える 2

0

フォームの actionを変更する代わりに、既存の action が何をするかを調べるのが賢明です。これは、 GET変数 を設定または設定解除するのと同じくらい簡単なようです。

フォームのアクションで指定されたスクリプトからいくつかのコードを投稿できますか?

于 2010-01-01T14:13:15.790 に答える
0

明らかに、商品削除フォームの送信は、FORM アクションが商品をカートに再度追加しようとしているという事実によって相殺されています。おそらく最も簡単な解決策は、 FORM アクションにスイッチを追加して、そのセクションを完全にスキップして?remove=1、 のケースを処理する前に確認できるようにすることです。buyproduct

ただし、不要な GET 変数がサーバーに送信されているため (主にbuyproduct)、これは最もクリーンなソリューションではないことに注意してください。これに対する回避策は、フォーム アクションのクエリ文字列を単純に再生成することです。

// allowed keys is used to sanitize GET data by only allowing a predefined
// set of keys to be submitted with the form
$allowed_keys = array('page' => true, 'limit' => true, 'othervar' => true);
$str = 'path_to_form_action.php?';
foreach ($_GET as $k => $v) {
    if (isset($allowed_keys[$k])) {
        $str .= $k . '=' . $v . '&';
    }
}
$str = substr($str, 0, -1);

次に、FORM アクションとして使用$strします。

<form action="<?php echo $str; ?>" method="GET">
于 2010-01-01T14:43:39.430 に答える