Codeigniter(3.X)というPHPフレームワークでECサイトを構築しようとしています。
商品の詳細画面で商品概要仕様を選択して「カートに入れる」を押して画面遷移をすると
選択した商品の一覧が表示されますが、
この画面で更新ボタンを押すと商品が追加されてしまいます。
それで、下記のような処理に変更したのですが。1回目だけが追加されて2回目が追加されなくなりました。
どのようにすれば更新ボタンを押しても数量が増えなくなるでしょうか?
宜しくお願いいたします。
//POSTデータ
$post_array = array();
$post_array = $this->input->post();
//SESSIONデータ
$session_array = array();
$session_array = $this->session->all_userdata();
if(!array_key_exists("pr_id",$session_array)){
$data["title"] = "商品カートに商品が登録されていません。";
$this->load->view('/header/header_012',$data);
$this->load->view('/common/parts_login',$data);
// $this->load->view('/common/parts_category_list',$data);
$this->load->view('/cart/cart_login_not_added');
$this->load->view('/common/parts_footer',$data);
return FALSE;
}
//セッションに数量を格納
$this->session->set_userdata('qty', $post_array["qty"]);
//すでにカートに登録されている内容を取得する
$contents = $this->cart->contents();
//更新ボタンを押しての重複登録防止
$error = 0;
//商品コンテンツ配列を確認して更新時のカウントアップを防ぐ
if(!empty($contents)){
foreach($contents as $key => $value){
//コンテンツの中に商品IDがあり、現状の商品IDと一致する場合、コンテンツの数値が違う場合カウントアップ
if($value["id"] == $session_array["pr_id"]){
if($value["qty"] != $post_array["qty"]){
$error++;
}
}
}
}
//更新ボタンを押していない場合
if($error == 0){
$option_array = array();
$option_price = 0;
//リバーシブル
if(array_key_exists("reversible",$post_array)){
$this->session->set_userdata('reversible', $post_array["reversible"]);
$option_array["reversible"] = $post_array["reversible"];
$price = $this->reversible->Get_Reversible_Option($post_array["reversible"]);
$option_price += $price;
}
//オプション金額を入れる
$option_array["option_price"] = $option_price;
$product_array = $this->product->Get_Product_Main_Data_Detail($session_array["pr_id"]);
$contents = array(
'id' => $session_array["pr_id"],
'qty' => $post_array["qty"],
'price' => $product_array["sale_price_ec"],
'name' => $product_array["product_name"],
'options' => $option_array,
);
//カートに登録
$this->cart->insert($contents);
}
//カート操作後の情報取得
$contents = $this->cart->contents();
//総額
$total = $this->cart->total();
//金額表示フォーマット
$data["total"] = number_format($total);
No.2
- 回答日時:
>header('location: show.php');
>みたいな感じですか?
飛び先がそこかどうかはわかりませんが、それが正しい処理です。
GETでもPOSTでもデータを渡した後リロードすれば同じ処理が実行されるのは避けられません。
登録処理後は登録完了ページに飛ばすのはよくある二重投稿の防止策です
そうではない場合は、なんらかのユニークなIDを付加して送信し
おなじIDで送られてきたリクエストは無視するというのでもよいでしょう
有難うございました。
うまくいった感じです。
テストをじっくりして確認していきます。
本当に有難うございました。
いつも有難うございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- JavaScript 2段階プルダウンで1段階目の選択を終えた後に選択ボックスを見えなくしたい 2 2022/07/05 21:58
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 1 2022/10/27 14:21
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Excel(エクセル) ワードのマクロについて教えてください。 1 2023/03/11 13:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スカラーのベクトル微分
-
PHPのセレクトボックスの初期値...
-
PHPでDBの複数行更新について
-
行列
-
MYSQLとPHPによって取得する多...
-
PHPで10連ガチャを作成したいの...
-
配列を指定した順序でソート
-
php 1桁になるまでの和 スマー...
-
C言語の配列をPush(追加)する...
-
Perlで重複行を削除したい
-
マッチング処理(1:N)
-
file_existsでファイル名の部分...
-
複数行のデータのPOST処理に関して
-
バイナリファイルの内容を、そ...
-
SESSION変数の2次元配列
-
$_SESSIONに二次元配列を使える...
-
配列を回すとき、最後の要素だ...
-
ネストが深い時のforeachはどう...
-
多次元配列を、1次元の配列にす...
-
配列をループでたくさん宣言し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スカラーのベクトル微分
-
STLのvectorで作った配列をメン...
-
特定の文からメールアドレスの...
-
配列の要素(value)に、変数を...
-
読み(あ行~わ行)ごとに分け...
-
ファイルの書き込みについて教...
-
verilogで、配列の一部をタスク...
-
CArrayの要素としてCStringArra...
-
pythonのnumpyでの繰り返しでの...
-
C言語の配列をPush(追加)する...
-
php キーソート キーが重複した...
-
CArrayのソート
-
【PHP】配列のキー名の修正は可...
-
多次元配列をエンコードする関...
-
PHPは何故値渡しより参照渡しの...
-
cakephpでのトランザクション処...
-
pg_copy_fromの使い方について...
-
array_intersectで空欄を比較し...
-
濁点のソート
-
配列中のあるキー、値を取得し...
おすすめ情報
ご返答を頂き有難うございます。
1件目の登録をしたあとに別のページにリダイレクトをするということですか?
//カートに登録
$this->cart->insert($contents);
header('location: show.php');
みたいな感じですか?
こんな処理をしたことが無くて戸惑っています。