PHPについて質問です。

PHPに詳しい方にご回答いただきたいのですが、

以下ページで商品を選択し、

http://www.aiomock2008.sakura.ne.jp/kaimono_kudamono.php

次の確認ページ

http://www.aiomock2008.sakura.ne.jp/kaimono_kakunin.php


で個数を変更します。

個数変更後に変更した個数をSESSIONに上書き保存したいのですが、やり方が分からず困っております。
今のままですと変更した個数がSESSIONに上書きされず、最初の個数がずっと反映される状況になっています。

お手数をおかけしますが、スクリプトを見ていただいて、個数変更と同時にセッションに値を上書き保存できるようにアドバイスいただけないでしょうか。

お手数をおかけしますがよろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/07/15 17:44:19
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:ko8820 No.1

回答回数1221ベストアンサー獲得回数69

ポイント100pt

PHPでセッションに書くためには、

サーバーにリクエストを投げないとセッションは書き換えられません。

引き継き購入ボタンとかでリクエストが投げられるので

そのタイミングでセッションの内容も書き換えるとか

それか、

http://blog.quall.net/program/237/

こんな感じで、数量を変更したときに裏でリクエストを投げて

書き換えるとかです。

id:aiomock

ご回答ありがとうございます。

2010/07/15 17:20:26

その他の回答1件)

id:ko8820 No.1

回答回数1221ベストアンサー獲得回数69ここでベストアンサー

ポイント100pt

PHPでセッションに書くためには、

サーバーにリクエストを投げないとセッションは書き換えられません。

引き継き購入ボタンとかでリクエストが投げられるので

そのタイミングでセッションの内容も書き換えるとか

それか、

http://blog.quall.net/program/237/

こんな感じで、数量を変更したときに裏でリクエストを投げて

書き換えるとかです。

id:aiomock

ご回答ありがとうございます。

2010/07/15 17:20:26
id:windofjuly No.2

回答回数2625ベストアンサー獲得回数1149

ポイント35pt

少し考えてみましたが1から作り直しになりそうな感じです

以前のご質問で回答2を採用なさって現在にいたっているようですが、今からでも回答3の採用を考え直してはいかがですか

http://q.hatena.ne.jp/1270135055

id:aiomock

ご回答ありがとうございます。

