0

こんにちは、私は初めてのポスターです。私は答えを探してみましたが、すでに投稿された資料から本当に明白なものは何も見つかりませんでした. フォーム データが投稿されない理由が分からないので、これについては別の視点が必要です。

セッション変数を使用してデータを短期間保存するショッピングカートを作成しています。最終的に、チェックアウト時に、この注文データはデータベースにファイナライズされます。レビューのためにショッピング カートの内容をレンダリングするとき、顧客が数量を更新 (または削除) できる自由を提供する必要があります。これを可能な限り整理して、カートの内容を html でレンダリングしたものを次に示します (見出し、合計などは除きます)。

<form action="mas_cart.php" method="post">
    <table id="shCart" border="1" width="800px" cellspacing="0">
        <tr>
            <td align="left">DSC0679</td>
            <td align="left">7.2H x 11W Glossy Paper </td>
            <td align="center">No</td><td align="center">$55</td>
            <td align="center">
                <input id="inp_qty" type="text" name="DSC0679_unsigned_7.2H x 11W Glossy Paper $55" value="1" size="3">
            </td>
            <td align="right">55.00</td>
        </tr>

        <tr>
            <td align="left">MRS5293</td>
            <td align="left">7.3H x 11W Glossy Paper </td>
            <td align="center">Yes</td>
            <td align="center">$55</td>
            <td align="center">
                <input id="inp_qty" type="text" name="MRS5293_signed_7.3H x 11W Glossy Paper $55" value="1" size="3">
            </td>
            <td align="right">55.00</td>
        </tr>

        <tr>
            <td align="left">MRS5293</td>
            <td align="left">7.3H x 11W Glossy Paper </td>
            <td align="center">No</td>
            <td align="center">$55</td>
            <td align="center">
                <input id="inp_qty" type="text" name="MRS5293_unsigned_7.3H x 11W Glossy Paper $55" value="2" size="3">
            </td>
            <td align="right">110.00</td>
        </tr>
    </table>

    <input type="hidden" name="save" value="true"/>
    <input type="image" src="images/save-changes.png" style="border:1px solid rgb(50,50,50)" alt="Save Changes"/>
</form>

そして、更新を処理することになっているPHPコードは次のとおりです。

//update section
if(isset($_POST['save'])) {
   foreach ($_SESSION['cart'] as $item => $qty) {
     if($_POST[$item]==0 || $_POST[$item]=="") {
         unset($_SESSION['cart'][$item]); } 
     else {
         $_SESSION['cart'][$item] = $_POST[$item];} }

実行中、$_POST['save']適切に設定されますが、$_POST[$item]未定義のインデックスが返されます:

Notice: Undefined index: DSC0679_unsigned_7.2H x 11W Glossy Paper $55 in C:\xampp\htdocs\aaa\mas_cart.php 行 57

Notice: Undefined index: MRS5293_signed_7.3H x 11W Glossy Paper $55 in C:\xampp\htdocs\aaa\mas_cart.php 行 57

Notice: Undefined index: MRS5293_unsigned_7.3H x 11W Glossy Paper $55 in C:\xampp\htdocs\aaa\mas_cart.php 行 57

基本的に、インデックスが定義されていないため、後処理の条件は常に true としてレンダリングされるため、更新するとエラーが発生し、カートがクリアされます。自分のコードを誰かに見てもらうのは嫌なことだとわかっていますが、これを理解するのに最悪の時間を過ごしています。どんな提案でも大歓迎です!ヘルプ?

4

1 に答える 1