主题:  常见问题这里来提

蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
注册:2001/12/20 15:57:57
#12005/1/24 14:44:10
为了清理版块,对一些小问题不允许再发专帖,均发到本帖下。
虽然并不提倡不经思索的提问,但这里给急需解决问题者留些空间,今后普通问题全发在这里,讨论。
需要开新帖的必须是原创的帖子,转帖需要有价值的文章,典型的问题等,原则是没有水平和思想的提问不允许开新帖。

新帖要求:

1、原创文章,包括函数、类、组件等代码,教程、编程论文等;
2、编程和开发心得、经验、技巧文章;
3、有一定典型性的问题,但发帖者需对帖子进行一定阐述,网友可集中讨论该问题集;


不允许发新帖的:

1、救命帖,该类帖直接删除;
2、调试出错,原则以自行解决为主,自己无法解决,需到置顶帖提问,否则直接删除;
3、函数或语句等不懂,或一些简单实现一时无法解决的,到置顶帖发表;
4、想讨论专题,但自己没有阐述,作普通问题到置项帖发表或直接删除;
5、不动脑筋,索取源代码者直接删除;
6、题目庞大,而自己一无所思,诸如“求大侠这个系统怎么做?”之类的问题,直接删除;

下设几个问题专答区,方便问答:

  • 程序调试出错专答区
    www.5d.cn/bbs/NewsDetail.asp?GroupName=ASP%BC%B0%2Enet&dp=10&lp=1&id=1385193

  • 数据库问题专答区
    www.5d.cn/bbs/NewsDetail.asp?GroupName=ASP%BC%B0%2Enet&dp=10&lp=1&id=1385190

    现在不按规则发表很多,已经删除部分。望各位按新规则发表。
  • 编辑历史:[此帖最近一次被 蓝鲸 编辑过(编辑时间:2005-01-30 20:25:24)]

    非常大鱼

    guchao911

    职务:普通成员
    等级:1
    金币:0.0
    发贴:64
    注册:2004/12/18 16:01:52
    #22005/1/24 15:52:49
    我在做一个注册页面,有十个字段(如:用户名,密码等),有些字段 不是必填的
    但如果不填写字段,就会出现以下错误,请教怎么解决?
    错误类型:
    Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
    [Microsoft][ODBC Microsoft Access Driver] 字段 'useer.address' 不能是零长度的字符串。



    蓝鲸

    职务:版主
    等级:5
    金币:42.1
    发贴:2614
    注册:2001/12/20 15:57:57
    #32005/1/24 16:02:28
    在数据库设计中,这些字段的属性应该是允许为空值,ACCESS中设置为非必填字段


    非常大鱼

    浮尘

    职务:普通成员
    等级:3
    金币:7.0
    发贴:1258
    注册:2001/11/19 12:41:09
    #42005/1/25 17:17:25
    在ASP中如何去掉字符串中的HTML标签?有什么好的办法或直接通用的函数吗?
    搜了一下,好象PHP做这件事很容易。
    ----------------------------------------------------------------------------------------------------------
    是去掉,不是不显示。不知版主为什么封我的帖子,是认为这个问题太简单还是其他原因?



    蓝鲸

    职务:版主
    等级:5
    金币:42.1
    发贴:2614
    注册:2001/12/20 15:57:57
    #52005/1/25 17:23:31
    可以使用正则表达式,类似UBB的做法。
    工具集中有UBB的介绍,本版可以搜索正则表达式的使用。


    非常大鱼

    浮尘

    职务:普通成员
    等级:3
    金币:7.0
    发贴:1258
    注册:2001/11/19 12:41:09
    #62005/1/25 17:24:47
    问题是这样的,我要从库中提取文章标题,显示在表格内,表格宽度定死了,只能放20个汉字,要对文章标题进行截断,超过部分用省略号显示。现在发现文章标题中有html标签,如<font><strong>等等,影响长度的判断,截取后显示也不正常了。因此想寻求一种通用的方法,将字符串中的HTML标签去掉。又不想把所有的HTML标签都去search一遍。想滤掉<>之间的内容,又怕文章标题中有它,把非HTML标签过滤了。



    浮尘

    职务:普通成员
    等级:3
    金币:7.0
    发贴:1258
    注册:2001/11/19 12:41:09
    #72005/1/25 17:37:05
    UBB的做法还不是一个标签一个标签的替换?若非不得已,不想使用这种方法。



    缺缺

    职务:管理员
    等级:8
    金币:41.0
    发贴:9620
    注册:2004/1/14 19:14:47
    #82005/1/25 20:07:26
    从开始出查找,遇到”<“标记开始忽略,直到发现”>“



    蓝鲸

    职务:版主
    等级:5
    金币:42.1
    发贴:2614
    注册:2001/12/20 15:57:57
    #92005/1/25 21:59:59
    这要根据程序需要,在输入时应该有一定的规则,一般标题的做法不使用html标记,如果一定要使用,也只这些<p></p> <font color=''><span>等最好用程序控制输入,否则html的标记本身很乱,如<P><P><Font>< font><A HREF=AAA>< a href='aaa'><a href="aaa">,要做好这些兼容就够麻烦的,如果能控制几种规则输入,对编程的简化会有好处。比如只允许<strong></strong>只要把这几个替换成空符号就可以,还有如<font color="#888888"></font>等最好用正则表达式替换。
    不过除非特殊的需要,标题不要用标签,化这样的精力去满足一个不太需要的实用,是否有必要。


    非常大鱼

    浮尘

    职务:普通成员
    等级:3
    金币:7.0
    发贴:1258
    注册:2001/11/19 12:41:09
    #102005/1/25 22:46:47
    建议是不错,可是有时上级下达的任务以前并不是自己规划的,也就是说,他给你一个东西,然后告诉你他的需求,让你去做。你并不能控制原始素材的。所以才有如此一问。



    浮尘

    职务:普通成员
    等级:3
    金币:7.0
    发贴:1258
    注册:2001/11/19 12:41:09
    #112005/1/25 22:54:58
    在PHP中有strip_tags(string)函数能满足这样的需求(我不会PHP,只是搜索出来的),只是想在ASP中求解一个类似的功能。我想这个功能用处还是很大的,所以提到这里,请诸方家共讨。如果认为我是懒得自己做,到这里来求代码。大家可以不必回复了。毕竟,我工作中也就用那么一两处,发现一个过一个,用笨办法又有什么呢。



    蓝鲸

    职务:版主
    等级:5
    金币:42.1
    发贴:2614
    注册:2001/12/20 15:57:57
    #122005/1/25 22:55:31
    如果要正确解释html几乎不可能,没见到现在浏览器的BUG也很多,所以建议管理员按一定方法发表,不要使用一些怪壁标签,对经常使用的标签能解释,我想任务基本完成,偶然出现一些长短问题,也不要太计较了,或者到出现了也可以再修改程序。


    非常大鱼

    浮尘

    职务:普通成员
    等级:3
    金币:7.0
    发贴:1258
    注册:2001/11/19 12:41:09
    #132005/1/26 10:51:16
    自己写了个小函数,只能替换指定的标签,但扩充还算容易,大家改良吧。
    <%
      Function TripHTML(str)
                    Dim tags,regEx
    	tags=Array("font","b","strong","span")  '在这时指定要过滤掉的标签
    	Set regEx=New RegExp
    	regEx.IgnoreCase=True
    	For I=0 To Ubound(tags)
    	  regEx.Pattern="</?" & tags(I) & ".*?>"
    	  Do While regEx.Test(str)
    	    str=regEx.Replace(str,"")
    	  Loop
    	Next
    	TripHTML=str
      End Function
      str="<b>我<font color=""red"">喜</font>欢<font color=""red"">孤</font>独</b><span style=""border:1px solid black"">I Love It</span>"
      Response.Write str
      Response.Write "<br>"
      response.Write TripHTML(str)
    %>
    



    guchao911

    职务:普通成员
    等级:1
    金币:0.0
    发贴:64
    注册:2004/12/18 16:01:52
    #142005/1/26 19:35:21
    <%
    dim conn,rs,sql,htmlcode
    %>
    <!--#include file="includes/dbconn.inc"-->
    <%
    arrCart     = Session("myCart"
    CartIndex     = Session("cartIndex"
    count=0
    for i=0 to CartIndex
        if arrCart(i,2)<>"" then
        if arrCart(i,2)>0 then
            count=count+1
        end if
    end if
    next
    if count = 50 then
        response.redirect"showmsg.asp?msg=购物车已满!"
    end if
    idbook        = request.form("idbook"
    bookname    = request.form("bookname"
    purchase    = request.form("purchase"
    availstock = request.form("availstock"
    if purchase <>"" then
        purchase=Cint(purchase)
        availstock=Cint(availstock)
        if purchase>availstock then
            htmlcode="你购买地数量超过了库存图书的数量!&nbsp<a href=""viewitem.asp?idbook="&idbook&"&bookname="&bookname&""">返回</a>"
            response.write htmlcode
        else
            if purchase>0 then
                call openDB()
                sql="select price,discount from books where idbook="&idbook&" and bookname='"&bookname&"'"
                set rs=conn.execute(sql)
                nowprice=rs("price"*(100-rs("discount")/100
                arrCart(CartIndex,0) = idbook
                arrCart(CartIndex,1) = bookname
                arrCart(CartIndex,2) = purchase
                arrCart(CartIndex,3) = nowprice
                session("myCart"      = arrCart
                CartIndex              = CartIndex + 1
                Session("cartIndex" = CartIndex
                call closeDB()
            end if
            response.redirect "showcart.asp"
        end if
    else
        response.write"你没有选择图书数量!"
    end if
    %>
    错误类型:
    Microsoft VBScript 运行时错误 (0x800A000D)
    类型不匹配: 'arrCart'

    请教版主怎么解决啊



    蓝鲸

    职务:版主
    等级:5
    金币:42.1
    发贴:2614
    注册:2001/12/20 15:57:57
    #152005/1/26 21:23:23
    Session是字符串变量,而arrCart是数组,类型不符。
    可以把数据组存存如"a1,a2,a3"这样的字符串在Session中,用时用split函数,把字符串抉择分成数组。


    非常大鱼