当前位置:首页 > PHP教程 > php会话 > 列表

PHP session如何实现购物车功能

发布:smiling 来源: PHP粉丝网  添加日期:2022-07-11 11:54:01 浏览: 评论:0 

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

common.php

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

index.php

  1. <?php  
  2.  
  3. header("content-type:text/html;charset=utf-8"); 
  4.  
  5. require 'common.php'
  6.  
  7. session_start(); 
  8.  
  9. $sum = 0; 
  10.  
  11. $class = ""
  12.  
  13. //判断左上角购物车的样式显示 
  14.  
  15. if(!emptyempty($_SESSION['shopcar'])){ 
  16.  
  17.   $data = $_SESSION['shopcar']; 
  18.  
  19.   $sum = array_sum($data[4]); 
  20.  
  21.   $class = "on"
  22.  
  23.   //右上角圆点 
  24.  
  25.     if(emptyempty($data[0])){ 
  26.  
  27.       $class = ""
  28.  
  29.     } 
  30.  
  31.   } 
  32.  
  33. ?> 
  34.  
  35.  
  36.  
  37. <!DOCTYPE html> 
  38.  
  39. <html lang="en"
  40.  
  41. <head> 
  42.  
  43.   <meta charset="UTF-8"
  44.  
  45.   <title>商品展示</title> 
  46.  
  47.   <style type="text/css"
  48.  
  49.   section{ 
  50.  
  51.     width:1032px; 
  52.  
  53.     height: 700px; 
  54.  
  55.     margin: 40px auto; 
  56.  
  57.   } 
  58.  
  59.   .top{ 
  60.  
  61.     float: right; 
  62.  
  63.     position: relative; 
  64.  
  65.     width: 190px; 
  66.  
  67.     height: 34px; 
  68.  
  69.     border: 1px solid #ccc; 
  70.  
  71.     margin-right: 32px; 
  72.  
  73.     text-align: center; 
  74.  
  75.     line-height: 34px; 
  76.  
  77.     border-radius: 4px; 
  78.  
  79.     transition: all .3s linear; 
  80.  
  81.     -moz-transition: all .3s linear; 
  82.  
  83.     -webkit-transition: all .3s linear; 
  84.  
  85.   } 
  86.  
  87.   .top a{ 
  88.  
  89.     color: #d00; 
  90.  
  91.   } 
  92.  
  93.   .top:hover{ 
  94.  
  95.     width: 210px; 
  96.  
  97.     color: #fff; 
  98.  
  99.     font-weight: bold; 
  100.  
  101.     background-color: #d00; 
  102.  
  103.     border-radius: 6px; 
  104.  
  105.   } 
  106.  
  107.   .top:hover a{ 
  108.  
  109.     color: #fff; 
  110.  
  111.   } 
  112.  
  113.   .top:hover span{ 
  114.  
  115.     background-color: #fff; 
  116.  
  117.     color: #d00; 
  118.  
  119.   } 
  120.  
  121.   .top:hover .star{ 
  122.  
  123.     right:150px; 
  124.  
  125.     top: 0; 
  126.  
  127.     font-size: 14px; 
  128.  
  129.     color: #ff0; 
  130.  
  131.     transform: rotate(1080deg); 
  132.  
  133.   } 
  134.  
  135.   .top span{ 
  136.  
  137.     position: absolute; 
  138.  
  139.     top:2px; 
  140.  
  141.     right: 40px; 
  142.  
  143.     width: 18px; 
  144.  
  145.     height: 18px; 
  146.  
  147.     font-weight: bold; 
  148.  
  149.     border-radius: 9px; 
  150.  
  151.     line-height: 18px; 
  152.  
  153.     text-align: center; 
  154.  
  155.     font-size: 12px; 
  156.  
  157.     font-weight: border; 
  158.  
  159.     color: #fff; 
  160.  
  161.   } 
  162.  
  163.   .star{ 
  164.  
  165.     color: #fff; 
  166.  
  167.     font-size: 48px; 
  168.  
  169.     font-style: normal; 
  170.  
  171.     position: absolute; 
  172.  
  173.     right:530px; 
  174.  
  175.     top:186px; 
  176.  
  177.     transform: rotate(60deg); 
  178.  
  179.     transition: all .3s ease; 
  180.  
  181.   } 
  182.  
  183.   .on{ 
  184.  
  185.     background-color: #e00; 
  186.  
  187.   } 
  188.  
  189.   .list{ 
  190.  
  191.     margin: 20px 20px; 
  192.  
  193.     padding: 36px 0; 
  194.  
  195.     list-style: none; 
  196.  
  197.   }   
  198.  
  199.   a{ 
  200.  
  201.     display: block; 
  202.  
  203.     color: #757575; 
  204.  
  205.     text-decoration: none; 
  206.  
  207.   } 
  208.  
  209.   .list li{ 
  210.  
  211.     float: left; 
  212.  
  213.     height: 246px; 
  214.  
  215.     width: 234px; 
  216.  
  217.     padding: 10px 0 20px; 
  218.  
  219.     margin-right:12px; 
  220.  
  221.     margin-top: 20px; 
  222.  
  223.     border: 1px solid #ccc; 
  224.  
  225.     background: #fff; 
  226.  
  227.     -webkit-transition: all .2s linear; 
  228.  
  229.     transition: all .2s linear; 
  230.  
  231.   } 
  232.  
  233.   .list li:hover{ 
  234.  
  235.     box-shadow: 2px 4px 5px #aaa; 
  236.  
  237.   } 
  238.  
  239.   .figure{ 
  240.  
  241.     width: 150px; 
  242.  
  243.     height: 150px; 
  244.  
  245.     margin: 0 auto 18px; 
  246.  
  247.   } 
  248.  
  249.   .title{ 
  250.  
  251.     color: #222; 
  252.  
  253.     font-size: 14px; 
  254.  
  255.     font-weight: normal; 
  256.  
  257.     text-align: center; 
  258.  
  259.   } 
  260.  
  261.   .price{ 
  262.  
  263.     margin: 0 10px 10px; 
  264.  
  265.     text-align: center; 
  266.  
  267.     color: #ff6700; 
  268.  
  269.   } 
  270.  
  271.   .cart{ 
  272.  
  273.     margin: 0 15px 5px; 
  274.  
  275.     text-align: center; 
  276.  
  277.   } 
  278.  
  279.   .cart a{ 
  280.  
  281.     color: #a34; 
  282.  
  283.     width: 190px; 
  284.  
  285.     height: 24px; 
  286.  
  287.     border-radius: 4px; 
  288.  
  289.     margin: 0 8px 5px; 
  290.  
  291.     text-align: center; 
  292.  
  293.   } 
  294.  
  295.   .cart a:hover{ 
  296.  
  297.     color: #eee; 
  298.  
  299.     box-shadow: 0 2px 1px #333,0 2px 1px #666; 
  300.  
  301.     background-color: #ccc; 
  302.  
  303.     background-image: linear-gradient(#33a6b8,#0089a7) 
  304.  
  305.   } 
  306.  
  307.   .num{ 
  308.  
  309.     text-align: center; 
  310.  
  311.     color: #ff6700; 
  312.  
  313.   } 
  314.  
  315.   </style> 
  316.  
  317. </head> 
  318.  
  319. <body> 
  320.  
  321.   <section> 
  322.  
  323.   <p class='top'
  324.  
  325.   <a href="spcar.php" rel="external nofollow" >我的购物车</a><span class="<?php echo $class;?>"><?php echo $sum;?></span> 
  326.  
  327.   <em class='star'>★</em> 
  328.  
  329.   </p> 
  330.  
  331.   <ul class="list"
  332.  
  333.   <?php foreach ($arrPro as $key => $value):?> 
  334.  
  335.   <li> 
  336.  
  337.     <p class="figure">  
  338.  
  339.     <a href=""><img src=" rel="external nofollow" <?php echo $value['img'];?>" width="150" height="150" alt="小米移动电源5000mAh"></a>  
  340.  
  341.     </p>  
  342.  
  343.     <h3 class="title">  
  344.  
  345.     <a href=""><?php echo $value['title'];?></a> 
  346.  
  347.     </h3>  
  348.  
  349.     <p class="price"><span class="num">¥<?php echo $value['price'];?></span></p> 
  350.  
  351.     <p class='cart'><a href="action.php?id=<?php echo $value['id'];?>" rel="external nofollow" >加入购物车</a></p> 
  352.  
  353.   </li> 
  354.  
  355.   <?php endforeach;?> 
  356.  
  357.   </ul> 
  358.  
  359.   <p style='clear:both'></p> 
  360.  
  361.   </section> 
  362.  
  363. </body> 
  364.  
  365. </html> 

action.php

  1. <?php 
  2.  
  3. if(!emptyempty($_GET['id'])){ 
  4.  
  5.   require 'common.php'
  6.  
  7.   session_start(); 
  8.  
  9.   $id = $_GET['id']; 
  10.  
  11.   //把所选ID的商品信息遍历出来 
  12.  
  13.   foreach ($arrPro as $key => $value) { 
  14.  
  15.     if($id == $value['id']){ 
  16.  
  17.     $arrData = $arrPro[$key]; 
  18.  
  19.     } 
  20.  
  21.   } 
  22.  
  23.  
  24.  
  25.   //用一个新的二维数组把商品信息存起来 
  26.  
  27.   $arrDatax[0][$arrData['id']] = $arrData['id']; 
  28.  
  29.   $arrDatax[1][$arrData['id']] = $arrData['img']; 
  30.  
  31.   $arrDatax[2][$arrData['id']] = $arrData['title']; 
  32.  
  33.   $arrDatax[3][$arrData['id']] = $arrData['price']; 
  34.  
  35.   $arrDatax[4][$arrData['id']] = 1; 
  36.  
  37.   //判断是否有SESSION存在,有则在数组后添加,没有则直接存 
  38.  
  39.   if(emptyempty($_SESSION['shopcar'])){ 
  40.  
  41.     $_SESSION['shopcar'] = $arrDatax
  42.  
  43.     header('Location:index.php'); 
  44.  
  45.   }else
  46.  
  47.     //第一次购物之后的购物 
  48.  
  49.     //重新取出来,防止数据覆盖 
  50.  
  51.     $arrDataz = $_SESSION['shopcar']; 
  52.  
  53.     if(in_array($id,$arrDataz[0])){ 
  54.  
  55.       $arrDataz[4][$arrData['id']] += 1; 
  56.  
  57.       $_SESSION['shopcar'] = $arrDataz
  58.  
  59.       header('Location:index.php'); 
  60.  
  61.     }else
  62.  
  63.       $arrDataz[0][$arrData['id']] = $arrData['id']; 
  64.  
  65.       $arrDataz[1][$arrData['id']] = $arrData['img']; 
  66.  
  67.       $arrDataz[2][$arrData['id']] = $arrData['title']; 
  68.  
  69.       $arrDataz[3][$arrData['id']] = $arrData['price']; 
  70.  
  71.       $arrDataz[4][$arrData['id']] = 1; 
  72.  
  73.       $_SESSION['shopcar'] = $arrDataz
  74.  
  75.       header('Location:index.php'); 
  76.  
  77.     } 
  78.  
  79.  
  80.  
  81.   } 
  82.  
  83. }else
  84.  
  85.   echo "购物车没有商品!"
  86.  

