前端架構(二)DIV多選複選框框的封裝和MySql資料庫存取

來源:互聯網
上載者:User

標籤:資料庫   效率   產品   方式   列表   term   欄位   jquer   效果   

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

         

         這個需求就是要實現某個人具有第二種特性。具有多對多關係。比方某個人既喜歡運動、有喜歡上網等等。這樣類似的需求在差點兒在每一個系統裡面都有設計。並且非常多架構都實現了這種功能,假設讓自己去實現就須要自己從建立表、邏輯、以及介面JS都須要自己手動去寫,以下是說下我的設計思路。

         設計思路

          將多個checkbox放到一個div元素中。利用jquery的函數進div和checkbox進行控制選取。取值和賦值能夠寫一個迴圈既能夠完畢。至於表單提交既能夠利用form標籤調教。也能夠利用jquery的ajax方式提交。在對使用者體驗度要求高的系統中最好使用ajax方式提交,這是介面的設計部門,另外還有資料庫表的建立,我在做資料庫表時認為非常easy但也遇到了一些問題。

        

          資料庫須要建立一張關係表來儲存多對多關係,大家都知道到,須要注意的是在這張關係表裡面怎麼儲存。即多個複選框的ID是儲存在一個欄位裡面還是一個ID一條記錄呢。這兩種方式都能夠實現;假設儲存在一個欄位裡面就須要把處理這個欄位的邏輯寫在java類裡面,我在做表單時從表單介面直接到資料庫SQL語句,中間邏輯已經封裝不能夠改動,因此僅僅能把IDS存在一個欄位裡面,感覺這樣的方式實現也挺快,降低了邏輯。


         例如以下有兩張表fcs_checkitem、fcs_useritem。fcs_useritem為關係表它的itemids欄位儲存了fcs_checkitem表的itemid數組,想利用以下嵌套語句查詢:

SELECT * FROM fcs_checkitemWHERE itemid IN(SELECT itemids FROM fcs_useritemWHERE userid=‘00000075‘)

          經測試這樣寫並不能查詢出結果,由於裡面嵌套的查詢返回的結果是一個逗號隔開的字串資料(001,002。,003),假設手動寫一個這種資料是能夠查詢出來的,可是這樣動態方式是查不出來的,上網查發現mysql是不支援這樣動態查詢的,發現有還有一種思路實現這種keyword “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標籤元素,封裝也就意味著能夠帶了自己心的特性,假設有特殊需求的時候能夠自己適當封裝一下。

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

前端架構(二)DIV多選複選框框的封裝和MySql資料庫存取

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.