Maison  >  Article  >  développement back-end  >  Comment implémenter la fonction de panier dans une session PHP

Comment implémenter la fonction de panier dans une session PHP

coldplay.xixi
coldplay.xixiavant
2020-07-17 17:17:542740parcourir

Comment implémenter la fonction de panier dans une session PHP

Dans l'environnement wamp, utilisez le contrôle de session PHP pour compléter l'effet panier. Les données sont stockées dans un tableau pour la pratique. Il n'y a pas de connexion à la base de données. et simple et facile à comprendre. Les éléments suivants sont chaque partie du code

common.php

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

index.php

<?php 
header("content-type:text/html;charset=utf-8");
require &#39;common.php&#39;;
session_start();
$sum = 0;
$class = "";
//判断左上角购物车的样式显示
if(!empty($_SESSION[&#39;shopcar&#39;])){
  $data = $_SESSION[&#39;shopcar&#39;];
  $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=&#39;top&#39;>
  <a href="spcar.php" rel="external nofollow" >我的购物车</a><span class="<?php echo $class;?>"><?php echo $sum;?></span>
  <em class=&#39;star&#39;>★</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[&#39;img&#39;];?>" width="150" height="150" alt="小米移动电源5000mAh"></a> 
    </p> 
    <h3 class="title"> 
    <a href=""><?php echo $value[&#39;title&#39;];?></a>
    </h3> 
    <p class="price"><span class="num">¥<?php echo $value[&#39;price&#39;];?></span></p>
    <p class=&#39;cart&#39;><a href="action.php?id=<?php echo $value[&#39;id&#39;];?>" rel="external nofollow" >加入购物车</a></p>
  </li>
  <?php endforeach;?>
  </ul>
  <p style=&#39;clear:both&#39;></p>
  </section>
</body>
</html>

action.php

<?php
if(!empty($_GET[&#39;id&#39;])){
  require &#39;common.php&#39;;
  session_start();
  $id = $_GET[&#39;id&#39;];
  //把所选ID的商品信息遍历出来
  foreach ($arrPro as $key => $value) {
    if($id == $value[&#39;id&#39;]){
    $arrData = $arrPro[$key];
    }
  }

  //用一个新的二维数组把商品信息存起来
  $arrDatax[0][$arrData[&#39;id&#39;]] = $arrData[&#39;id&#39;];
  $arrDatax[1][$arrData[&#39;id&#39;]] = $arrData[&#39;img&#39;];
  $arrDatax[2][$arrData[&#39;id&#39;]] = $arrData[&#39;title&#39;];
  $arrDatax[3][$arrData[&#39;id&#39;]] = $arrData[&#39;price&#39;];
  $arrDatax[4][$arrData[&#39;id&#39;]] = 1;
  //判断是否有SESSION存在,有则在数组后添加,没有则直接存
  if(empty($_SESSION[&#39;shopcar&#39;])){
    $_SESSION[&#39;shopcar&#39;] = $arrDatax;
    header(&#39;Location:index.php&#39;);
  }else{
    //第一次购物之后的购物
    //重新取出来,防止数据覆盖
    $arrDataz = $_SESSION[&#39;shopcar&#39;];
    if(in_array($id,$arrDataz[0])){
      $arrDataz[4][$arrData[&#39;id&#39;]] += 1;
      $_SESSION[&#39;shopcar&#39;] = $arrDataz;
      header(&#39;Location:index.php&#39;);
    }else{
      $arrDataz[0][$arrData[&#39;id&#39;]] = $arrData[&#39;id&#39;];
      $arrDataz[1][$arrData[&#39;id&#39;]] = $arrData[&#39;img&#39;];
      $arrDataz[2][$arrData[&#39;id&#39;]] = $arrData[&#39;title&#39;];
      $arrDataz[3][$arrData[&#39;id&#39;]] = $arrData[&#39;price&#39;];
      $arrDataz[4][$arrData[&#39;id&#39;]] = 1;
      $_SESSION[&#39;shopcar&#39;] = $arrDataz;
      header(&#39;Location:index.php&#39;);
    }

  }
}else{
  echo "购物车没有商品!";
}

spcar.php

<?php
if(!empty($_GET[&#39;id&#39;])){
  require &#39;common.php&#39;;
  session_start();
  $id = $_GET[&#39;id&#39;];
  //把所选ID的商品信息遍历出来
  foreach ($arrPro as $key => $value) {
    if($id == $value[&#39;id&#39;]){
    $arrData = $arrPro[$key];
    }
  }

  //用一个新的二维数组把商品信息存起来
  $arrDatax[0][$arrData[&#39;id&#39;]] = $arrData[&#39;id&#39;];
  $arrDatax[1][$arrData[&#39;id&#39;]] = $arrData[&#39;img&#39;];
  $arrDatax[2][$arrData[&#39;id&#39;]] = $arrData[&#39;title&#39;];
  $arrDatax[3][$arrData[&#39;id&#39;]] = $arrData[&#39;price&#39;];
  $arrDatax[4][$arrData[&#39;id&#39;]] = 1;
  //判断是否有SESSION存在,有则在数组后添加,没有则直接存
  if(empty($_SESSION[&#39;shopcar&#39;])){
    $_SESSION[&#39;shopcar&#39;] = $arrDatax;
    header(&#39;Location:index.php&#39;);
  }else{
    //第一次购物之后的购物
    //重新取出来,防止数据覆盖
    $arrDataz = $_SESSION[&#39;shopcar&#39;];
    if(in_array($id,$arrDataz[0])){
      $arrDataz[4][$arrData[&#39;id&#39;]] += 1;
      $_SESSION[&#39;shopcar&#39;] = $arrDataz;
      header(&#39;Location:index.php&#39;);
    }else{
      $arrDataz[0][$arrData[&#39;id&#39;]] = $arrData[&#39;id&#39;];
      $arrDataz[1][$arrData[&#39;id&#39;]] = $arrData[&#39;img&#39;];
      $arrDataz[2][$arrData[&#39;id&#39;]] = $arrData[&#39;title&#39;];
      $arrDataz[3][$arrData[&#39;id&#39;]] = $arrData[&#39;price&#39;];
      $arrDataz[4][$arrData[&#39;id&#39;]] = 1;
      $_SESSION[&#39;shopcar&#39;] = $arrDataz;
      header(&#39;Location:index.php&#39;);
    }

  }
}else{
  echo "购物车没有商品!";
}

delete.php

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

Recommandations d'apprentissage associées :

Programmation PHP de l'entrée à la maîtrise

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer