mysql复选框_前端框架(二)DIV多选复选框框的封装和MySql数据库存取

news/2024/7/6 22:21:00

图能够包括的寓意和含义是文字不能比拟的,先有一个效果图你也就知道这篇文章的主要内容是关于什么问题的。省去了一大堆文字的累述。看以下这张图:

SouthEast

这个需求就是要实现某个人具有第二种特性。具有多对多关系。比方某个人既喜欢运动、有喜欢上网等等。这样类似的需求在差点儿在每一个系统里面都有设计。并且非常多框架都实现了这种功能,假设让自己去实现就须要自己从建立表、逻辑、以及界面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_checkitem

WHERE itemid IN

(

SELECT itemids FROM fcs_useritem

WHERE 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()函数。看一下效果

9a5e8b8db9b1ae3b79a54f0d41f67164.png

这是一个简单的查询结果,再看一下使用这个函数的效果

b80ecbbd2618710a5da93d19129c1d42.png

该函数实现了将表中查出的某一列数据,转换成一个字符串数组。如上图所看到的,假设你就是想把查出的某一列转为字符串数组会非常实用。

这个多选能够封装为一个颗粒、把公共的东西抽象出来弄成一个个的颗粒,把它封装为一个控件,这个控件有自己的函数获得checkbox值和赋值等方法,还能够封装一些样式等,还在考虑怎么才干把checkbox封装到div标签中。以后再用到时仅仅须要引入这个div标签就可以,通过div标签传參控制多选。这涉及到自己定义标签怎么弄,在.NET中能够开发用户自己定义控件,那么在标签中认为也是能够开发自己定义标签库,还有类似于下拉列表框等等,都能够封装起来。

不知道还有没有别的思路能够实现用户控件、或标签的封装?开发自己定义标签查了一下好实现。把开发jar包引入进来实现几个接口就能够定义自己的标签库了,开发自己定义标签库能够实现用户自己定义功能。方便页面上的布局,同一时候发现如今的非常多产品有关界面框架,不管界面多美观、高端大气。都是封装原始的html标签元素,封装也就意味着能够带了自己心的特性,假设有特殊需求的时候能够自己适当封装一下。

方便别人编程、也提高了开发效率和编码的灵活性。


http://www.niftyadmin.cn/n/595136.html

相关文章

[阅读笔记]fsnotify源码阅读

fsnotify的github地址是https://github.com/howeyc/fsnotifyfsnotify是一个文件夹监控应用。可以使用创建一个watcher来对某个文件夹进行监控文件目录很简单,实际就两个程序文件,fsnotify.go 和 各平台的fsnotify_XXX.go后一个文件是各个不同平台的实现e…

CentOS7下python3+Flask+uWSGI+Nginx+Supervisor环境搭建

在生产环境中通常用uwsgi作为Flask的web服务网关,通过nginx反向代理进行负载均衡,通过supervior进行服务进行的管理。这一套搭下来还是有一些坑要踩,本文通过一个简单的Flask web应用记录了CentOS7下python3FlaskuWSGINginxSupervisor环境搭建…

JS框架刷新,iframe父子窗口间js方法调用

Response.Write("<script languagejavascript>window.open(x.aspx,main);</script>"); Javascript刷新页面的几种方法&#xff1a;1 history.go(0) 2 location.reload() 3 locationlocation 4 location.assign(location) 5 document.ex…

nicegram安卓_Nicegramapp

《Nicegramapp》这款谈天软件的功用十分的完全&#xff0c;不管小伙伴是想要找到你之间的谈天记载仍是想要保存记载的话&#xff0c;都能够只需要悄悄一点就能够完成了&#xff01;一同还可认为你主动过滤一些废物信息&#xff0c;让你享用到一个更夸姣的谈天环境&#xff01;N…

mysql运行sql错误1055_sql数据库执行错误代码1055怎么解决?

展开全部 错误代码1055。不过看了Expression里面的原因描述,我基本知道怎么回事了。原因是因为62616964757a686964616fe59b9ee7ad9431333431373139mysql中对 group by 用法的规定。严格意义上说,就是group by之后。select 的字段只能是group by的字段。或者需要加聚合函数的。…

非常非常容易理解和简明的CPU漏洞说明

为什么80%的码农都做不了架构师&#xff1f;>>> 非常非常容易理解和简明的CPU漏洞说明&#xff1a; 1.kfc里卖的有薯条、鸡块、汉堡、可乐。 2.李小璐去kfc点了个汉堡&#xff0c;吃完走了。 3.狗仔队a狗仔排在李小璐后面的后面&#xff0c;和点餐小姐姐说&#xf…

Python通过GeoIP获取IP信息(国家、城市、经纬度等)

IP地址信息是非常重要的情报信息&#xff0c;通过IP可以定位到该IP所在的国家、城市、经纬度等。 获取IP信息的方式有很多&#xff0c;很多服务商都提供了相应的地址库或API接口服务。 如国内的ipip.net&#xff0c;国外的ip-api.com、maxmind.com等。 很多公司都是使用Maxmind…

c++ 读取内存数据 基址_什么是物理地址?不知道没关系,今天程序员带你认识各种内存地址...

物理地址就是内存单元的绝对地址&#xff0c;物理地址0x0000就表示内存条的第一个存储单元&#xff0c;0x0010(16进制)就表示内存条的第17个存储单元&#xff0c;一个存储单元是1byte(8bit)。你问为什么是1byte&#xff1f;一个内存条是由若干个黑色的内存颗粒构成的。每一个内…