spcar.php

  1. <?php 
  2.  
  3. if(!emptyempty($_GET['id'])){ 
  4.  
  5.   require 'common.php'
  6.  
  7.   session_start(); 
  8.  
  9.   $id = $_GET['id']; 
  10.  
  11.   //把所选ID的商品信息遍历出来 
  12.  
  13.   foreach ($arrPro as $key => $value) { 
  14.  
  15.     if($id == $value['id']){ 
  16.  
  17.     $arrData = $arrPro[$key]; 
  18.  
  19.     } 
  20.  
  21.   } 
  22.  
  23.  
  24.  
  25.   //用一个新的二维数组把商品信息存起来 
  26.  
  27.   $arrDatax[0][$arrData['id']] = $arrData['id']; 
  28.  
  29.   $arrDatax[1][$arrData['id']] = $arrData['img']; 
  30.  
  31.   $arrDatax[2][$arrData['id']] = $arrData['title']; 
  32.  
  33.   $arrDatax[3][$arrData['id']] = $arrData['price']; 
  34.  
  35.   $arrDatax[4][$arrData['id']] = 1; 
  36.  
  37.   //判断是否有SESSION存在,有则在数组后添加,没有则直接存 
  38.  
  39.   if(emptyempty($_SESSION['shopcar'])){ 
  40.  
  41.     $_SESSION['shopcar'] = $arrDatax
  42.  
  43.     header('Location:index.php'); 
  44.  
  45.   }else
  46.  
  47.     //第一次购物之后的购物 
  48.  
  49.     //重新取出来,防止数据覆盖 
  50.  
  51.     $arrDataz = $_SESSION['shopcar']; 
  52.  
  53.     if(in_array($id,$arrDataz[0])){ 
  54.  
  55.       $arrDataz[4][$arrData['id']] += 1; 
  56.  
  57.       $_SESSION['shopcar'] = $arrDataz
  58.  
  59.       header('Location:index.php'); 
  60.  
  61.     }else
  62.  
  63.       $arrDataz[0][$arrData['id']] = $arrData['id']; 
  64.  
  65.       $arrDataz[1][$arrData['id']] = $arrData['img']; 
  66.  
  67.       $arrDataz[2][$arrData['id']] = $arrData['title']; 
  68.  
  69.       $arrDataz[3][$arrData['id']] = $arrData['price']; 
  70.  
  71.       $arrDataz[4][$arrData['id']] = 1; 
  72.  
  73.       $_SESSION['shopcar'] = $arrDataz
  74.  
  75.       header('Location:index.php'); 
  76.  
  77.     } 
  78.  
  79.  
  80.  
  81.   } 
  82.  
  83. }else
  84.  
  85.   echo "购物车没有商品!"
  86.  

delete.php

  1. <?php 
  2.  
  3. session_start(); 
  4.  
  5. if(!emptyempty($_GET['id'])){ 
  6.  
  7.   $arrData = $_SESSION['shopcar']; 
  8.  
  9.   //判断对应的商品ID信息 
  10.  
  11.     if(in_array($_GET['id'],$arrData[0])){ 
  12.  
  13.       unset($arrData[0][$_GET['id']]); 
  14.  
  15.       unset($arrData[1][$_GET['id']]); 
  16.  
  17.       unset($arrData[2][$_GET['id']]); 
  18.  
  19.       unset($arrData[3][$_GET['id']]); 
  20.  
  21.       unset($arrData[4][$_GET['id']]); 
  22.  
  23.       $_SESSION['shopcar'] = $arrData
  24.  
  25.     } 
  26.  
  27.     header('Location:spcar.php'); 
  28.  
  29. }

Tags: session购物车 PHP购物车

分享到: