问题描述
我想做个简单的点名系统,两个字段:姓名、签到,其中签到是复选框,到的勾上,没到的不打勾,然后将这些记录到数据库中,问题是怎样获取多个复选框的值并写入数据库,请高手们指点下,最好具体点,谢谢啦!!!
解决方案
解决方案二:
取多个复选框中选中的值for(inti=0;i<checkedListBox1.CheckedItems.Count;i++){levle=levle+checkedListBox1.CheckedItems[i].ToString()+"|";}
解决方案三:
到的勾上,没到的不打勾应该用radio吧,难道到和不到都可以同时打勾??获取checkboxString[]xxx=request.getParameterValues("xxx");返回一个数组
解决方案四:
使用String[]selected=request.getParameterValues("rec");//这样可以取到同一个name的checkbox已经选中的value值然后就看到你数据库怎么设计了,用一个字段的话,就把这个数组重新变成String了.还有修改的时候就要JS(没用Struts)让那些默认选中.如果使用了Struts的话就简单了,ActionForm对应的属性就是数组了,然后修改之前把String再转成数组放到Form中.自动就会已经选中的默认选中了.
解决方案五:
checkboxString[]xxx=request.getParameterValues("xxx");
解决方案六:
楼上的方法就行呀,将checkbox的name设为"xxx"然后到Action里面:String[]xxx=request.getParameterValues("xxx");那么这个数组里面就是被选中的checkbox里面的value值
解决方案七:
引用3楼AWUSOFT的回复:
使用String[]selected=request.getParameterValues("rec");//这样可以取到同一个name的checkbox已经选中的value值然后就看到你数据库怎么设计了,用一个字段的话,就把这个数组重新变成String了.还有修改的时候就要JS(没用Struts)让那些默认选中.如果使用了Struts的话就简单了,ActionForm对应的属性就是数组了,然后修改之前把String再转成数组放到Form中.自动就会已经选中的默认选中了.
就用这个方法吧。
解决方案八:
js:取得多选框值:functiongetValues(){varobj=document.getElementsByName('checkboxname');varqiandao='';for(vari=0;i<obj.length;i++){if(obj[i].checked==true){qiandao=qiandao+obj[i].value+';';}}alert(qiandao);}
解决方案九:
建议你使用struts2的标签,它的拦截器会帮你做好一切,具体用法你去查struts2资料,非常方便。
解决方案十:
谢谢各位的回答编译中的问题:varsnnum=document.getElementsByName("sn");eclipse里面显示document那里错误后面用到if(sn[i].checked){},显示checkedcannotberesolves这是什么原因,是不是要用到这些方法就要导入哪个包吗?重点问题:还有String[]selected=request.getParameterValues("rec");//这样可以取到同一个name的checkbox已经选中的value值这个方法取到的值怎样写入数据库,我的数据库表date中有3个字段:name(姓名)、date、signin,每行写入姓名、日期、是否签到(到的写1,未到写0),得到的这个数组要怎样分别写入signin的每条数据中?
解决方案十一:
[varsnnum=document.getElementsByName("sn");eclipse里面显示document那里错误后面用到if(sn[i].checked){}]是不是应该是:snnum[i].checked,我没有操作,只是猜测。【还有String[]selected=request.getParameterValues("rec");//这样可以取到同一个name的checkbox已经选中的value值这个方法取到的值怎样写入数据库,我的数据库表date中有3个字段:name(姓名)、date、signin,每行写入姓名、日期、是否签到(到的写1,未到写0),得到的这个数组要怎样分别写入signin的每条数据中?】其实selected数组对象很不好判断是选择了哪个,因为如果你选择了两个的话,那length就是2,我想问下楼主用的是struts1.2开发吗?
解决方案十二:
引用9楼wally1986的回复:
谢谢各位的回答编译中的问题:varsnnum=document.getElementsByName("sn");eclipse里面显示document那里错误后面用到if(sn[i].checked){},显示checkedcannotberesolves这是什么原因,是不是要用到这些方法就要导入哪个包吗?重点问题:还有String[]selected=request.getParameterValues("rec");//这样可以取到同一个name的checkbox已经选中的value值这个方法取到的值怎样写入数据库,我的数据库表date中有…
那就把checkbox的value属性设置为一个标识,比如可以使用户id,后台得到哪个用户的id表示该用户已经签到了,既然知道谁签到了,数据库就好写了varsnnum=document.getElementsByName("sn");eclipse里面显示document那里错误后面用到if(sn[i].checked){},显示checkedcannotberesolves这个里面,sn似乎没定义啊
解决方案十三:
String[]sn=request.getParameterValues("signin");sn是得到的checkbox数组
解决方案十四:
方法很多for(inti=0;i<checkedListBox1.CheckedItems.Count;i++){levle=levle+checkedListBox1.CheckedItems[i].ToString()+"|";}或者String[]xxx=request.getParameterValues("***");
解决方案十五:
for(inti=0;i<checkedListBox1.CheckedItems.Count;i++){levle=levle+checkedListBox1.CheckedItems[i]+"|";}levle=levle.subString(0,levle.length-1);
解决方案:
怎么显示啊
解决方案:
用数组的方法来传递<%.......String[]args=request.getParameter("checkbox");.....%>......<%for(inti=0;i<args.length;i++){%><%=args[i]%>,<%}%>
解决方案:
这个不是单纯的用数组取值就可以了,要把每个签到和姓名关联起来才行。1、应该是在jsp循环生成N对姓名和checkbox,所有checkbox的name属性相同,而每个的value属性赋值为姓名。然后在后台取得签到数组和姓名,循环姓名,判断签到数组中是否有每个姓名。2、或者在jsp循环生成N对姓名和checkbox,每个checkbox的name属性是姓名,所有的value属性为1。然后在后台取得所有姓名,循环姓名,根据姓名在request里取值,取得到就用1,取不到为0。以上2个方案有个前提就是,姓名是主键,不重复。总之是要把姓名和签到一一对应起来,绝不是用getParameterValues取代getParameter就可以了的事情。
解决方案:
引用17楼yuzuru的回复:
这个不是单纯的用数组取值就可以了,要把每个签到和姓名关联起来才行。1、应该是在jsp循环生成N对姓名和checkbox,所有checkbox的name属性相同,而每个的value属性赋值为姓名。然后在后台取得签到数组和姓名,循环姓名,判断签到数组中是否有每个姓名。2、或者在jsp循环生成N对姓名和checkbox,每个checkbox的name属性是姓名,所有的value属性为1。然后在后台取得所有姓名,循环姓名,根据姓名在request里取值,取得到就用1,取不到为0。以上2个方案有个前提就是,姓名是主键,不重复。总之是要把姓名和签到一一对应起来,绝不是用getParameterValues取代getParameter就可以了的事情。
楼上正解,我项目中就是这么写的O(∩_∩)O~
解决方案:
String[]xxx=request.getParameterValues("***");后,怎么把数组中提取的数,一起放入数据库呢?如:我提取到的数是:1;2;3;我定义了temp=1;2;3Stringsql="updatetablesetxm='"+temp+"'";selectall.executeUpdate(sql);为什么temp中的数据进不了数据库呢?
解决方案:
functiongetCheckboxValue(){varopts=document.getElementsByName("复选框Name");varlinkStr="";//获得选中的值for(i=0;i<opts.length;i++){if(opts[i].checked==true){linkStr+=opts[i].value+",";}}然后将linkStr作为参数传入后台,通过linkStr.split(",")进行处理.
解决方案:
functioncheckAll(){varAllcheckbox=document.getElementsByName("del");varflag=document.getElementById("box").value;if(flag=="f"){for(vari=0;i<Allcheckbox.length;i++){Allcheckbox[i].checked=true;}document.getElementById("box").value="t"}else{for(vari=0;i<Allcheckbox.length;i++){Allcheckbox[i].checked=false;}document.getElementById("box").value="f"}}