ホームページ  >  記事  >  バックエンド開発  >  セッションを使用してPHPでショッピングカートを実装する方法

セッションを使用してPHPでショッピングカートを実装する方法

藏色散人
藏色散人オリジナル
2020-08-29 09:20:533664ブラウズ

php はセッションを使用してショッピング カート メソッドを実装します。最初にショッピング カートに追加するアクションを実装するフロントエンド コードを作成し、次にショッピング カート データの論理判断を PHP ファイルに実装します。データに従ってリストをロードし、最終的に商品を削除したり、金額を計算したりするだけの設定解除などの機能を介して実装します。

セッションを使用してPHPでショッピングカートを実装する方法

# 推奨: 「

PHP ビデオ チュートリアル#」 ##》PHP はセッションを使用してショッピング カート効果を実現します (ボタンをクリックしてデータを追加し、データに基づいてリストを生成し、選択した製品を削除し、ボタンをクリックしたときに金額を計算します)

効果チャート

#コードがたくさんあります。一部を抜粋します。

#ショッピングカートに追加 (ボタンをクリックすると、セッションデータを追加)

##
    // 加入购物车
    function addshopping() {
      <?php
      $db = db($_GET[&#39;db&#39;]);
      $id = $formatData[&#39;id&#39;];
      $user = $formatData[&#39;user&#39;];
      // 当购物车没有时,即没有session数据时
      if (empty($_SESSION[&#39;gwc&#39;])) {
        $arr = array(array(&#39;user&#39; => $user, &#39;db&#39; => $db, &#39;id&#39; => $id, &#39;num&#39; => 1));
        $_SESSION[&#39;gwc&#39;] = $arr;
      } else {
        // 当购物车有数据时
        $arr = $_SESSION["gwc"];
        $order = false;
        foreach ($arr as $key => $value) {
          // 如果数据中有了这个数据
          if ($value[&#39;user&#39;] == $user && $value[&#39;db&#39;] == $db && $value[&#39;id&#39;] == $id) {
            $index = $key;  //保存这个相同数据的下标,以便操作
            $order = true;	
            //定义一个变量,看是佛有相同的数据,需要注意的是,不能再这个if语句中else,否则后面的语句
            //虽然会使数量加一,但是还是会多创建一条数据,为什么,自己想想就能明白,只是当时当局者迷
          }
        }
        if ($order) {
          // 如果该商品在购物车存在,让数量加1
          $arr[$index][&#39;num&#39;]++;
        } else {
          // 如果该商品购物车里面不存在,造一个一维数组扔到二维里面
          $arr[] = array(&#39;user&#39; => $user, &#39;db&#39; => $db, &#39;id&#39; => $id, &#39;num&#39; => 1);
        }
        $_SESSION["gwc"] = $arr;
      }

      ?>
      console.log(&#39;addshopping&#39;);
    }

データに従ってリストを読み込み

    <!-- 购物车列表 -->
    <?php
    foreach ($_SESSION[&#39;gwc&#39;] as  $dataList) {
        $clean = array();
        $clean[&#39;user&#39;] = $dataList[&#39;user&#39;];
        $clean[&#39;db&#39;] = $dataList[&#39;db&#39;];
        $clean[&#39;id&#39;] = $dataList[&#39;id&#39;];
        $clean[&#39;num&#39;] = $dataList[&#39;num&#39;];

        $res = $conn->fetchRow("SELECT * FROM {$clean[&#39;db&#39;]}  WHERE id={$clean[&#39;id&#39;]}");
        $clean[&#39;title&#39;] = $res[&#39;title&#39;];
        $clean[&#39;price&#39;] = $res[&#39;price&#39;];
        $clean[&#39;face&#39;]  = $res[&#39;face&#39;];

    ?>
        <p class="weui-content">
            <p class="weui-panel weui-panel_access">

                <p class="weui-panel__hd"><span><?php echo  $clean[&#39;user&#39;]; ?> </span><a href="javascript:void(0)" class="wy-dele"><!-- 删除 --></a></p>

                <p class="weui-panel__bd">
                    <p class="weui-media-box_appmsg pd-10">
                        <p class="weui-media-box__hd check-w weui-cells_checkbox">
                            <label class="weui-check__label" for="cart-<?php echo $clean[&#39;db&#39;] . &#39;-&#39; . $clean[&#39;id&#39;] ?>">
                     
                                <p class="weui-cell__hd cat-check">
                                    <input type="checkbox" class="weui-check" name="cartpro" id="cart-<?php echo $clean[&#39;db&#39;] . &#39;-&#39; . $clean[&#39;id&#39;] ?>"><i class="weui-icon-checked"></i>
                                </p>
                            </label>
                        </p>
                        <p class="weui-media-box__hd"><a href="pro_info.php?db=<?php echo  $clean[&#39;db&#39;]; ?>&id=<?php echo  $clean[&#39;id&#39;]; ?>"><img  class="weui-media-box__thumb" src="<?php echo  $clean[&#39;face&#39;];  ? alt="セッションを使用してPHPでショッピングカートを実装する方法" >" alt=""   style="max-width:90%"></a></p>
                        <p class="weui-media-box__bd">
                            <h1 class="weui-media-box__desc"><a href="pro_info.php?db=<?php echo  $clean[&#39;db&#39;]; ?>&id=<?php echo  $clean[&#39;id&#39;]; ?>" class="ord-pro-link"><?php echo  $clean[&#39;title&#39;];  ?></a></h1>
                            <p class="weui-media-box__desc">规格:<span>红色</span>,<span>23</span></p>
                            <p class="clear mg-t-10">
                                <p class="wy-pro-pri fl">¥<em class="num font-15 price"><?php echo  $clean[&#39;price&#39;];  ?></em></p>
                                <p class="pro-amount fr">
                                    <!-- 购买的数量 -->
                                    <input type="hidden" name="" class="datanum" value="<?php echo  $clean[&#39;num&#39;]; ?>">
                                    <!-- 提交删除的数据 -->
                                    <input type="hidden" name="" class="rmdata" value="shopping.php?db=<?php echo  $clean[&#39;db&#39;]; ?>&id=<?php echo  $clean[&#39;id&#39;];?>">
                                    <p class="Spinner"></p>
                                </p>
                            </p>
                        </p>
                    </p>
                </p>


            </p>
        </p>
    <?php }
    ?>
セッションを使用してPHPでショッピングカートを実装する方法選択した商品を削除

// echo &#39;<pre class="brush:php;toolbar:false">&#39;;// print_r($_SESSION[&#39;gwc&#39;]);// echo &#39;
';if(isset($_GET['db']) && isset($_GET['id'])){     $dataArr = $_SESSION['gwc'];     foreach ($dataArr as $key => $value) {         if($value['db'] == $_GET['db'] && $value['id'] == $_GET['id']){             unset($dataArr[$key]);         }     }     $_SESSION['gwc'] = $dataArr;     header("Location:shopping.php");}// echo '
';// print_r( $dataArr);// echo '
';

金額計算

    <!-- 金额计算 -->
    <script>
        window.onload = function() {
            var cartproAll = document.querySelectorAll(&#39;input[name=cartpro]&#39;);	
            var datanum = document.querySelectorAll(&#39;.datanum&#39;);   
            var numAll = document.querySelectorAll(&#39;.Amount&#39;);
            var DisDe  = document.querySelectorAll(&#39;.DisDe&#39;);
            var Increase  = document.querySelectorAll(&#39;.Increase&#39;);

            //  购买数量的多少
            numAll.forEach((item,i) => {
                item.value = datanum[i].value;
            })

            // 点击加号
            DisDe.forEach((item, i) => {
                item.onclick = function() {
                    computedPrice();
                }
            })
            // 点击减号
            Increase.forEach((item, i) => {
                item.onclick = function() {
                    computedPrice();
                }
            })
            // 点击单选时计算金额
            cartproAll.forEach((item, i) => {
                item.onclick = function() {
                    computedPrice();
                }
            })
        }
        function computedPrice(){
            var cartproAll = document.querySelectorAll(&#39;input[name=cartpro]&#39;);      //获取是否点击
            var price = document.querySelectorAll(&#39;.price&#39;);                        //价钱
            var price_total = document.querySelector(&#39;.price_total&#39;);               //价钱总数   
            var numAll = document.querySelectorAll(&#39;.Amount&#39;);                      //数量
            var total = 0;
            price_total.innerHTML = 0;
            cartproAll.forEach((item, i) => {
                if (item.checked == true) {
                        total += parseFloat(price[i].innerHTML) * parseFloat(numAll[i].value);
                    }
            })
            price_total.innerHTML = total;
        }
    </script>

以上がセッションを使用してPHPでショッピングカートを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。