質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Framework

Frameworkは、アプリケーションソフトを開発する際に、一般的な機能をより簡単に、より早く完了させる事を目的とした、ソフトウェアやライブラリのセットを指します。開発にフレームワークを使用する事で、追加で必要となる機能だけを開発するだけで済む為、開発効率の向上が見込めます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

Q&A

解決済

1回答

2544閲覧

ネットショップシステムでカート追加時に更新ボタンを押すと数量が増えてしまいます

hidepon

総合スコア206

Framework

Frameworkは、アプリケーションソフトを開発する際に、一般的な機能をより簡単に、より早く完了させる事を目的とした、ソフトウェアやライブラリのセットを指します。開発にフレームワークを使用する事で、追加で必要となる機能だけを開発するだけで済む為、開発効率の向上が見込めます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

0グッド

0クリップ

投稿2016/11/13 04:27

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);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

POST処理のレスポンスでは VIEW を返さない。
つまり redirect して VIEW 表示用のアクションをするのが基本です。(forwardやchainではない)

投稿2016/11/13 04:44

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hidepon

2016/11/13 06:41

ご回答を頂き有難うございます。 なんとなくわかったような気がしないでもないのですが、もう少し詳しく教えて頂けるでしょうか? POST処理のレスポンスでは VIEW を返さない。 とはどういうことでしょうか?? 申し訳ございませんが、よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2016/11/13 13:07

VIEWを返さずにredirectを行うんです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問