セッションを利用したショッピングカートを作っています。
カートに商品を追加し、さらに商品の追加をする際に前のデータを上書きし新たに追加した商品の小差だけが表示される状態です。
どこを直したらいいのでしうか。
よろしくお願い致します。
session_start();
if(!isset($_SESSION["desgin"])){
$_SESSION['desgin']= $desgin ;
}else{
$flg = false;
if(!$flg) {
$_SESSION["desgin"] = $desgin;
}
}
echo "<p>".$_SESSION["desgin"];
質問文でよく分からない部分がありますので、教えて下さい。
$flg = false; if(!$flg) { $_SESSION["desgin"] = $desgin; }
以上、よろしくお願いします。
質問文でよく分からない部分がありますので、教えて下さい。
$flg = false; if(!$flg) { $_SESSION["desgin"] = $desgin; }
以上、よろしくお願いします。
1.すみません。入力みすでした。
さらに商品の追加をすると、前のデータを上書きし新たに追加した商品の(詳細)データだけが表示される が正しいです。
2.参考書にかいたあったいらない部分を削って作成をしていましたが、$flg は削っていいのかがわからずこのしたあるだけです。
2.参考書にかいたあったいらない部分を削って作成をしていましたが、$flg は削っていいのかがわからずこのしたあるだけです。
申し訳ありませんが、スクリプトの全体を教えていただかないと何とも言えません。
質問文にあるスクリプトを見る限り、if文で条件分岐している意味がなく、常に
$_SESSION["desgin"] = $desgin;
が実行されます。
お返事ありがとうございます。
詳細の選択画面
<form method="post" action="a.php">
<select name="desgin" id="desgin">
<option value="090001">090001</option>
<option value="090002">090002</option>
</select>
<input name="" type="submit" value="送信">
</form>
上記で選んだものを買い物かごへ入れる動作をしたいのです。
買い物かご側は
$sql = "select * from item WHERE item1 = '" . mysql_real_escape_string($_POST['desgin']) . "'" ;
$result = mysql_query($sql) ;
$row = mysql_fetch_assoc($result) ;
$desgin = $_POST['desgin'] ;
session_start();
if(!isset($_SESSION["desgin"])){
$_SESSION["desgin"][]=$desgin;
}
echo "
".$_SESSION["desgin"];
この状態だと、1個目に入れた内容が上書きされ、新たに追加した商品の(詳細)データだけが表示される状態です。
んー、ちょっと理解できていないのですが、
1つめの商品をカートに入れる。
2つ目の商品をカートに入れる。
で、カートの中身が、
1つめと2つめの両方入っているという風にするならば、
$_SESSION["desgin"][]=$desgin;
と流れを作ればできます。
session_start(); $_SESSION['desgin'][]= $desgin ; foreach($_SESSION["design"] as $val) { echo "<p>".$val."</p>"; }
ifが無いのは、必ず新しく追加されるからなのですが、
既に入っているものと同じものが来た場合の処理など考えると、
ハッシュの中身を検索する処理が必要です。
現状では、同じ変数
$_SESSION["design"]
に上書きしてしまっているので、一つだけになります。
もうちょっと情報があると、お伝えできることも変わるかと思います。
とりあえず、どうしたいのか。ですかね。
有難うございます。
session_start();
$_SESSION['desgin'][]= $desgin ;
foreach($_SESSION["design"] as $val) {
echo "
".$val."
";}
を代入すると「$_SESSION['desgin'][]= $desgin ;」のラインにエラーができます。
下記に分を添付いたします。
お手数ですが、みて頂けるとありがたいです。
詳細の選択画面
<form method="post" action="a.php">
<select name="desgin" id="desgin">
<option value="090001">090001</option>
<option value="090002">090002</option>
</select>
<input name="" type="submit" value="送信">
</form>
上記で選んだものを買い物かごへ入れる動作をしたいのです。
買い物かご側は
$sql = "select * from item WHERE item1 = '" . mysql_real_escape_string($_POST['desgin']) . "'" ;
$result = mysql_query($sql) ;
$row = mysql_fetch_assoc($result) ;
$desgin = $_POST['desgin'] ;
session_start();
if(!isset($_SESSION["desgin"])){
$_SESSION["desgin"][]=$desgin;
}
echo "
".$_SESSION["desgin"];
この状態だと、1個目に入れた内容が上書きされ、新たに追加した商品の(詳細)データだけが表示される状態です。
1.すみません。入力みすでした。
さらに商品の追加をすると、前のデータを上書きし新たに追加した商品の(詳細)データだけが表示される が正しいです。
2.参考書にかいたあったいらない部分を削って作成をしていましたが、$flg は削っていいのかがわからずこのしたあるだけです。