日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

php mysql购物车实现原理_PHP实现购物车的思路和源码分析

發布時間:2024/9/27 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php mysql购物车实现原理_PHP实现购物车的思路和源码分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這里主要是記錄下自己的購物車的思路,具體功能實現,但是尚未在實際項目中用到,不對之處歡迎指正

項目中需要添加購物車。

目錄說明

buy.php 點擊購買之后的操作

car.php 購物車,顯示購買的東西

conn.php 數據庫連接參數

delete.php 刪除商品

index.php 入口文件

shop.sql 數據庫sql文件

test.png 商品圖片

首先需要理解的是,購物車操作是SESSION的原理

一個物品加進去是一個數組,存ID NAME NUM

那么兩個物品就是二維數組,所以用二維數組來操作就可以了。

1.創建數據庫shop,導入shop.sql。這是我們的產品

2.修改conn中的鏈接數據庫密碼

3.仔細閱讀源碼

3.1 點擊購買之后轉到buy.php中

3.2.0 判斷購物車的SESSION是否是數組,是則購物車有物品[產品ID是數組的KEY]

3.2.1 判斷傳遞的ID在購物車的SESSION是否存在,不存在就添加進去,數量默認為1[產品ID是數組的KEY]

3.2.2 判斷傳遞的ID在購物車的SESSION是否存在,存在就把數量+1[產品ID是數組的KEY]

3.2.3 判斷購物車的SESSION是否是數組,不是則直接存入SESSION[產品ID是數組的KEY]

3.3 添加完成后轉到car.php,循環展示出購買的東西

3.4 點擊不想購買的商品,刪除delete.php,刪除對應SESSION下key對應的ID值即可

index.php

include ("conn.php");//引入數據配置

$sql="select * from produce";//查詢所有商品

$rs=mysql_query($sql,$conn);//執行sql語句,得到一個結果集

while($row=mysql_fetch_array($rs))//遍歷結果集

{

?>

貨物名稱:<?php echo $row["name"]?>
貨物價格:<?php echo $row["price"]?>
&pname=<?php echo $row["name"]?>">購買

}

?>

buy.php

session_start();//使用session之前一定要將session開啟

ob_start();//要清空緩存就必須ob_start()

$pid=$_GET["id"];//得到購買物品的id

$name=$_GET["pname"];//得到購買物品的名字

$arr=$_SESSION["mycar"];//將session中的變量取出來

//下面先判斷這個變量是否是數組,可以得到以前是否買過東西

if(is_array($arr))

{

//如果是數組,說明以前買過東西

//如果買過東西又分兩種情況:

if(array_key_exists($pid,$arr))

{

//1、array_key_exists($pid,$arr)判斷$arr中是否存在鍵值為$pid的一個一維數組,如果存在的話,就說明此商品以前購買過,只需要把數量加1

$uu=$arr[$pid]; //從二維數組里拿出對應的一維數組,該一維數組包括id name num 三個值

$uu["num"]=$uu["num"]+1; //改變數量,將數量加1

$arr[$pid]=$uu; //改完后再將此一維數組放回二維數組中

}

else

{ //2.此商品第一次購買,就將得到的id和name值組成一個一維數組

$arr[$pid]=array("pid"=>$pid,"name"=>$name,"num"=>1);

}

}

else

{

//還沒有買過東西

$arr[$pid]=array("pid"=>$pid,"name"=>$name,"num"=>1);

}

$_SESSION["mycar"]=$arr;//購買完后,將此數組重新放入session中,便可以在各個頁面看到此session

ob_clean();//清空緩存

header("location:car.php");//跳轉到購物車界面(car.php)

//var_dump($_SESSION);

?>

car.php

session_start();//啟用session

$arr=$_SESSION["mycar"];//從session中拿出二維數組

?>

將數組里的數據即客戶所購買的物品展示出來

商品ID商品名稱商品數量刪除

foreach($arr as $a)//遍歷這個二維數組

{

?>

<?php echo $a["pid"]?>//物品的id<?php echo $a["name"]?>//物品的名稱<?php echo $a["num"]?>//物品的數量刪除//點擊刪除超鏈接到”delete.php”,將物品的id傳過去

}

?>

返回繼續購物

conn.php

$conn=mysql_connect("localhost","root","root");//連接數據庫服務器

mysql_select_db("shop",$conn);//選擇數據庫

mysql_query("set names utf8");//設置連接數據庫編碼

?>

delete.php

session_start();//啟動session

ob_start();//清空緩存必須啟動的項

$pid=$_GET["id"];//得到通過get方式傳過來的id

$arr=$_SESSION["mycar"];//拿出session里的二維數組

foreach($arr as$key=>$proId)//遍歷該二維數組中的鍵值,這里也就是商品的id

{

if($key==$pid)//判斷鍵值等于傳過來的商品id

{

unset($arr[$key]);//清除該一維數組

}

}

$_SESSION["mycar"]=$arr;//將清除之后的二維數組重新放到session里

ob_clean();//清除緩存

header("location:car.php");//跳轉到購物車

?>

shop.sql

/*

Navicat MySQL Data Transfer

Source Server : 127.0.0.1

Source Server Version : 50536

Source Host : localhost:3306

Source Database : shop

Target Server Type : MYSQL

Target Server Version : 50536

File Encoding : 65001

Date: 2016-04-25 09:35:18

*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------

-- Table structure for `produce`

-- ----------------------------

DROP TABLE IF EXISTS `produce`;

CREATE TABLE `produce` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(50) DEFAULT NULL,

`pimg` varchar(200) DEFAULT NULL,

`price` int(11) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

-- ----------------------------

-- Records of produce

-- ----------------------------

INSERT INTO `produce` VALUES ('1', '測試', 'test.png', '1');

INSERT INTO `produce` VALUES ('2', '測試2', 'test.png', '2');

INSERT INTO `produce` VALUES ('3', '測試3', 'test.png', '1');

INSERT INTO `produce` VALUES ('4', '測試4', 'test.png', '2');

INSERT INTO `produce` VALUES ('5', '測試5', 'test.png', '9');

以上內容希望幫助到大家,很多PHPer在進階的時候總會遇到一些問題和瓶頸,業務代碼寫多了沒有方向感,不知道該從那里入手去提升,對此我整理了一些資料,包括但不限于:分布式架構、高可擴展、高性能、高并發、服務器性能調優、TP6,laravel,Redis,Swoole、Swoft、Kafka、Mysql優化、shell腳本、Docker、微服務、Nginx等多個知識點高級進階干貨需要的可以免費分享給大家

總結

以上是生活随笔為你收集整理的php mysql购物车实现原理_PHP实现购物车的思路和源码分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。