0

0

实现MySQL书架的后台操作流程

php中文网

php中文网

发布时间:2016-06-07 16:09:42

|

1524人浏览过

|

来源于php中文网

原创

以下的文章主要说明的是MySQL书架的后台,其中主要包括的有其功能的具体描述,MySQL数据库的总体设计,MySQL数据库的实际操作,以下的文章就是对这些相关内容的主要描述。望你浏览之后会有所收获。 设计模式之迭代器 Iterator ,写了一个list类SortedArrayLi

以下的文章主要说明的是mysql书架的后台,其中主要包括的有其功能的具体描述,mysql数据库的总体设计,mysql数据库的实际操作,以下的文章就是对这些相关内容的主要描述。望你浏览之后会有所收获。

设计模式之迭代器 Iterator ,写了一个list类SortedArrayList不知该叫什么名字,谁有在墙上挂一个MySQL书架的经验?

功能描述:

这只是项目中的小模块,项目中有几个栏目小说 期刊 综合,每个栏目都有书籍,在sns中,当登录用户,看到某本书的时候,可以点击放入我的书架,选择放入那个书架,每个书架可以放20本书,每个用户最多可以建10个书架。对放到书架上的书,可以在我的排序中自动拖动,而在其他的更新排序中按实际时间显示,用户不可以改变顺序,

数据库设计:

数据库主要用来保存放到MySQL书架中书籍的一些信息,封面 描述 地址 等,还有重要的 书架类别字段(用一个二维数组实现),每个书架有20个位置可以放书,可以设置一个字段,放书的时候是书的id ,没放书的就用0来表示,可以用一个二维数组,数组的key 用来放书架的类别,值用来放此类别中的信息,

Seed-Music
Seed-Music

字节跳动推出的AI音乐生成与编辑工具

下载

数据库的操作:

数据库操作说明项目都是一样的CURL基本的操作,具体到本项目中,就是先添加,每个用户有一个默认数据,就是第一个数组,用户可以改变书架的名字就是数组的键值,对于每一个数组的操作,当加入此书架时,移动位置时 ,下架时,当向书架中添加书籍时还要判断此书架是否已经放满没有位置了,还有就是同一本书不能在一个书架中放入两次以上。

对于整个字段,就是在添加书架类别的时候,新建一个数组,初始里面的数组,就是初始一个空书架。当添加书架的时候判断书架是否以超过最大数目(可以在前面页面根据等级控制用户可以创建书架的个数);create table bookshelf (uid int(11) ,shelf text);//创建书架表bookshelf

Sql代码

$arr = array('默认数据'=>'0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0');//插入默认书架的数据,一个数字,key 为书架名字,value为数据上的位置默认为空,
 

