| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4795 人关注过本帖
标题:一个关于动态checkbox取值写入数据库问题(完美解决),谢谢各位!
只看楼主 加入收藏
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
个人习惯用客户端JS+服务器端代码来实现,有时候某些功能就是需要JS和服务器代码联合实现。
2010-04-24 15:03
nicechlk
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:330
专家分:187
注 册:2008-9-6
收藏
得分:0 
恩,很多时候用js实现起来的确很方便,也很强大。
可是js的代码也的确绞人,尤其新手

另外,2楼的思路也是很可取的,就是到最后一步行不通了,不知为何?本着技术是严谨的这个态度让我整理一下思路:
1,首先,通过rs.open "select * from info_product",conn,1,1 查询,
    <%if not (rs.eof and rs.bof) then
        for i=1 to rs.recordcount
            if rs.eof then
                exit for
            end if
            response.write rs("info_name")%>
    <input type="checkbox" name="info" value="<%=i%>">
    <%rs.movenext
        next
        rs.close
    end if%>   '到这儿是没问题的,一共有6条记录。
<input type="submit" value="确认">
2,然后对获取checkbox的值,并作处理。
<%dim var,var1
var=request.form("info")
var1=split(var,",")
for i=0 to ubound(var1)
    response.write var1(i)  '测试结果是:如果全选,则1 2 3 4 5 6,或者部分,1 3 5 ,这也是没问题的,
    set rs=conn.execute ("select * from info_product where id="&var1(i))   '此处做测试,用条件查询;
        do while not rs.eof        
            response.write rs("id") "&" rs("info_name")
        rs.movenext
        loop         '测试成功,可以按照此条件查询到结果;
        rs.close
    conn.execute ("update info_product set info_choice=true where id="&var1(i))  '为何全部都更新为true?并未按条件执行。
next%>

[ 本帖最后由 nicechlk 于 2010-4-24 19:36 编辑 ]

莫以善小而不为,莫以恶小而为之!
2010-04-24 18:09
nicechlk
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:330
专家分:187
注 册:2008-9-6
收藏
得分:0 
不好意思朋友们,问题基本解决。
其实上面所述之方法是可行的,更新其实是对的。
其原因如下:
conn.execute ("update info_product set info_choice=true where id="&var1(i))  这条语句只更新点选过的checkbox,未选的并没有做改变,因此,需要在for循环头部先清空所有info_choice的值,即conn.execute("update info_product set into_choice=false"),之后再执行更新就可以了。
另外,在点击确定之后,调用了form表单的action=" ?action=ti"执行的,不知为何checkbox所在的form表单并未刷新,从而造成错觉,以为更新无效。。。真是郁闷。
正琢磨如何在点击确定之后能让页面刷新。。。。


[ 本帖最后由 nicechlk 于 2010-4-24 19:38 编辑 ]

