🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

PHP

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

Q&A

解決済

2回答

302閲覧

特定のcookieの値があった場合に取得・表示する方法

Roo

総合スコア55

Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

PHP

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

0グッド

0クリップ

投稿2019/10/29 03:42

##前提
ECサイト作成中(課題)
カートの処理をtableではなく、cookieで実現しています。
商品選択時に、商品IDと数量をcookieに格納し(上限10件)

・買い物継続(cookieに格納しリダイレクト):完了
・購入処理へ(cookieに格納し、特定の情報があた場合、取得表示):ここ!

##現状
cookieに値を格納(以下の形)で実施した場合の、値の取り出し方

if(!isset($_COOKIE["cartdata1"])){ setcookie('quantity1',$_POST['cnt']); setcookie('cartdata1',$_SESSION['product_id']); header("Location: cart.php"); exit(); }else if(!isset($_COOKIE["cartdata2"])){ setcookie('quantity2',$_POST['cnt']); setcookie('cartdata2',$_SESSION['product_id']); header("Location: cart.php"); exit(); }else if(!isset($_COOKIE["cartdata3"])){ setcookie('quantity3',$_POST['cnt']); setcookie('cartdata3',$_SESSION['product_id']); header("Location: cart.php"); exit(); }else if(!isset($_COOKIE["cartdata4"])){ setcookie('quantity4',$_POST['cnt']); setcookie('cartdata4',$_SESSION['product_id']); header("Location: cart.php"); exit(); }else if(!isset($_COOKIE["cartdata5"])){ setcookie('quantity5',$_POST['cnt']); setcookie('cartdata5',$_SESSION['product_id']); header("Location: cart.php"); exit(); // ~10件分省略 }else if(!isset($_COOKIE["cartdata11"])){ header("Location: cartmax.php"); exit(); }

上記の様に、格納しています。

if (isset($_SESSION["product_id"])) { //※1 $pid = $_SESSION["product_id"]; try{ $dbh = new PDO($dsn, $user, $password); echo "接続成功"; $sql = 'SELECT * FROM product'; $statement = $dbh -> query($sql); $sql = "SELECT * FROM product WHERE product_id = '$pid'"; //※2 $statement = $dbh -> query($sql); //レコード件数取得 $row_count = $statement->rowCount(); while($row = $statement->fetch()){ $rows[] = $row; } /* foreach ($statement as $row) { $rows[] = $row; } */ //データベース接続切断 $dbh = null; } catch (PDOException $e){ print('Error:'.$e->getMessage()); die(); } }

##疑問点

※1
現在は特定のpidで判定していますが、
pid(商品ID)で取り出す際に、cookieの中の情報(存在している。cartdata1~10)
を指定しその値をもって商品テーブルから、取得表示させたいです。

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

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

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

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

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

m.ts10806

2019/10/29 04:29

何の課題かわかりませんけど、宿題のようなものでしたらご自身で対応すべきですし、宿題代行のようなものはそもそも非推奨です。ですので、回答依頼にも応えかねます。 それに「疑問点」の項には要望しか書かれていません。 課題丸投げの形になっているので、なおのことよろしくないですね。
Roo

2019/10/29 04:55

誤解を生むような文面失礼しました。 考え方としては正しいのですが、 本件何をしてもよいとの条件のもとですので、 こちらで質問をさせていただきました。 「疑問点」の質問の仕方については、失礼しました。 再度思考しこちらで投げようと考えておりまます。 ご指摘ありがとうございました。
Roo

2019/10/29 06:16

本件疑問点の変更により、一旦クローズとさせていただきます。 ご協力いただいた方々ありがとうございました。
m.ts10806

2019/10/29 06:17

疑問点部分は質問編集すれば良いのではないかと…
guest

回答2

0

カートの処理をtableではなく、cookieで実現しています。

カートはcookieではなくセッションでデータを保持してください
(一部更新しました)

投稿2019/10/29 03:52

編集2019/10/29 03:59
yambejp

総合スコア116661

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

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

kyoya0819

2019/10/29 03:55

途中で切れてしまってます。 おそらくteratail側のバグなので編集で改行を追加して再投下してください。
Roo

2019/10/29 04:10

yambejp様 課題の折り合いでcookieとなっておりますゆえ、なんとも。 (一部更新しました)←これって何ですかね??
Roo

2019/10/29 04:12

asuchi0819様 いらないと思われる部分は抜粋しております。 どのあたりのコードが必要でしょうか?
kyoya0819

2019/10/29 04:36 編集

Rooさん すみません。yambejpさんに対するコメントです。 > (一部更新しました) これは、teratailのバグで反映されていなかったところを反映されるために再度未編集投稿をしなければいけないのですが仕様上できないので追記して再度投稿したものと考えられます。
yambejp

2019/10/29 04:39

>(一部更新しました)←これって何ですかね?? 中途半端にアップロードされてしまった回答を 更新しましたという意味です。(わかりづらくて失礼しました)
Roo

2019/10/29 04:50

なるほどです。 すみませんありがとうございます。
guest

0

ベストアンサー

※1で、$_SESSION["product_id"]から取得しているのを、$_COOKIE["cartdata1"]$_COOKIE["cartdata10"]のどれか(値の設定されているものすべて?)にすればよいだけでは?

投稿2019/10/29 04:21

Y.H.

総合スコア7918

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

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

Roo

2019/10/29 04:58

そこがわからないので質問した次第なのですが、 他のコメントにもあるように、質問が稚拙なため、 こちらで、修正後再度質問させていただきます。 ご指摘ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問