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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mysql自定义多选排序_前端框架(二)DIV多选复选框框的封装和MySql数据库存取...

發布時間:2024/9/19 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql自定义多选排序_前端框架(二)DIV多选复选框框的封装和MySql数据库存取... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

圖可以包含的寓意和含義是文字不能比擬的,先有一個效果圖你也就知道這篇文章的主要內容是關于什么問題的,省去了一大堆文字的累述,看下面這張圖:

這個需求就是要實現某個人具有另外一種特性,具有多對多關系,比如某個人既喜歡運動、有喜歡上網等等,這樣類似的需求在幾乎在每個系統里面都有設計,而且很多框架都實現了這樣的功能,如果讓自己去實現就需要自己從建立表、邏輯、以及界面JS都需要自己手動去寫,下面是說下我的設計思路。

設計思路

將多個checkbox放到一個div元素中,利用jquery的函數進div和checkbox進行控制選取,取值和賦值可以寫一個循環既可以完成,至于表單提交既可以利用form標簽調教,也可以利用jquery的ajax方式提交,在對用戶體驗度要求高的系統中最好使用ajax方式提交,這是界面的設計部門,另外還有數據庫表的建立,我在做數據庫表時覺得很簡單但也遇到了一些問題。

數據庫需要建立一張關系表來存儲多對多關系,大家都知道到,需要注意的是在這張關系表里面怎么存儲,即多個復選框的ID是存儲在一個字段里面還是一個ID一條記錄呢,這兩種方式都可以實現;如果存儲在一個字段里面就需要把處理這個字段的邏輯寫在java類里面,我在做表單時從表單界面直接到數據庫SQL語句,中間邏輯已經封裝不可以修改,因此只能把IDS存在一個字段里面,感覺這種方式實現也挺快,減少了邏輯。

如下有兩張表fcs_checkitem、fcs_useritem,fcs_useritem為關系表它的itemids字段保存了fcs_checkitem表的itemid數組,想利用下面嵌套語句查詢:

SELECT * FROM fcs_checkitem

WHERE itemid IN

(

SELECT itemids FROM fcs_useritem

WHERE userid='00000075'

)

經測試這樣寫并不能查詢出結果,因為里面嵌套的查詢返回的結果是一個逗號隔開的字符串數據(001,002,,003),如果手動寫一個這樣的數據是可以查詢出來的,但是這樣動態的方式是查不出來的,上網查發現mysql是不支持這樣動態查詢的,發現有另一種思路實現這種關鍵字 “IN” 的功能。

SELECT group_concat(b.itemname) as itemnames

FROM fcs_useritem a, fcs_checkitem b

WHERE CONCAT(CONCAT(',',a.checkid),',')

LIKE CONCAT(CONCAT('%,',b.itemid),',%')

AND a.userid=':{$urlParam("formid")}:'

上面利用了concat()以及group_concat()這兩個函數,它原理是可以用幾個字理解:用LIKE 實現IN的功能。

這樣的例如有兩張表A和表B,A表的一個字段ids是B表字段id的數組,那么給B.id兩天加上%,讓A.ids字符數組兩端加上逗號,拿一個具體的數字舉個例子即是,1,去匹配,1,2,3,這個字符串,只要找到一個匹配的就會返回一條記錄,用這種方式實現類似于in的查詢。

Concat()函數

這個函數常用語連接多個字符串,例如

String Str1="世界";

String str2="你好"

Str3=concat(str1,str2);

Str3="世界你好",這個函數把這兩個字符串連接了起來,有時會覺得很有用;

Group_concat()函數,看一下效果

這是一個簡單的查詢結果,再看一下使用這個函數的效果

該函數實現了將表中查出的某一列數據,轉換成一個字符串數組,如上圖所示,如果你就是想把查出的某一列轉為字符串數組會很有用。

這個多選可以封裝為一個顆粒、把公共的東西抽象出來弄成一個個的顆粒,把它封裝為一個控件,這個控件有自己的函數獲得checkbox值和賦值等方法,還可以封裝一些樣式等,還在考慮怎么才能把checkbox封裝到div標簽中,以后再用到時只需要引入這個div標簽即可,通過div標簽傳參控制多選,這涉及到自定義標簽怎么弄,在.NET中可以開發用戶自定義控件,那么在標簽中覺得也是可以開發自定義標簽庫,還有類似于下拉列表框等等,都可以封裝起來。

不知道還有沒有別的思路可以實現用戶控件、或標簽的封裝?開發自定義標簽查了一下好實現,把開發jar包引入進來實現幾個接口就可以定義自己的標簽庫了,開發自定義標簽庫可以實現用戶自定義功能,方便頁面上的布局,同時發現現在的很多產品有關界面框架,無論界面多美觀、高端大氣,都是封裝原始的html標簽元素,封裝也就意味著可以帶了自己心的特性,如果有特殊需求的時候可以自己適當封裝一下。

方便別人編程、也提高了開發效率和編碼的靈活性。

原文:http://blog.csdn.net/lilongsheng1125/article/details/32070261

總結

以上是生活随笔為你收集整理的mysql自定义多选排序_前端框架(二)DIV多选复选框框的封装和MySql数据库存取...的全部內容,希望文章能夠幫你解決所遇到的問題。

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