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数据库存取...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql的代码大全_MySql数目字函
- 下一篇: 《帝王计划:怪兽遗产》明日上线苹果 Ap