nowitzki_诺诺吧 关注:148贴子:30,457
  • 6回复贴,共1

【诺诺技术】教你十天学会ASP

只看楼主收藏回复



1楼2010-05-25 19:05回复
    bark
    人人有功练,人人有水灌
    管理员
    首页修复之家
    十天学会ASP之第三天
    学习目的:学会ACCEES数据库的使用,并建立一个将来要用的留言簿数据库
         首先,大家要安装OFFICE里面的ACCEES(我的演示是OFFICE XP版本),安装过程这里就不说了,安装好以后会出现下图的菜单
    安空数据库,新建一个数据库,文件名字可以叫gustbook.mdb,我这里叫example3.mdb
    (为了安全期间,文件名复杂一点好,因为ACCESS数据库可以被下载的!!)
    使用设计器创建新的表,一个数据库MDB文件里面可以有多个表
    填写字段名字然后选择字段类型,一条记录可以有很多字段,可以有很多字段类型,字段大小的意思就是这个字段最多可以容纳的字符树,当这个字段没有任何信息是,ACCEES会用默认值代替(没有任何信息不是空的意思),一般必填字段和允许空字符串分别设置为否是,以防止出错
    按照上图大家分别建立几个字段,在时间中默认值为=now()就是这个字段不需要填写,系统直接以当前时间代替
    最后,把这个表的名字设置为guestbook,然后双击打开这个表,观看表里面的记录
    好了,大家不要急,这个数据库以后有用的,大家不要删除
    所以的字段都建立以后,关闭这个窗口,系统会出现上图的提示,选择是,主键是记录的标识,为了以后简单,大家可以把编号改为ID,还有在ACCEES里面尽量不要用中文表示字段名字
    bark
    人人有功练,人人有水灌
    管理员
    首页修复之家
    十天学会ASP之第四天
    学习目的:掌握ACCESS数据库的连接和读取记录
         今天要学习的内容有一点枯燥,但是很重要在这里大家不需要知道命令具体的运行情况,外面的很多书籍之所以不适合入门就是因为介绍了太多的理论知识,让初学者一头雾水
         下面开门见山,看两句话:
    <%
    set conn=server.createobject("adodb.connection")
    conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("example3.mdb")
    %>
    第一句话定义了一个adodb数据库连接组件,第二句连接了数据库,大家只要修改后面的数据库名字就可以了是不是很简单?
    下面再看三句:
    <%
    exec="select * from guestbook"
    set rs=server.createobject("adodb.recordset")
    rs.open exec,conn,1,1
    %>
    这三句加在前面两句的后面,第一句:设置查询数据库的命令,select后面加的是字段,如果都要查询的话就用*,from后面再加上表的名字,我们前面建立的是不是一个gustbook表阿?第二句:定义一个记录集组件,所有搜索到的记录都放在这里面,第三句是打开这个记录集,exec就是前面定义的查询命令,conn就是前面定义的数据库连接组件,后面参数1,1,这是读取,后面讲到修改记录就把参数设置为1,3,好了接下来我们读取记录
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <%do while not rs.eof%><tr>
    <td><%=rs("name")%></td>
    <td><%=rs("tel")%></td>
    <td><%=rs("message")%></td>
    <td><%=rs("time")%></td>
    </tr><%
    rs.movenext
    loop
    %>
    </table>
    在一个表格中,我们用4列分别显示了上次建立的表里面的四个字段,用do循环,not rs.eof的意思是条件为没有读到记录集的最后,rs.movenext的意思是显示完一条转到下面一条记录,<%=%>就等于<%response.write%>用于在html代码里面插入asp代码,主要用于显示变量
         好了今天就结束了,大家可以多实践,可以先下载我的示例看一下,调试一下下面是我机器上面的结果图片
    


    3楼2010-05-25 19:06
    回复
      bark
      人人有功练,人人有水灌
      管理员
      首页修复之家
      十天学会ASP之第五天
      学习目的:学会数据库的基本操作1(写入记录)
           数据库的基本操作无非是:查询记录,写入记录,删除记录,修改记录今天我们先学习写入记录
      先建立一个表单:
      <form method="post" action="example5.asp">
      name <input type="text" ><br>
      tel <input type="text" ><br>
      message <input type="text" value=""><br>
      <input type="submit" value="提交">
      <input type="reset" value="重置">
      </form>
      表单提交到example5.asp,下面是example5.asp的代码:
      <%
      set conn=server.createobject("adodb.connection")
      conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("example3.mdb")
      name=request.form("name")
      tel=request.form("tel")
      message=request.form("message")
      exec="insert into guestbook(name,tel,message)values('"+name+"',"+tel+",'"+message+"')"
      conn.execute exec
      conn.close
      set conn=nothing
      response.write "记录添加成功!"
      %>
      在这里前面两句我不说了,后面三句我也不说了,前面说过exec里面的是执行的命令,添加记录的比较繁,大家要仔细看insert into后面加的是表的名字,后面的括号里面是需要添加的字段,不用添加的或者字段的内容就是默认值的可以省略注意,这里的变量一定要和ACCESS里面的字段名对应,否则就会出错values后面加的是传送过来的变量exec是一个字符串,"insert into guestbook(name,tel,message)values('"是第一段,在ASP里面不能嵌双引号,所以可以用'代替双引号,放在双引号里面,连接两个变量用+或者&所以"',"又是一段,中间夹了一个name就是表单传来的变量,这样就可以在这个变量外面加两个'',表示是字符串了,后面的tel是数字型变量所以不需要外面包围'',大家慢慢分析这句话,如果用表单传来的数据代替变量名字的话这句话为(假设name="aaa",tel=111,message="bbb"):"insert into guestbook(name,tel,message)values('aaa',111,'bbb')"
      接下来的conn.execute 就是执行这个exec命令,最后别忘记把打开的数据库关闭,把定义的组件设置为空,这样可以返回资源上次的读取为了简单,我没有关闭,大家可以补充上去:
      rs.close
      set rs=nothing
      conn.close
      set conn=nothing
      记住,次序不可以颠倒!
      大家可以到数据库里面去看一看,或者用example4.asp读取看看是不是多了记录阿?
      bark
      人人有功练,人人有水灌
      管理员
      首页修复之家
      十天学会ASP之第六天
      学习目的:学会数据库的基本操作2(查询记录)
           在第四天中我们有这样一个程序:
      <%
      set conn=server.createobject("adodb.connection")
      conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("example3.mdb")
      exec="select * from guestbook"
      set rs=server.createobject("adodb.recordset")
      rs.open exec,conn,1,1
      %>
      我们查询的是所有的记录,但是我们要修改删除记录的时候不可能是所有记录,所有我们要学习检索合适的记录先看一条语句:
      a="张三"
      b=111
      exec="select * from guestbook where +a+"'and tel="+b
      where后面加上的是条件,与是and,或是or,我想=,<=,>=,<,>的含义大家都知道吧这句话的意思就是搜索name是张三的,并且电话是111的记录还有一点就是如果要搜索一个字段里面是不是包含一个字符串就可以这么写:where instr(name,a)也就是搜索name里面有a(张三)这个字符串的人
      


      4楼2010-05-25 19:06
      回复
        我这里的a,b,是常量,大家可以让a,b是表单提交过来的变量,这样就可以做一个搜索了
        下面大家看看这个代码,理解一下:
        <form method="post" action="example6.asp">
        搜索:<br>
        name =
        <input type="text" >
        and tel=
        <input type="text" >
        <br>
        <input type="submit" value="提交">
        <input type="reset" value="重置">
        </form>
        example6.asp:
        <%
        name=request.form("name")
        tel=request.form("tel")
        set conn=server.createobject("adodb.connection")
        conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("example3.mdb")
        exec="select * from guestbook where +name+"' and tel="+tel
        set rs=server.createobject("adodb.recordset")
        rs.open exec,conn,1,1
        %>
        <html>
        <head>
        <title>无标题文档</title>
        <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
        </head>
        <body bgcolor="#FFFFFF" text="#000000">
        <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <%
        do while not rs.eof
        %><tr>
        <td><%=rs("name")%></td>
        <td><%=rs("tel")%></td>
        <td><%=rs("message")%></td>
        <td><%=rs("time")%></td>
        </tr>
        <%
        rs.movenext
        loop
        %>
        </table>
        </body>
        </html>
        今天实际上就讲了一个where,大家回去做做试验,把instr()做进去,明天见!
        bark
        人人有功练,人人有水灌
        管理员
        首页修复之家
        十天学会ASP之第七天
        学习目的:学会数据库的基本操作3(删除记录)
        开门见山,大家直接看程序
        exec="delete * from guestbook where id")
        上面这句话完成了删除记录的操作,不过锁定记录用了记录唯一的表示id,我们前面建立数据库的时候用的是系统给我们的主键,名字是编号,由于是中文的名字不是很方便,大家可以修改为id,不修改的话就是
        exec="delete * from guestbook where 编号="&request.form("id")
        下面我们看完整的代码:一个表单传给ASP文件一个ID,然后这个ASP文件就删除了这个ID
        <form method="post" action="example7.asp">
        delete:
        <input type="text" >
        <input type="submit" value="提交">
        </form>
        example7.asp:
        <%
        set conn=server.createobject("adodb.connection")
        conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("example3.mdb")
        exec="delete * from guestbook where 编号="&request.form("id")
        conn.execute exec
        %>
        我在示例里面加了一个example72.asp,和example4.asp差不多,就是加了一个id字段,大家可以先运行这个文件看一下所有记录的ID和想删除记录的ID,删除记录以后也可以通过这个文件复查等到最后一天,我们会把所有的这些东西整合的大家就不会需要这么麻烦的操作
        example72.asp:
        <%
        set conn=server.createobject("adodb.connection")
        conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("example3.mdb")
        exec="select * from guestbook"
        set rs=server.createobject("adodb.recordset")
        rs.open exec,conn,1,1
        %>
        <html>
        <head>
        <title>无标题文档</title>
        


        5楼2010-05-25 19:06
        回复
          <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
          </head>
          <body bgcolor="#FFFFFF" text="#000000">
          <table width="100%" border="0" cellspacing="0" cellpadding="0">
          <%
          do while not rs.eof
          %><tr>
          <td><%=rs("编号")%></td>
          <td><%=rs("name")%></td>
          <td><%=rs("tel")%></td>
          <td><%=rs("message")%></td>
          <td><%=rs("time")%></td>
          </tr>
          <%
          rs.movenext
          loop
          %>
          </table>
          </body>
          </html>
          bark
          人人有功练,人人有水灌
          管理员
          首页修复之家
          十天学会ASP之第八天
          学习目的:学会数据库的基本操作4(修改记录)
               先来看代码:
          <%
          set conn=server.createobject("adodb.connection")
          conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("test.mdb")//这不是以前的一个数据库,里面就aa,bb两个字段
          exec="select * from test where id")
          set rs=server.createobject("adodb.recordset")
          rs.open exec,conn
          %>
          <form method="post" action="modifysave.asp">
          <table width="748" border="0" cellspacing="0" cellpadding="0">
          <tr>
          <td>aa</td>
          <td>bb</td>
          </tr>
          <tr>
          <td>
          <input type="text" value="<%=rs("aa")%>">
          </td>
          <td>
          <input type="text" value="<%=rs("bb")%>">
          <input type="submit" value="提交">
          <input type="hidden" value="<%=request.querystring("id")%>">
          </td>
          </tr>
          </table>
          </form>
          <%
          rs.close
          set rs=nothing
          conn.close
          set conn=nothing
          %>
          大家到现在应该分析这个代码没有什么问题,这个代码的作用是接受前面一个页面的ID然后显示这条记录,文本框即是输入的地方也是显示的地方,如果需要修改的话修改以后按提交;如果不需要修改就可以直接按提交按钮这里还有一个东西以前没有说,那就是隐藏的表单元素:hidden元素,里面的value是不用用户输入的,会随着表单一起提交,用于传递变量下面是modifysave.asp的代码:
          <%
          set conn=server.createobject("adodb.connection")
          conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("test.mdb")
          exec="select * from test where id")
          set rs=server.createobject("adodb.recordset")
          rs.open exec,conn,1,3
          rs("aa")=request.form("aa")
          rs("bb")=request.form("bb")
          rs.update
          rs.close
          set rs=nothing
          conn.close
          set conn=nothing
          %>
          在这里,rs.open exec,conn,1,3后面的参数是1,3,这我以前提过,修改记录就要用1,3实际上修改记录很容易看懂,记录集是rs,rs("aa")就是当前记录aa字段的东西,让它等于新的数据request.form("aa")当然就修改了,不过最后别忘记保存,那就是rs.update!
          说到这里,记录的搜索,读取,修改,插入都说了,通过这最基本的东西就可以作出复杂的东西了,外面的大型数据库:新闻系统,留言簿就是字段多一点罢了今天的示例中的代码是结合以前的数据库的,大家DOWN了以后回去调试分析一下(rar里面的那个example72.asp还是供大家查询记录ID和核对修改以后的记录用的)
          bark
          人人有功练,人人有水灌
          


          6楼2010-05-25 19:06
          回复

            管理员
            首页修复之家
            十天学会ASP之第九天
            学习目的:基本的SESSION组件,总结response,request组件
                 首先,有会员系统的任何程序都会用到检测是不是用户已经登陆这个步骤这就用到了SESSION组件,下面我们     看一个代码来说明
            <%
            session("islogin")="yes"
            %>
            这句话的意思就是在session里面定义一个islogin字符串变量,值为"yes",直接可以赋值,不需要声明是不是很简单?
            如果我们做管理员登陆系统的话,首先是一段检测是不是管理员
            if 是 then
            session("isadmin")=yes"
            else
            session("isadmin")="no"
            end if
            在每一个需要管理员才能看的页面最前面加上
            <%
            if not session("isaadmin")="yes"then
            response.redirect "login.htm"
            %>
            这样一般用户就无法打开这个页面解释一下response.redirect,它是转向的意思,后面的"login.htm"就是转向的文件这样没有登陆的管理员是无法看到后面的内容的
                 下面总结一下
            response组件基本就是用到response.write (),response.redirect() 分别是写字符串和转向的作用
            request基本就是request.form(),request.querystring() 分别是接受post,get方法传来的信息
            今天就说到这里了,最后我的示范是一个登陆系统大家可以研究一下,基本就是上面的知识点比较简单的
            bark
            人人有功练,人人有水灌
            管理员
            首页修复之家
            十天学会ASP之第十天
            学习目的:分页技术,总结
                 今天最后一天我们学习一下ASP里面稍微难一点地分页技术,毕竟当我们有N条记录的时候我们不可能把所有记录显示在一个页面里面吧
            <%
            exec="select * from test"
            set rs=server.createobject("adodb.recordset")
            rs.open exec,conn,1,1
            rs.PageSize=3
            pagecount=rs.PageCount
            page=int(request.QueryString ("page"))
            if page<=0 then page=1
            if request.QueryString("page")="" then page=1
            rs.AbsolutePage=page
            %>
            rs.pagesize设置一个页面里面显示的记录数,pagecount是我们自己定义的一个变量,rs.pagecount是记录的个数,page也是我们自己定义的一个变量,我们下一页的链接可以设置为list.asp?page=<%=page+1%>,下一页的链接可以设置为list.asp?page=<%=page-1%>,这样当按下链接的时候调用页面自己,page这个变量就+1或者-1了,最后我们让rs.absolutepage(当前页面)为第page页就可以了
            if request.QueryString("page")="" then page=1,这句话的作用就是我们打开list.asp的时候没有跟随page变量,自动设置为page=1,防止出错,还有当我们if....then...放在一行的时候end if可以省略是不是分页也不难?
            下面说一种特殊情况:
            if page=1 and not page=pagecount,这个时候没有上一页,但是有下一页
            elseif page=pagecount and not page=1,这个时候没有下一页,但是有上一页
            elseif page<1,这个时候没有任何记录
            elseif page>pagecount then,这个时候没有任何记录
            elseif page=1 and page=pagecount,这个时候没有上一页,没有下一页
            else,这个时候有上一页,也有下一页
            下面看一段显示1到n页,且每一个数字点击以后就出现这个数在代表的页面的代码,很常见哦
            <%for i=1 to pagecount%>
            <a href="list.asp?page=<%=i%>"><%=i%></a><%next%>
            for....next是循环从i=1开始,循环一次加1到pagecount为止
            最后我的实例里面包含了一个最简单的ASP程序,但是功能样样有,是ASP的精髓,每一个ASP大型程序都包含了它
            add.htm增加记录页面
            add.asp增加记录操作
            conn.asp数据库链接
            del.asp删除记录操作
            modify.asp修改记录页面
            modifysave.asp修改记录操作
            list.asp这个是这个程序的核心,通过这个页面实现记录的添加修改删除
            test.mdb数据库,里面有aa,bb两个字段:aa数字型只能接受数字,bb是字符型
            好了,十天到今天就结束了,我想我这个教程是让大家入门的,大家觉得写的浅也不要责怪必尽不可能初学者和高手都照顾到吧,最后我想说一句,今天的实例是ASP的精华,大家一定要好好研究,通了这个程序,你会发现你已经会ASP了谢谢大家的支持!大家有问题可以在我的论坛里面留言,希望大家帮站长多多宣传本站,转贴本站文章的也请著名出处,谢谢合作
            ===================================================
            这些是最基础最根本的东西
            就像盖房子,这里就是墙,窗户,门,屋顶,没别的
            里面的装修和桌椅板凳那是以后学习的事,起码房子能盖起来是第一步,
            而且,这些要学10天谁学够了?
            都是走马观花,一个小时不到就看完了
            


            7楼2010-05-25 19:06
            回复
              没有会欣赏的吗


              8楼2010-05-25 23:39
              回复