ASP应用中的应用函数

2018-09-06 10:32

阅读:705

  1,经常写些系统,那么一般都是从登录程序开始,每接一个系统就写一次登录,好麻烦。

干脆直接做个登录验证函数吧,对我来说,大都情况可以胜任了:)



<%
Functionchk_regist(requestname,requestpwd,tablename,namefield,pwdfield,reurl)
dimcn_name,cn_pwd
cn_name=trim(request.form(requestname))
cn_pwd=trim(request.form(requestpwd))
ifcn_name=orcn_pwd=then
response.Write(<scriptlanguage=javascript>alert(请将帐号密码填写完整,谢谢合作。);history.go(-1)</script>)
endif
Setrs=Server.CreateObject(ADODB.Recordset)
sql=Select*fromtablenamewherenamefield=cn_name
rs.opensql,conn,1,1
ifrs.eofthen
response.Write(<scriptlanguage=javascript>alert(没有该会员ID,请确认有没有被申请。);history.go(-1)</script>)
else
ifrs(pwdfield)=cn_pwdthen
session(cn_name)=rs(namefield)
response.Redirect(reurl)
else
response.Write(<scriptlanguage=javascript>alert(提醒,您的帐号和密码是不吻合。注意数字和大小写。);history.go(-1)</script>)
endif
endif
rs.close
Setrs=Nothing
EndFunction
%>



参数说明:
chk_regist(requestname,requestpwd,tablename,namefield,pwdfield,reurl)

requestname为接受HTML页中输入名称的INPUT控件名
requestpwd为接受HTML页中输入密码的INPUT控件名
tablename为数据库中保存注册信息的表名
namefield为该信息表中存放用户名称的字段名
pwdfield为该信息表中存放用户密码的字段名
reurl为登录正确后跳转的页

引用示例如下:



<%
callchk_regist(b_name,b_pwd,cn_admin,cn_name,cn_pwd,admin.asp)
%>


调试地址:


2,经常有可能对某个事物进行当前状态的判断,一般即做一字段(数值类型,默认值为0)
通过对该字段值的修改达到状态切换的效果。那么,我又做了个函数,让自己轻松轻松。



<%
Functionpvouch(tablename,fildname,autoidname,indexid)
dimfildvalue
Setrs=Server.CreateObject(ADODB.Recordset)
sql=Select*fromtablenamewhereautoidname=indexid
rs.Opensql,conn,2,3
fildvalue=rs(fildname)
iffildvalue=0then
fildvalue=1
else
fildvalue=0
endif
rs(fildname)=fildvalue
rs.update
rs.close
Setrs=Nothing
EndFunction
%>



参数说明:
pvouch(tablename,fildname,autoidname,indexid)

tablename该事物所在数据库中的表名
fildname该事物用以表明状态的字段名(字段类型是数值型)
autoidname在该表中的自动编号名
indexid用以修改状态的对应自动编号的值

引用示例如下:


<%
dowhat=request.QueryString(dowhat)
p_id=cint(request.QueryString(p_id))

ifdowhat=tjandp_id<>then
callpvouch(cn_products,p_vouch,p_id,p_id)
endif
%>

<%ifrs(p_vouch)=0then%>
<ahref=showpro.asp?dowhat=tjp_id=<%=rs(p_id)%>>推荐</a>
<%else%>
<ahref=showpro.asp?dowhat=tjp_id=<%=rs(p_id)%>>取消推荐</a>
<%endif%>



调试地址:

3,为很多中小企业写站点,一般产品展示是个大项目,那么做成的页面也就不同。
要不就是横排来几个,要不就是竖排来几个,甚至全站要翻来覆去的搞个好几次,麻烦也很累。
索性写个函数能缓解一下,于是就成了下面



<%
functionshowpros(tablename,topnum,fildname,loopnum,typenum)
Setrs=Server.CreateObject(ADODB.Recordset)
sql=Selecttoptopnum*fromtablename
rs.Opensql,conn,1,1
ifrs.eofandrs.bofthen
response.Write(暂时无该记录)
else
response.Write(<tablewidth=100%>)
fori=1tors.recordcount
if(imodloopnum=1)then
response.write<tr>
endif
selectcasetypenum
case1
response.Write(<td><tablewidth=100%><tr><tdbgcolor=redwidth=50%>)
response.Write(rs(fildname))
response.Write(</td><tdbgcolor=black>)
response.Write(方式1之i记录)此处的“方式1”可以替换显示为其余字段的值
response.Write(</td></tr>)如果字段比较多,继续添加新个表格行来显示
response.Write(</table></td>)
case2
response.Write(<td><tablewidth=100%><tr><tdbgcolor=red>)
response.Write(rs(fildname))
response.Write(</td></tr>)
response.Write(<tr><tdbgcolor=black>)
response.Write(方式2之i记录)
response.Write(</td></tr>)
response.Write(</table></td>)
endselect
if(imodloopnum=0)then
response.write</tr>
endif
rs.movenext
next
response.Write(</table>)
endif
rs.close
Setrs=Nothing
endfunction
%>



参数说明:showpros(tablename,topnum,fildname,loopnum,typenum)

whichpro为选择何类型的产品种类
topnum表示提取多少条记录
fildname表示调试显示的字段,具体应用的时候可以省去该参数,在函数内部直接使用
loopnum表示显示的循环每行的记录条数
typenum表示循环显示的方法:目前分了两类,横向并列、纵向并列显示同一数据记录行的不同记录

引用示例如下:


<%
ifrequest.form(submit)<>then
topnum=request.form(topnum)
loopnum=request.form(loopnum)
typenum=request.form(typenum)
else
topnum=8
loopnum=2
typenum=1
endif
%>
<%callshowpros(cn_products,topnum,p_name,loopnum,typenum)%>
<formaction=index.aspmethod=post>
显示的记录总数:<inputname=topnumvalue=<%=topnum%>>
显示的行循环数:<inputname=loopnumvalue=<%=loopnum%>>
显示的方式类型:<selectname=typenum>
<optionvalue=1>方式1</option>
<optionvalue=2>方式2</option>
</select>
<inputtype=submitname=submitvalue=Sure>
</form>


评论


亲,登录后才可以留言!