莫以善小而不为,莫以恶小而为之!
2010-04-24 19:36
nicechlk
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:330
专家分:187
注 册:2008-9-6
收藏
得分:0 
2,然后对获取checkbox的值,并作处理。
<%dim var,var1
var=request.form("info")
var1=split(var,",")
conn.execute ("update info_product set info_choice=flase) '先执行所有值均为否的操作;
for i=0 to ubound(var1)
    conn.execute ("update info_product set info_choice=true where id="&var1(i))
next
response.write "<script>alert('操作成功!');location.href='product_ClassManager.asp';</script>" '给个提示同时刷新页面;
%>
至此,问题完美解决,谢谢各位兄弟!同时给依然有此问题的朋友做一参考。

莫以善小而不为,莫以恶小而为之!
2010-04-24 21:21
nicechlk
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:330
专家分:187
注 册:2008-9-6
收藏
得分:0 
2,然后对获取checkbox的值,并作处理。
<%dim var,var1
var=request.form("info")
var1=split(var,",")
conn.execute ("update info_product set info_choice=flase) '先执行所有值均为否的操作;
for i=0 to ubound(var1)
    conn.execute ("update info_product set info_choice=true where id="&var1(i))
next
response.write "<script>alert('操作成功!');location.href='product_ClassManager.asp';</script>" '给个提示同时刷新页面;
%>
至此,问题完美解决,谢谢各位兄弟!同时给依然有此问题的朋友做一参考。

莫以善小而不为,莫以恶小而为之!
2010-04-24 21:23
nicechlk
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:330
专家分:187
注 册:2008-9-6
收藏
得分:0 
咋提交了2遍?

莫以善小而不为,莫以恶小而为之!
2010-04-24 21:24
gupiao175
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:40
帖 子:1787
专家分:7527
注 册:2007-6-27
收藏
得分:0 
以下是引用nicechlk在2010-4-23 13:29:17的发言:

嘿嘿。。。烧显示器这事还让你记在心上,实在不好意思。

没有错误提示,代码如下:
dim action,var,var1
action=request.QueryString("action")
if action="ti" then   
    var=request.Form("info")
    var1=split(var,",")
    var1=cint(var1)    '转换数字型;   
        for i=0 to ubound(var1)
            response.Write var1(i)   '输出正确;
            conn.execute ("update info_product set info_choice=true where id="&i)    '所有值都写入了true,貌似where没用;
        next
end if
搂主的研究细节的精神非常不错,值得我学习!哪怕问题解决了依旧还做一个总结和归纳!
我想问问:
  conn.execute ("update info_product set info_choice=true where id="& amp;i)    '所有值都写入了true,貌似where没用;
这句是否一开始其实就可以执行的或者说已经执行了,只是视觉上你认为他们没有写入数据库??晕了!

Q:1428196631,百度:开发地 即可找到我,有事请留言!
2010-04-25 19:58
gupiao175
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:40
帖 子:1787
专家分:7527
注 册:2007-6-27
收藏
得分:0 
另外给楼主一个建议,如果准备走WEB的道路。我建议JAVASCRIPT一定要学,哪怕你以后不做WEB,改做其他软件,其学习思想也是可以借鉴的!其语法很接近JAVA,有面向对象语言的特性!更像是缩减灵活版的JAVA。所以一定要学,推荐看图灵版的<<精通JAVASCRIPT>>!

Q:1428196631,百度:开发地 即可找到我,有事请留言!
2010-04-25 20:01
gupiao175
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:40
帖 子:1787
专家分:7527
注 册:2007-6-27
收藏
得分:0 
根据斑竹YMS123的JS代码,我也改写了一个JS取CHECKBOX值的方法!类似代码如下:
<script language="javascript">
function Submit_Click()
{
var info=document.getElementsByName("info");
var reVal="";
  for(var i=0;i<info.length;i++)
   {     if(info[i].checked)
         reVal+=info[i].value+"|";//选中加入临时变量
   }
   var fz=reVal.split("|");
   for (var j=0;j<reVal.length;j++)
   {
  var dd=parseInt(fz[j]);
  if(!isNaN(dd))
   {alert(dd);}//这里获得的就是取得的已选中的checkbox的VALUE值,可以直接处理的数据,传入AJAX或者拿去干什么都可以!
   }
}
</script>

<input type="checkbox" name="info" value="1">1
<input type="checkbox" name="info" value="2">2
<input type="checkbox" name="info" value="3">3
<input type="checkbox" name="info" value="4">4
<input type="checkbox" name="info" value="5">5
<input type="button" name="Submit" onClick="Submit_Click();" value="提交">

Q:1428196631,百度:开发地 即可找到我,有事请留言!
2010-04-25 20:38
nicechlk
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:330
专家分:187
注 册:2008-9-6
收藏
得分:0 
回复 17楼 gupiao175
conn.execute ("update info_product set info_choice=true where id="&i   '此条语句造成更新均为true,条件where不起作用;
conn.execute ("update info_product set info_choice=true where id="&var1(i)   '这样可以。只因提交后,页面未更新执行过的结果,造成假象。因此才想到用<script>.....</script>来刷新页面,如此以来,便可及时看到结果。
谢谢你的关注。

莫以善小而不为,莫以恶小而为之!
2010-04-25 22:23
快速回复:一个关于动态checkbox取值写入数据库问题(完美解决),谢谢各位!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031844 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved