人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPのセッションに関して
http://riri.heteml.jp/mo/
言葉では伝えにくいのでサイトを提示します。まず服を選んでいただき、カートに入れてください。次にバックして違う服を選らんで下さい。この際、二種類の商品が入っていて欲しいのですが、上書きされてしまいます。
ソースは
a.php
echo $syou= '<strong>商品名:</strong>'.$row['syou'].'<br/>';
echo $kakaku='<strong>価格:</strong> '. $row['kakaku'] . '<br />';
これでDBから商品を探し出し、
<?php
session_start();
$_SESSION['gazou']=$gazou;
$_SESSION['syou']=$syou;
$_SESSION['kakaku']=$kakaku;
?>
セッション生成し、
kato.php
echo '<strong>現在の買い物カゴの中身</strong></br>';
echo $_SESSION['syou'];
echo $_SESSION['kakaku'];
このように出力しています。どう改変したら良いか分からずアドバイスをお願いしたいと思います。よろしくお願いします。

●質問者: rogotaro
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● tdoi

まず状況を把握してください。

1.初めてアクセス ($_SESSION['syou']は空);

2.片方を選んでa.phpにアクセス ($_SESSION['syou'] = 'シャツ1')

※意図とは違う気がしますが、この時点でセッションに格納されてます。

3.カートに入れるを押して、内容を表示($_SESSION['syou'] = 'シャツ1')

4.ブラウザの戻るボタンででも最初の画面にアクセス($_SESSION['syou'] = 'シャツ1')

5.別の方を選んでa.phpにアクセス ($_SESSION['syou'] = 'ぼろしゃつ')

※2と同様に意図は違うと思います。また、この時点で2で保存したものを書きつぶしています。

この状況をまず理解してください。

では、何故こうなるか?

$_SESSION['syou']=$syou;

と書いているからです。

恐らく期待するのは、5の時点で($_SESSION['syou'] = 'シャツ1', 'ぼろしゃつ')となっていると期待していると思います。それであれば、

if (isset($_SESSION['syou']) && is_array($_SESSION['syou'])) {
 $_SESSION['syou'][] = $syou;
} else {
 $_SESSION['syou'] = array($syou);
}

また、カートの中の表示は、

print_r ($_SESSION['syou']);

とでも書けばいいでしょう。

もっと言いたいことはたくさんありますが、まずはここまで理解してください。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