<ol class="dp-xml"><li class="alt"><span><span>$</span><span class="attribute">text</span><span> = </span><span class="attribute-value">serialize</span><span>($arr);//序列化该数组   </span></span></li><li><span>insert into bookshelf (uid shelf) values( "$text" ,'$uid');//插入初始化数据   </span></li><li class="alt"><span>//添加书架,书架'shelf1' 名字要唯一   </span></li><li><span>$</span><span class="attribute">shelfs</span><span>=</span><span class="attribute-value">select</span><span> shelf from bookshelf where </span><span class="attribute">uid</span><span> = </span><span class="attribute-value">'$uid'</span><span>;//查询出uid 的书架   </span></li><li class="alt"><span>$</span><span class="attribute">a</span><span> = </span><span class="attribute-value">unserialize</span><span>($shelfs);//反序列化MySQL书架得到数组,   </span></li><li><span>for(int </span><span class="attribute">i</span><span>=</span><span class="attribute-value">0</span><span>;i</span><span class="tag"><</span><span class="tag-name">count</span><span>($a);i++){//判断此书架是否存在   </span></li><li class="alt"><span>if($(a)[0]==shelf1){   </span></li><li><span>return "此书架以存在";   </span></li><li class="alt"><span>}   </span></li><li><span>return true;   </span></li><li class="alt"><span>}   </span></li><li><span>$</span><span class="attribute">p</span><span> = </span><span class="attribute-value">array</span><span>('shelf1'=</span><span class="tag">></span><span>'0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0');   </span></li><li class="alt"><span>$</span><span class="attribute">p</span><span> = </span><span class="attribute-value">serialize</span><span>($p);//插入新书架   </span></li><li><span>insert into bookshelf shelf values ('$p') where </span><span class="attribute">uid</span><span> = </span><span class="attribute-value">'$uid'</span><span>;   </span></li><li class="alt"><span>//添加书籍 book1 'bid1'到书架shelf1   </span></li><li><span>$</span><span class="attribute">shelfs1</span><span> = </span><span class="attribute-value">select</span><span> shelf from bookshelf where </span><span class="attribute">uid</span><span> = </span><span class="attribute-value">'$uid'</span><span>;//   </span></li><li class="alt"><span>$</span><span class="attribute">b</span><span> = </span><span class="attribute-value">unserialize</span><span>($shelfs1);//   </span></li><li><span>for(int </span><span class="attribute">i</span><span>=</span><span class="attribute-value">0</span><span>;i</span><span class="tag"><</span><span class="tag-name">count</span><span>($b);i++){   </span></li><li class="alt"><span>if($b[i][0]=='$shelf1'){//得到要插入的MySQL书架   </span></li><li><span>$</span><span class="attribute">pk</span><span> = </span><span class="attribute-value">explode</span><span>('-','$b[i][1]);   </span></li><li class="alt"><span>for(int </span><span class="attribute">num</span><span>=</span><span class="attribute-value">1</span><span>;num</span><span class="tag"><</span><span class="tag-name">count</span><span>($pk[1]);num++){;/书架是否放满   </span></li><li><span>if($pk[1][i]==0){   </span></li><li class="alt"><span>for(int </span><span class="attribute">k</span><span>=</span><span class="attribute-value">1</span><span>;k</span><span class="tag"><</span><span class="tag-name">count</span><span>($pk);k++){//判断书架中是否有要插入的书   </span></li><li><span>if($pk[i][1]=='$bid1'){   </span></li><li class="alt"><span>return '此书架已有此时';   </span></li><li><span>}else{//书架中没有此书可以插入 默认插入到后面   </span></li><li class="alt"><span>if($pk[i][1]==0){   </span></li><li><span>$pk[i][1]==$bid1;//插入数组   </span></li><li class="alt"><span>return implode("-",$pk[i]);//返回字符串   </span></li><li><span>}   </span></li><li class="alt"><span>}else   </span></li><li><span>return "此书架以放满";   </span></li><li class="alt"><span>}   </span></li><li><span>//读取书架 用于在加入书架时显示的列表 书籍数量 存入一个数组中   </span></li><li class="alt"><span>$</span><span class="attribute">arr</span><span> = </span><span class="attribute-value">new</span><span> array();   </span></li><li><span>$</span><span class="attribute">shlefs</span><span> = </span><span class="attribute-value">select</span><span> shelf from bookshelf where </span><span class="attribute">uid</span><span> =</span><span class="attribute-value">'$uid'</span><span>;//   </span></li><li class="alt"><span>$</span><span class="attribute">ss</span><span> = </span><span class="attribute-value">unsersize</span><span>($shelfs);//反序列化MySQL书架信息   </span></li><li><span>for(int </span><span class="attribute">nn</span><span>=</span><span class="attribute-value">1</span><span>;nn</span><span class="tag"><</span><span class="tag-name">count</span><span>($ss);nn++){//把书架名字做key   </span></li><li class="alt"><span>$</span><span class="attribute">key</span><span> =$ss[i][0];   </span></li><li><span>$</span><span class="attribute">value</span><span>=</span><span class="attribute-value">0</span><span>;   </span></li><li class="alt"><span>$</span><span class="attribute">n</span><span> = </span><span class="attribute-value">explode</span><span>("-",$ss[i][1]);   </span></li><li><span>for(int </span><span class="attribute">mm</span><span>=</span><span class="attribute-value">1</span><span>;mm</span><span class="tag"><</span><span class="tag-name">count</span><span>($n);mm++){//得到此书架中的书数量   </span></li><li class="alt"><span>if($n[1] !=0){   </span></li><li><span>$value++;   </span></li><li class="alt"><span>}   </span></li><li><span>$arr[0]=$key;   </span></li><li class="alt"><span>$arr[1]=$value;   </span></li><li><span>}   </span></li><li class="alt"><span>//移动书籍 把bid2 从5位置移动到8位置   </span></li><li><span>$</span><span class="attribute">startpos</span><span> = </span><span class="attribute-value">2</span><span>;   </span></li><li class="alt"><span>$</span><span class="attribute">endpos</span><span> = </span><span class="attribute-value">8</span><span>;   </span></li><li><span>if($startpos</span><span class="tag"><</span><span class="tag-name">0</span><span> || $startpos</span><span class="tag">></span><span>20 || $endpos</span><span class="tag"><</span><span class="tag-name">0</span><span> || $endpos</span><span class="tag">></span><span>20 || $</span><span class="attribute">startpos</span><span>==$endpos)exit;   </span></li><li class="alt"><span>$</span><span class="attribute">shelf</span><span> = $_db-</span><span class="tag">></span><span>fetch_first("select * from `sns_shelf` where `uid`={$uid}");   </span></li><li><span>$shelf select shelf from bookshelf wher </span><span class="attribute">uid</span><span> =</span><span class="attribute-value">'$uid'</span><span>;   </span></li><li class="alt"><span>$</span><span class="attribute">shelfs</span><span>=</span><span class="attribute-value">unserisize</span><span>($shelf);//   </span></li><li><span>feach($shelfs as $key ,$value){   </span></li><li class="alt"><span>$</span><span class="attribute">array</span><span> = </span><span class="attribute-value">explode</span><span>("-",$value);   </span></li><li><span>if($array[1] == 'bid2'){找到bid2所在的MySQL书架   </span></li><li class="alt"><span>if($sarry[1][$startpos]==0)exit;//如果开始位置没有书不交换   </span></li><li><span>$</span><span class="attribute">temp</span><span> = $sarry[1][$endpos];//交换位置   </span></li><li class="alt"><span>$sarry[1][$endpos]=$sarry[1][$startpos];   </span></li><li><span>$sarry[1][$startpos]=$temp;   </span></li><li class="alt"><span>$</span><span class="attribute">val</span><span> = </span><span class="attribute-value">implode</span><span>("-",$value[1]);   </span></li><li><span>$shelfs[1] = $val;   </span></li><li class="alt"><span>serialize($shelfsl);//序列化shelf   </span></li><li><span>update bookshelf set </span><span class="attribute">shelf</span><span> = </span><span class="attribute-value">shelfs</span><span> where </span><span class="attribute">uid</span><span> = </span><span class="attribute-value">'$uid'</span><span>;  </span></li><li class="alt"><span>更新   </span></li><li><span>}   </span></li><li class="alt"><span>}   </span></li></ol>


下架书籍

 


热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
minimax入口地址汇总
minimax入口地址汇总

本专题整合了minimax相关入口合集,阅读专题下面的文章了解更多详细地址。

3

2026.03.16

C++多线程并发控制与线程安全设计实践
C++多线程并发控制与线程安全设计实践

本专题围绕 C++ 在高性能系统开发中的并发控制技术展开,系统讲解多线程编程模型与线程安全设计方法。内容包括互斥锁、读写锁、条件变量、原子操作以及线程池实现机制,同时结合实际案例分析并发竞争、死锁避免与性能优化策略。通过实践讲解,帮助开发者掌握构建稳定高效并发系统的关键技术。

6

2026.03.16

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

114

2026.03.13

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

141

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

396

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

65

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

111

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

113

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

245

2026.03.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 13.5万人学习

CSS3 教程
CSS3 教程

共18课时 | 7.3万人学习

Go语言实战之 GraphQL
Go语言实战之 GraphQL

共10课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号