• 技术文章 >后端开发 >php教程

    PHP session如何实现购物车功能

    coldplay.xixicoldplay.xixi2020-07-17 17:17:54转载782

    在wamp环境下,用PHP的session会话控制完成购物车的效果,数据存放在数组里练习,没有连接数据库,效果不错,简单易懂,以下是各部分的代码

    common.php

    <?php
    header("content-type:text/html;charset=utf-8");
    $arrPro = array(
        array('id'=>1,'img'=>'img/1.jpg','title'=>'小米移动电源5000mAh','price'=>49),
        array('id'=>2,'img'=>'img/2.jpg','title'=>'20000mAh小米移动电源2','price'=>149),
        array('id'=>3,'img'=>'img/3.jpg','title'=>'小米圈铁耳机Pro','price'=>129),
        array('id'=>4,'img'=>'img/4.jpg','title'=>'小米家电动滑板车','price'=>1999),
        array('id'=>5,'img'=>'img/5.jpg','title'=>'小米笔记本','price'=>3499),
        array('id'=>6,'img'=>'img/6.jpg','title'=>'米家LED智能台灯','price'=>169),
        array('id'=>7,'img'=>'img/7.jpg','title'=>'小米体重秤','price'=>99),
        array('id'=>8,'img'=>'img/8.png','title'=>'小米电视3s 48英寸','price'=>2599)
      );

    index.php

    <?php 
    header("content-type:text/html;charset=utf-8");
    require 'common.php';
    session_start();
    $sum = 0;
    $class = "";
    //判断左上角购物车的样式显示
    if(!empty($_SESSION['shopcar'])){
      $data = $_SESSION['shopcar'];
      $sum = array_sum($data[4]);
      $class = "on";
      //右上角圆点
        if(empty($data[0])){
          $class = "";
        }
      }
    ?>
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>商品展示</title>
      <style type="text/css">
      section{
        width:1032px;
        height: 700px;
        margin: 40px auto;
      }
      .top{
        float: right;
        position: relative;
        width: 190px;
        height: 34px;
        border: 1px solid #ccc;
        margin-right: 32px;
        text-align: center;
        line-height: 34px;
        border-radius: 4px;
        transition: all .3s linear;
        -moz-transition: all .3s linear;
        -webkit-transition: all .3s linear;
      }
      .top a{
        color: #d00;
      }
      .top:hover{
        width: 210px;
        color: #fff;
        font-weight: bold;
        background-color: #d00;
        border-radius: 6px;
      }
      .top:hover a{
        color: #fff;
      }
      .top:hover span{
        background-color: #fff;
        color: #d00;
      }
      .top:hover .star{
        right:150px;
        top: 0;
        font-size: 14px;
        color: #ff0;
        transform: rotate(1080deg);
      }
      .top span{
        position: absolute;
        top:2px;
        right: 40px;
        width: 18px;
        height: 18px;
        font-weight: bold;
        border-radius: 9px;
        line-height: 18px;
        text-align: center;
        font-size: 12px;
        font-weight: border;
        color: #fff;
      }
      .star{
        color: #fff;
        font-size: 48px;
        font-style: normal;
        position: absolute;
        right:530px;
        top:186px;
        transform: rotate(60deg);
        transition: all .3s ease;
      }
      .on{
        background-color: #e00;
      }
      .list{
        margin: 20px 20px;
        padding: 36px 0;
        list-style: none;
      }  
      a{
        display: block;
        color: #757575;
        text-decoration: none;
      }
      .list li{
        float: left;
        height: 246px;
        width: 234px;
        padding: 10px 0 20px;
        margin-right:12px;
        margin-top: 20px;
        border: 1px solid #ccc;
        background: #fff;
        -webkit-transition: all .2s linear;
        transition: all .2s linear;
      }
      .list li:hover{
        box-shadow: 2px 4px 5px #aaa;
      }
      .figure{
        width: 150px;
        height: 150px;
        margin: 0 auto 18px;
      }
      .title{
        color: #222;
        font-size: 14px;
        font-weight: normal;
        text-align: center;
      }
      .price{
        margin: 0 10px 10px;
        text-align: center;
        color: #ff6700;
      }
      .cart{
        margin: 0 15px 5px;
        text-align: center;
      }
      .cart a{
        color: #a34;
        width: 190px;
        height: 24px;
        border-radius: 4px;
        margin: 0 8px 5px;
        text-align: center;
      }
      .cart a:hover{
        color: #eee;
        box-shadow: 0 2px 1px #333,0 2px 1px #666;
        background-color: #ccc;
        background-image: linear-gradient(#33a6b8,#0089a7)
      }
      .num{
        text-align: center;
        color: #ff6700;
      }
      </style>
    </head>
    <body>
      <section>
      <p class='top'>
      <a href="spcar.php" rel="external nofollow" >我的购物车</a><span class="<?php echo $class;?>"><?php echo $sum;?></span>
      <em class='star'>★</em>
      </p>
      <ul class="list">
      <?php foreach ($arrPro as $key => $value):?>
      <li>
        <p class="figure"> 
        <a href=""><img src=" rel="external nofollow" <?php echo $value['img'];?>" width="150" height="150" alt="小米移动电源5000mAh"></a> 
        </p> 
        <h3 class="title"> 
        <a href=""><?php echo $value['title'];?></a>
        </h3> 
        <p class="price"><span class="num">¥<?php echo $value['price'];?></span></p>
        <p class='cart'><a href="action.php?id=<?php echo $value['id'];?>" rel="external nofollow" >加入购物车</a></p>
      </li>
      <?php endforeach;?>
      </ul>
      <p style='clear:both'></p>
      </section>
    </body>
    </html>

    action.php

    <?php
    if(!empty($_GET['id'])){
      require 'common.php';
      session_start();
      $id = $_GET['id'];
      //把所选ID的商品信息遍历出来
      foreach ($arrPro as $key => $value) {
        if($id == $value['id']){
        $arrData = $arrPro[$key];
        }
      }
    
      //用一个新的二维数组把商品信息存起来
      $arrDatax[0][$arrData['id']] = $arrData['id'];
      $arrDatax[1][$arrData['id']] = $arrData['img'];
      $arrDatax[2][$arrData['id']] = $arrData['title'];
      $arrDatax[3][$arrData['id']] = $arrData['price'];
      $arrDatax[4][$arrData['id']] = 1;
      //判断是否有SESSION存在,有则在数组后添加,没有则直接存
      if(empty($_SESSION['shopcar'])){
        $_SESSION['shopcar'] = $arrDatax;
        header('Location:index.php');
      }else{
        //第一次购物之后的购物
        //重新取出来,防止数据覆盖
        $arrDataz = $_SESSION['shopcar'];
        if(in_array($id,$arrDataz[0])){
          $arrDataz[4][$arrData['id']] += 1;
          $_SESSION['shopcar'] = $arrDataz;
          header('Location:index.php');
        }else{
          $arrDataz[0][$arrData['id']] = $arrData['id'];
          $arrDataz[1][$arrData['id']] = $arrData['img'];
          $arrDataz[2][$arrData['id']] = $arrData['title'];
          $arrDataz[3][$arrData['id']] = $arrData['price'];
          $arrDataz[4][$arrData['id']] = 1;
          $_SESSION['shopcar'] = $arrDataz;
          header('Location:index.php');
        }
    
      }
    }else{
      echo "购物车没有商品!";
    }

    spcar.php

    <?php
    if(!empty($_GET['id'])){
      require 'common.php';
      session_start();
      $id = $_GET['id'];
      //把所选ID的商品信息遍历出来
      foreach ($arrPro as $key => $value) {
        if($id == $value['id']){
        $arrData = $arrPro[$key];
        }
      }
    
      //用一个新的二维数组把商品信息存起来
      $arrDatax[0][$arrData['id']] = $arrData['id'];
      $arrDatax[1][$arrData['id']] = $arrData['img'];
      $arrDatax[2][$arrData['id']] = $arrData['title'];
      $arrDatax[3][$arrData['id']] = $arrData['price'];
      $arrDatax[4][$arrData['id']] = 1;
      //判断是否有SESSION存在,有则在数组后添加,没有则直接存
      if(empty($_SESSION['shopcar'])){
        $_SESSION['shopcar'] = $arrDatax;
        header('Location:index.php');
      }else{
        //第一次购物之后的购物
        //重新取出来,防止数据覆盖
        $arrDataz = $_SESSION['shopcar'];
        if(in_array($id,$arrDataz[0])){
          $arrDataz[4][$arrData['id']] += 1;
          $_SESSION['shopcar'] = $arrDataz;
          header('Location:index.php');
        }else{
          $arrDataz[0][$arrData['id']] = $arrData['id'];
          $arrDataz[1][$arrData['id']] = $arrData['img'];
          $arrDataz[2][$arrData['id']] = $arrData['title'];
          $arrDataz[3][$arrData['id']] = $arrData['price'];
          $arrDataz[4][$arrData['id']] = 1;
          $_SESSION['shopcar'] = $arrDataz;
          header('Location:index.php');
        }
    
      }
    }else{
      echo "购物车没有商品!";
    }

    delete.php

    <?php
    session_start();
    if(!empty($_GET['id'])){
      $arrData = $_SESSION['shopcar'];
      //判断对应的商品ID信息
        if(in_array($_GET['id'],$arrData[0])){
          unset($arrData[0][$_GET['id']]);
          unset($arrData[1][$_GET['id']]);
          unset($arrData[2][$_GET['id']]);
          unset($arrData[3][$_GET['id']]);
          unset($arrData[4][$_GET['id']]);
          $_SESSION['shopcar'] = $arrData;
        }
        header('Location:spcar.php');
    }

    相关学习推荐:PHP编程从入门到精通

    以上就是PHP session如何实现购物车功能的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:jb51,如有侵犯,请联系admin@php.cn删除
    专题推荐:PHP session 购物车
    上一篇:实现简单的php购物车代码 下一篇:一起看看php实现产品加入购物车功能(1)
    大前端线上培训班

    相关文章推荐

    • php session 购物车类• php直接关闭页面怎么注销SESSION• php session如何设置登录过期时间• php如何修改session的属性值?

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网