實(shí)現(xiàn)MySQL書架的后臺(tái)操作流程
以下的文章主要說(shuō)明的是MySQL書架的后臺(tái),其中主要包括的有其功能的具體描述,MySQL數(shù)據(jù)庫(kù)的總體設(shè)計(jì),MySQL數(shù)據(jù)庫(kù)的實(shí)際操作,以下的文章就是對(duì)這些相關(guān)內(nèi)容的主要描述。望你瀏覽之后會(huì)有所收獲。
設(shè)計(jì)模式之迭代器 Iterator ,寫了一個(gè)list類SortedArrayList不知該叫什么名字,誰(shuí)有在墻上掛一個(gè)MySQL書架的經(jīng)驗(yàn)?
功能描述:
這只是項(xiàng)目中的小模塊,項(xiàng)目中有幾個(gè)欄目小說(shuō) 期刊 綜合,每個(gè)欄目都有書籍,在sns中,當(dāng)?shù)卿浻脩?,看到某本書的時(shí)候,可以點(diǎn)擊放入我的書架,選擇放入那個(gè)書架,每個(gè)書架可以放20本書,每個(gè)用戶最多可以建10個(gè)書架。對(duì)放到書架上的書,可以在我的排序中自動(dòng)拖動(dòng),而在其他的更新排序中按實(shí)際時(shí)間顯示,用戶不可以改變順序,
數(shù)據(jù)庫(kù)設(shè)計(jì):
數(shù)據(jù)庫(kù)主要用來(lái)保存放到MySQL書架中書籍的一些信息,封面 描述 地址 等,還有重要的 書架類別字段(用一個(gè)二維數(shù)組實(shí)現(xiàn)),每個(gè)書架有20個(gè)位置可以放書,可以設(shè)置一個(gè)字段,放書的時(shí)候是書的id ,沒(méi)放書的就用0來(lái)表示,可以用一個(gè)二維數(shù)組,數(shù)組的key 用來(lái)放書架的類別,值用來(lái)放此類別中的信息,
數(shù)據(jù)庫(kù)的操作:
數(shù)據(jù)庫(kù)操作說(shuō)明項(xiàng)目都是一樣的CURL基本的操作,具體到本項(xiàng)目中,就是先添加,每個(gè)用戶有一個(gè)默認(rèn)數(shù)據(jù),就是***個(gè)數(shù)組,用戶可以改變書架的名字就是數(shù)組的鍵值,對(duì)于每一個(gè)數(shù)組的操作,當(dāng)加入此書架時(shí),移動(dòng)位置時(shí) ,下架時(shí),當(dāng)向書架中添加書籍時(shí)還要判斷此書架是否已經(jīng)放滿沒(méi)有位置了,還有就是同一本書不能在一個(gè)書架中放入兩次以上。
對(duì)于整個(gè)字段,就是在添加書架類別的時(shí)候,新建一個(gè)數(shù)組,初始里面的數(shù)組,就是初始一個(gè)空書架。當(dāng)添加書架的時(shí)候判斷書架是否以超過(guò)***數(shù)目(可以在前面頁(yè)面根據(jù)等級(jí)控制用戶可以創(chuàng)建書架的個(gè)數(shù));create table bookshelf (uid int(11) ,shelf text);//創(chuàng)建書架表bookshelf
Sql代碼
$arr = array('默認(rèn)數(shù)據(jù)'=>'0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0');//插入默認(rèn)書架的數(shù)據(jù),一個(gè)數(shù)字,key 為書架名字,value為數(shù)據(jù)上的位置默認(rèn)為空,
- $text = serialize($arr);//序列化該數(shù)組
- insert into bookshelf (uid shelf) values( "$text" ,'$uid');//插入初始化數(shù)據(jù)
- //添加書架,書架'shelf1' 名字要唯一
- $shelfs=select shelf from bookshelf where uid = '$uid';//查詢出uid 的書架
- $a = unserialize($shelfs);//反序列化MySQL書架得到數(shù)組,
- for(int i=0;i<count($a);i++){//判斷此書架是否存在
- if($(a)[0]==shelf1){
- return "此書架以存在";
- }
- return true;
- }
- $p = array('shelf1'=>'0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0');
- $p = serialize($p);//插入新書架
- insert into bookshelf shelf values ('$p') where uid = '$uid';
- //添加書籍 book1 'bid1'到書架shelf1
- $shelfs1 = select shelf from bookshelf where uid = '$uid';//
- $b = unserialize($shelfs1);//
- for(int i=0;i<count($b);i++){
- if($b[i][0]=='$shelf1'){//得到要插入的MySQL書架
- $pk = explode('-','$b[i][1]);
- for(int num=1;num<count($pk[1]);num++){;/書架是否放滿
- if($pk[1][i]==0){
- for(int k=1;k<count($pk);k++){//判斷書架中是否有要插入的書
- if($pk[i][1]=='$bid1'){
- return '此書架已有此時(shí)';
- }else{//書架中沒(méi)有此書可以插入 默認(rèn)插入到后面
- if($pk[i][1]==0){
- $pk[i][1]==$bid1;//插入數(shù)組
- return implode("-",$pk[i]);//返回字符串
- }
- }else
- return "此書架以放滿";
- }
- //讀取書架 用于在加入書架時(shí)顯示的列表 書籍?dāng)?shù)量 存入一個(gè)數(shù)組中
- $arr = new array();
- $shlefs = select shelf from bookshelf where uid ='$uid';//
- $ss = unsersize($shelfs);//反序列化MySQL書架信息
- for(int nn=1;nn<count($ss);nn++){//把書架名字做key
- $key =$ss[i][0];
- $value=0;
- $n = explode("-",$ss[i][1]);
- for(int mm=1;mm<count($n);mm++){//得到此書架中的書數(shù)量
- if($n[1] !=0){
- $value++;
- }
- $arr[0]=$key;
- $arr[1]=$value;
- }
- //移動(dòng)書籍 把bid2 從5位置移動(dòng)到8位置
- $startpos = 2;
- $endpos = 8;
- if($startpos<0 || $startpos>20 || $endpos<0 || $endpos>20 || $startpos==$endpos)exit;
- $shelf = $_db->fetch_first("select * from `sns_shelf` where `uid`={$uid}");
- $shelf select shelf from bookshelf wher uid ='$uid';
- $shelfs=unserisize($shelf);//
- feach($shelfs as $key ,$value){
- $array = explode("-",$value);
- if($array[1] == 'bid2'){找到bid2所在的MySQL書架
- if($sarry[1][$startpos]==0)exit;//如果開(kāi)始位置沒(méi)有書不交換
- $temp = $sarry[1][$endpos];//交換位置
- $sarry[1][$endpos]=$sarry[1][$startpos];
- $sarry[1][$startpos]=$temp;
- $val = implode("-",$value[1]);
- $shelfs[1] = $val;
- serialize($shelfsl);//序列化shelf
- update bookshelf set shelf = shelfs where uid = '$uid';
- 更新
- }
- }
下架書籍