2010/07/15 17:20:30
  • id:aiomock
    以下 確認ページのスクリプトです。

    <?
    session_start();


    if(isset($_POST["submit2_x"]))
    {


    header('Location:kaimono_touroku.php');


    }

    if(isset($_POST["kara"]))
    {$_SESSION["cart"]="";}

    if(isset($_POST["kounyuu"]))
    {header('Location:kaimono.php');}



    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <meta content="text/html;charset=Shift_JIS" http-equiv="Content-Type">
    <title>kudamono</title>
    <script type="text/javascript">
    <!--
    function selChange(sel, ptxt, sum){
    var element = document.getElementById(sel);
    var num = element.selectedIndex;
    var price = document.getElementById(ptxt);
    var sumtxt = num * price.innerHTML;
    var sumprice = document.getElementById(sum);
    sumprice.innerHTML = sumtxt;
    var subt = document.getElementsByName("sumval");
    var allsum = 0;
    for (var n=0;n<subt.length;n++) {
    var goukei = new Array();
    var selname = 'mySum'+(n+1);
    var elm = document.getElementById(selname);
    goukei[n] = elm.innerHTML;
    allsum += parseInt(goukei[n]);
    }
    var allsumprice = document.getElementById("sougoukei");
    allsumprice.innerHTML = allsum;
    }
    //-->
    </script>
    </head>
    <body>
    <center>
    <table border="1" bordercolor="gray" cellspacing="0" width="800">
    <tbody>
    <tr>
    <td><a href="http://www.aiomock2008.sakura.ne.jp/index.html"><img
    src="http://www.aiomock2008.sakura.ne.jp/title.jpg" border="0"></a><br>
    </td>
    </tr>
    </tbody>
    </table>
    <table border="0" bordercolor="gray" cellspacing="0">
    <tbody>
    <tr>
    <td height="10" width="150"><a
    href="http://www.aiomock2008.sakura.ne.jp/index.html"><img
    src="http://www.aiomock2008.sakura.ne.jp/1.jpg"
    onmouseover="this.src='6.jpg'" onmouseout="this.src='1.jpg'" border="0"></a>
    </td>
    <td height="10" width="150"><a
    href="http://www.aiomock2008.sakura.ne.jp/syoukai.html"><img
    src="http://www.aiomock2008.sakura.ne.jp/2.jpg"
    onmouseover="this.src='7.jpg'" onmouseout="this.src='2.jpg'" border="0"></a>
    </td>
    <td height="10" width="150"><a
    href="http://www.aiomock2008.sakura.ne.jp/kaimono.html"><img
    src="3.jpg" onmouseover="this.src='8.jpg'"
    onmouseout="this.src='3.jpg'" border="0"></a></td>
    <td height="10" width="150"><a
    href="http://www.aiomock2008.sakura.ne.jp/taiken.html"><img
    src="http://www.aiomock2008.sakura.ne.jp/4.jpg"
    onmouseover="this.src='9.jpg'" onmouseout="this.src='4.jpg'" border="0"></a>
    </td>
    <td height="10" width="150"><a
    href="http://www.aiomock2008.sakura.ne.jp/toiawase.html"><img
    src="http://www.aiomock2008.sakura.ne.jp/5.jpg"
    onmouseover="this.src='10.jpg'" onmouseout="this.src='5.jpg'"
    border="0"></a></td>
    </tr>
    </tbody>
    </table>
    <table border="1" bordercolor="gray" cellspacing="0" width="800">
    <tbody>
    <tr>
    <td colspan="2" align="center"><br>
    ◆◇◆ <span style="font-weight: bold;">カートの中身</span> ◆◇◆<br>
    <br>
    <table border="1" bordercolor="black" cellpadding="3"
    cellspacing="0" width="780">
    <tbody>
    <tr>
    <td align="center" bgcolor="#99c001" width="180"><font
    color="white"><b>写
    真</b></font></td>
    <td align="center" bgcolor="#99c001" width="300"><font
    color="white"><b>タイトル</b></font></td>
    <td align="center" bgcolor="#99c001" width="80"><font
    color="white"><b>値
    段</b></font></td>
    <td align="center" bgcolor="#99c001" width="60"><font
    color="white"><b>個
    数</b></font></td>
    <td align="center" bgcolor="#99c001" width="80"><font
    color="white"><b>合
    計金額</b></font></td>
    <td align="center" bgcolor="#99c001" width="80"><font
    color="white"><b>削
    除</b></font></td>
    </tr>

    <?

    require "database_connect.php";

    $kanri_no = $_POST["kanri_no"];
    $_SESSION["cart"]["$kanri_no"] = $_POST["kosuu"];

    if($_POST["kosuu"] == "0" || $_POST["delete"]){
    unset($_SESSION["cart"][$kanri_no]);
    }

    $fnum = 0;
    $n = 0; // 追加


    foreach ($_SESSION["cart"] as $kanri_no => $kosuu){

    if($kosuu != 0) {
    $fnum++;
    $fname = 'myForm'.$fnum;
    $selname = 'mySel'.$fnum;
    $ptxtname = 'myPrice'.$fnum;
    $sumname = 'mySum'.$fnum;
    $n++;


    echo "<tr>\r\n<td><form id=\"$fname\" name=\"$fname\" action=\"kaimono_kakunin.php\" method=\"POST\">";

    $sql = "select * from KAIMONO WHERE BANGOU = '".$kanri_no."'";
    $result = mysql_query($sql);

    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

    echo $picture = "<img src= \"http://www.aiomock2008.sakura.ne.jp/PICTURE/".$row["SYURUI"]."/".$row["BANGOU"].".jpg\">";
    $price = $row["NEDAN"];


    // 合計を配列に代入。
    $sum[$n] = $price * $kosuu ;

    //タイトル
    echo "</td>\r\n<td>".$row["TITLE"]."</td>\r\n";
    }
    //値段
    echo "<td><span id=\"$ptxtname\">$price</span><input type=\"hidden\" name=\"kanri_no\" value=\"$kanri_no\"></td>\r\n";
    //個数
    $html = "<td><select name=\"kosuu\" id=\"$selname\" onchange='selChange(\"$selname\", \"$ptxtname\", \"$sumname\")'>\r\n";
    $html .= "<option selected>$kosuu</option>\r\n";
    $html .= "<option value=\"1\">1</option>\r\n";
    $html .= "<option value=\"2\">2</option>\r\n";
    $html .= "<option value=\"3\">3</option>\r\n";
    $html .= "<option value=\"4\">4</option>\r\n";
    $html .= "<option value=\"5\">5</option>\r\n";
    $html .= "<option value=\"6\">6</option>\r\n";
    $html .= "<option value=\"7\">7</option>\r\n";
    $html .= "<option value=\"8\">8</option>\r\n";
    $html .= "<option value=\"9\">9</option>\r\n";
    $html .= "</select>\r\n</td>\r\n";
    echo $html;
    //金額
    echo "<td><input type=\"hidden\" name=\"sumval\" value=\"$sum[$n]\"><span id=\"$sumname\">$sum[$n]</span></td>\r\n";
    //削除ボタン
    echo "<td><input type=\"submit\" name=\"delete\" value=\"削除する\"><br>\r\n";
    echo "<input type=\"image\" SRC=\"siro.jpg\" onmouseover=\"this.src='siro.jpg'\" onmouseout=\"this.src='siro.jpg'\" name=\"submit\"></form></td>\r\n</tr>\r\n";
    }
    }

    // 総合計金額の計算
    if($sum) {
    foreach($sum as $value) {
    $goukei += $value;

    $_SESSION["goukei"]=$goukei;
    }

    }
    ?>

    <tr>
    <td colspan="6" align="right"><b>合計金額:<font color="red"
    size="+2"><span id="sougoukei"><? echo $goukei ; ?></span></font><font size="+2">円</font></b></td>
    </tr>
    </tbody>
    </table>


    <form method="post" action="kaimono_kakunin.php">
    <br>
    <input type="image" src="cart3.jpg" name="submit2"><br>
    <br>
    <input name="kounyuu" value="引き続き購入する" type="submit">     <input
    name="kara" value="カートを空にする" type="submit"> <br>
    <br>
    <br>
    </td>
    </tr>
    </tbody>
    </table>
    <center> <img src="http://www.aiomock2008.sakura.ne.jp/sitaba.jpg"><br>
    </center>
    </center>
    </form>
    </body>
    </html>
  • id:aiomock
    変更ボタンを追加し処理したら無事解決できました。
    ご回答誠にありがとうございます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません