打印

[XhTML+asp+access]教程 [6.26更新]

写个[菜鸟篇 XhtML+asp+access]做的信息输入,管理,高级显示,等教程供菜鸟学习:可是说是小综合吧!
   原xml的说法有误,不好意思,我修正一下吧!

  当然,首先先建站点,这个我不说了,怕被人砍!哈哈

1.第一是建立一个data.mdb了,我做了4张表【每张表里面有id为主建,我在下面省掉不写】多谢狼哥提示,表名要加前缀*_,防止和关键字重复出现问题!由于我的已经做到一般狼哥才提示,就还是老样子,以后菜鸟应该用()里面的命名,这次例外。
   表1:admin(szd_admin): szd_name  szd_password  szd_jibie[0表示一般用户,1表示管理员]


     表2:lanmu( szd_lanmu): szd_lanmu[这是栏目分类,以后要写在那个栏目下,就用到了]

     表3:news(szd_news): szd_title[标题]  szd_lanmu[在那个栏目下,存栏目的id号,方便以后修改]  szd_content【内容】  szd_hits【点击】 szd_jibie[0表示不置顶,1表示置顶,2表示推荐,3表示归档]
    表4:nodown 防下载的表【呵呵,有点安全的观念】数据类型是 OLE 对象 ,然后添加一条记录:<%'p'-9%>自己想办法添加,可以copy的,^_^


现在就是链接数据库了,还是老办法

 提示:您可以先修改部分代码再运行
ps:原先计划是新闻系统,现在我想改为更加确切的这个标题,呵呵。
本帖最近评分记录
23555455(两年以上工作经验的WEB程序员生活Q群)-博客

[菜鸟篇 xml+asp+access]做的新闻系统教程

相关的 CSS样式表;

^_^,样式表今天看了一下,经典blog群的不错,就选它吧[由于本片文章献给经典,应该不会是侵权,^/^]

 提示:您可以先修改部分代码再运行
css点击这里下载




上面的数据库点击这里下载


简单数据库链接;




 提示:您可以先修改部分代码再运行
23555455(两年以上工作经验的WEB程序员生活Q群)-博客

[菜鸟篇 xml+asp+access]做的新闻系统教程

好!
售PHP空间 已有多位经典成功人士入住

[菜鸟篇 xml+asp+access]做的新闻系统教程

我的一点xml的看法和注意事项; 谢谢狼哥的指点


先认识一下xml,他的什么发展历程呀的,我不说了,单说主要的,呵呵,我的体会:

  xml其实可以说是html的老爹,他的道术高在他的可扩展型
比如:<top>
<left>Lin</left>
</top>更加可视,便于开发和维护,是不是简明了好多?

利用xml的这些标签可以生成xhtml文件,这方面我还不成熟,以后在研究一下。
就是说,用户可以自定义元素,抽个例子:

首先在css上定义:

 提示:您可以先修改部分代码再运行
反正就这么回事!


首先当然管理员登陆拉,干什么?去添加新闻呀!记住,我的标题上有个xml,呵呵,你存asp文件的时候要这样做:
在第一行开始【当然在code上】添加下面的话或者要出现相似语句:

 提示:您可以先修改部分代码再运行
不按照要求可能出现未知错误,

当前生成的地址:http://www.5do8.com/blueidea/

请在最所有页面上面加上<%Session.CodePage=65001%> 杜绝乱码
23555455(两年以上工作经验的WEB程序员生活Q群)-博客

TOP

[菜鸟篇 xml+asp+access]做的新闻系统教程

太好了。加分~~~~~这种精神实在感动~~~~~~~~~~~``````
~~一起大声呼喊~~~~

TOP

[菜鸟篇 xml+asp+access]做的新闻系统教程

关注,支持,请继续

+U,要一鼓作气

TOP

[菜鸟篇 xml+asp+access]做的新闻系统教程

多谢布鲁斯狼的鼓励!
这是显示新闻的页面,查找数据,并且显示


先打开记录集,然后查找:SELECT * From news order by id DESC

这里你可以随便选择记录数:像 SELECT top 6* From news order by id DESC选择前6条,而我们前面设置的news表里面有个szd_jibie,可以order by  szd_jibie DESC 显示结果一般<置顶<推荐<归档排序,还可以随机选取n条记录,相关的技术我打算这个问题讲完了细谈。

 提示:您可以先修改部分代码再运行
上面的打开了记录集,先确定是不是有数据,rs.eof[记录结尾]  and rs.bof[记录开始]当这2个值返回真,开始=结尾。没有数据,输出
复制内容到剪贴板
代码:
    <%
If rs.bof and rs.eof Then
response.write "<SCRIPT language=JavaScript>alert('数据查找结果是空);"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
end if
%>
当有数据时打印数据:

 提示:您可以先修改部分代码再运行
里面有个嵌套查询,请注意。

所有的页面生成源码为

 提示:您可以先修改部分代码再运行
这里查看调试结果:http://www.5do8.com/blueidea/index.asp


23555455(两年以上工作经验的WEB程序员生活Q群)-博客

TOP

[菜鸟篇 xml+asp+access]做的新闻系统教程

这是页面提交,即新闻数据插入的讲解


  先建表单,填写name名称,这里有个栏目属性,是选择了lanmu表单的szd_lanmu的id号,这个下拉的对应asp文件是:
复制内容到剪贴板
代码:
<select name="fenlei" >
        <% sqlfen="select * from lanmu order by id asc"
                
set rsfen=conn.execute(sqlfen)
do while not rsfen.eof
  %>
        <option value=<%=rsfen("id")%>>
<%=rsfen("szd_lanmu")%>
</option>
        <%rsfen.MoveNext
        Loop
        set rsfen=nothing
        %>
      </select>
添加数据的时候 有时候出现莫明的错误,经过我的查证,问题出现在提交处理的页面,那个asp页面不能存为UFT-8,必须存为default,我用editplus写的,很方便改的废话不说了,看看处理页面的文件:我用的是rs.addnew插入数据,这个我感觉效率不错,简洁,菜鸟就用它(先用request获取表单数据,然后插入):

 提示:您可以先修改部分代码再运行
我还是把insert into 的句子也写出,>麻雀的鸟鸟可以用这个
复制内容到剪贴板
代码:
<%
exec1="insert into blog(szd_title,szd_lanmu,szd_jibie,szd_content)
values('"+title+"','"+lanmu+"','"+jibie+"','"+content+"')"
conn.execute exec1
conn.close
set conn=nothing%>

点击这里查看插入数据的add.asp文件


强烈建议菜鸟自己动手做,碰见问题就说,或者pm我

23555455(两年以上工作经验的WEB程序员生活Q群)-博客

TOP

[菜鸟篇 xml+asp+access]做的新闻系统教程

这是现在说一下分页的思路

  网上很多的高效分页,其实都是一个思路:
  1.设置每页记录数目pagesize。
  2.获得总数rs.recordcount
  3.用总数除以pagesize,得到所有的页数 Rs.pagecount
  4.获取用户提交的Rs.pageno,乘以pagesize判断有没有记录,然后指针移至指定页的第一条记录
  5.循环显示页数

我简明的说,就这些。当然验证pageno[cint转换为数字]符合条件最关键。
复制内容到剪贴板
代码:
dim RsCount,ReSQL,pmcount,pageno
pmcount=6'这里我们设置为6,还可以在数据库定义,这里取参。
     SQLStr="SELECT * From news order by id DESC "
Set Rs=Server.CreateObject("adodb.recordset")
Rs.Open SQLStr,Conn,1,1
If rs.eof and rs.bof Then   %>
<%  else
'分页开始了,请注意!!
rcount=rs.recordcount
if pmcount="" or isempty(pmcount) or pmcount<1 then
        pmcount=10
end if
rs.pagesize=pmcount   '设置每页数
mpage=rs.pagecount '得到总页数
pageno=request("pageno")
pageno=CInt(Pageno)
If  pageno = "" Then
pageno=1
End If
If (pageno-Rs.pagecount) > 0 Then
pageno=Rs.pagecount
End If
if pageno < 1 Then
pageno = 1
End If
rs.absolutepage=pageno'将指针移至指定页的第一条记录
j=rs.recordcount
j=j-(pageno-1)*pmcount
i=0

loop的条件:
复制内容到剪贴板
代码:
<%
Do While Not rs.Eof and i<pmcount %>
最后的循环显示:
复制内容到剪贴板
代码:
<%
    i = i+1
    rs.movenext
    loop
End If
%>
for循环显示的页数:
复制内容到剪贴板
代码:
<p id="pager">
<strong class="caption">all:</strong>
All:<%=Rs.recordcount%> Have <%=Rs.pagecount%> pages
To:<%for i=1 to Rs.pagecount %>
<%response.Write("<a href='?pageno="&i&"'>"&i&"</a>&nbsp;") %>
&nbsp<%next%>
</p>
现在生成的文件完整为 index.asp:

 提示:您可以先修改部分代码再运行
演示在:http://www.5do8.com/blueidea/index.asp

待续ing,下一讲是分类显示新闻和调用讲解。
23555455(两年以上工作经验的WEB程序员生活Q群)-博客

TOP

请教一个问题,关于asp的session

我曾经用asp做过一个系统,每个界面都有一个用户名及权限的判断,把这两个值保存在session变量中,如果session变量中没有值的话,就转到登录界面,我把这个程序放到网上嘛,偶尔有登录过后,session变量就为空了,我把每句代码也检查了一下,对session变量名没有重复,在此等待大家的好消息啦,谢谢

TOP

[菜鸟篇 xml+asp+access]做的新闻系统教程

好好看了下流程和步骤,不错,很适合初学者的学习和应用

说几个自己的看法:

1,数据库表名称的注意点:admin和news由于SQL关键字的缘故,尽量少用,若在查询时,尽量用[],即 select * form [news] 。当然推荐改名,比如我喜欢加cn_为前缀,即“cn_news”。

这是03年我写教程时,经典的热心朋友给我指出的,今天我继续指出给你:)

2,楼主说的XML+……,看了你近3/4内容(我想应该差不多了吧),涉及到XML就是这里看到:
引用:
先认识一下xml,他的什么发展历程呀的,我不说了,单说主要的,呵呵,我的体会:

xml其实可以说是html的老爹,他的道术高在他的可扩展型
比如:<top>
<left>Lin</left>
</top>更加可视,便于开发和维护,是不是简明了好多?
就是说,用户可以自定义元素,抽个例子:
你的意思是说这个是XML么?

如果这个结构,说是ASP+ACCESS最终生成的XHTML+CSS才适当,当然还要检查你的XHTML、CSS的规范性。

总的感觉,楼主写得比较的详细,无论如何都值得大家静下心来一看。

辛苦了。

TOP

[菜鸟篇 XML+asp+access]做的新闻系统教程

   数据表的命名我忘了,谢谢指点。
   狼哥说的确实很对,我现在正在学习xml,计划这个写到最后才全部用xml准确定位,再说了,我的xml概念还不是很明确,学习中,不过,我绝对会完成这个教程的,终极目标是XML+asp+access,哈哈,如果菜鸟看的话,先逐渐会掌握asp和access的,然后在啃xml。
23555455(两年以上工作经验的WEB程序员生活Q群)-博客

TOP

[菜鸟篇 XML+asp+access]做的新闻系统教程

继续: 今天说如何验证用户添加数据,和用户登陆,加密问题讲解

  验证用户登陆就是验证他的机器是不是和系统产生的验证一样,一般用session和cookie,今天我只说session的简单操作,以后有空再说cookie,至于基本概念,请查看书籍,我只说怎么用,当用户验证成功的时候,同时写入session:
复制内容到剪贴板
代码:
Session("szd_admin")="True"
Session("szd_name")=uid
当我们要限制页面的时候,就在前面写上
复制内容到剪贴板
代码:
<%
if Session("szd_admin")="True" Then  
else
Response.Redirect ("login.asp")
End If
%>
当验证seeion不成功的时候,转到登陆页面,
例子为:
复制内容到剪贴板
代码:
<%If Session("szd_admin")="True" Then%>
<a href="LOGOUT.ASP">退出</a>
  <%End If%>
这里可以把这个code另存为一个一个单独文件,我们这里存为szd_chk.asp,在限制的页面add.asp最上面加上<!-- #include file="szd_chk.asp"-->就包含了,验证是不是合法用户了。
退出的时候把seeion的参数写为空即可
复制内容到剪贴板
代码:
<%
Session("szd_admin")=""
Response.Redirect ("index.asp")
%>
可以把这个文件另存为logout.asp做一个超级一个链接,就是退出登陆:
复制内容到剪贴板
代码:
<%If Session("szd_admin")="True" Then%>
<a href="LOGOUT.ASP">退出</a>
  <%End If%>
加密用户密码是这么回事:用户输入密码,表单获取这个password,然后用一个函数把这个password转换成另一个字符串,保存这个字符串到数据库,登陆的时候,比较转化后的密码和数据库是不是一样,判断是不是正确。最上面包含加密函数的文件:
我的加密文件是:md5.asp你可以把里面得算法自己改改,这样算法变了,生成得密码就不一样了

 提示:您可以先修改部分代码再运行
<!--#include file="md5.asp"-->

先获取用户输入的密码:
复制内容到剪贴板
代码:
pwd_net=replace(trim(Request("password")),"'","")
把它转换为新的验证密码
复制内容到剪贴板
代码:
pwd_net=MD5_NET(MD5_NET(pwd_net))
和数据库里面的比较
复制内容到剪贴板
代码:
If rs("szd_password")=pwd_net Then
这就是加密的部分!

登陆表单不说了,code是
复制内容到剪贴板
代码:
<form name="form" method="post" action="loginresult.asp">
用户:<input name="user" type="text" id="user" size="16" />
密码: <input name="password" type="password"  size="16" />
<input name="Submit" type="submit" class="01"  value="login in" />
</form>
处理的文件先取得密码和用户名,转化密码,
循环查找用户名,若不存在,提示错误,结束返回
若用户名正确,验证密码,写入seeion:
复制内容到剪贴板
代码:

If rs("szd_password")=pwd_net Then
Session("szd_admin")="True"
Session("szd_name")=uid
验证的整体文件是:

 提示:您可以先修改部分代码再运行
好了,现在这快登陆验证得讲完了,可以这里测试:
http://www.5do8.com/blueidea/login.asp
  明天我们说修改新闻和分类显示,待续ing
23555455(两年以上工作经验的WEB程序员生活Q群)-博客

TOP

[菜鸟篇 XML+asp+access]做的新闻系统教程

现在说管理员编辑新闻和删除新闻操作

这2个操作一般只有管理员有权限,所以在相关的页面上面包含文件:
复制内容到剪贴板
代码:
<!-- #include file="szd_chk.asp"-->
为什么在上一讲李很清楚。
关于这2个操作和插入数据其实没有什么2样,都是sql语句的变化而已。
编辑新闻的关键的sql语句是:
复制内容到剪贴板
代码:
exec="select * from news where id="&request.form("id")
set rs=server.createobject("adodb.recordset")
rs.open exec,conn,1,3
'这是一个查找编号id的新闻,并且打开与数据库的连接
然后是把数据库里面的数据临时替换为表单修改的结果
复制内容到剪贴板
代码:
rs("szd_title")=request.form("title")
rs("szd_lanmu")=request.form("lanmu")
rs("szd_content")=request.form("content")
rs("szd_jibie")=request.form("jibie")
then判断数据的合法性,如果不合法,结束返回,
:
复制内容到剪贴板
代码:
if rs("szd_title")="" then
response.write "<SCRIPT language=JavaScript>alert('title is worry!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
end if
if rs("szd_content")="" then
response.write "<SCRIPT language=JavaScript>alert('content is worry!!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
end if
if rs("szd_jibie")="" then
response.write "<SCRIPT language=JavaScript>alert('jibie is worry!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
end if
if rs("szd_lanmu")="" then
response.write "<SCRIPT language=JavaScript>alert('lanmu is worry!!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
end if
如果合法,更新数据,更新时牵扯到另一个关键的sql语句:
复制内容到剪贴板
代码:
rs.update'更新数据
rs.close‘关闭连接
set rs=nothing’清空保存
conn.close
set conn=nothing‘释放内存
<meta http-equiv="refresh" content="2;URL=index.asp">
<div align="center">mad is  ok, wait a little!
</div>
<p>&nbsp;</p>
<div align="center"><a href="index.asp">click here go home</a></div>
然后是删除新闻,这里只用一个关键语句,id是用户提交的id号,这个id是在页面显示的时候链接上的:
复制内容到剪贴板
代码:
exec="delete * from news where id="&request.querystring("id")
conn.execute exec
<meta http-equiv="refresh" content="2;URL=index.asp">
<div align="center"> delete this data succeed
</div>
<p>&nbsp;</p>
<div align="center">
<a href="index.asp">click here go home</a></div>
现在我们可以看到2个操作都有id这个参数,怎么的来的呢?
  在首页循环显示页面的地方,如果是管理员,显示编辑和删除的链接
复制内容到剪贴板
代码:
<%If Session("szd_admin")="True" Then%>
<a href="del.asp?id=<%=rs("id")%>"
onClick="{if(confirm('are you sure del this data?'))
'这是一个js控制的确认操作的过程,很有用的。相关请查confirm的用法
{return true;}return false;}">delete</a>&nbsp
<a href="edit.asp?id=<%=rs("id")%>">edit</a>
<%End If%>
上面的edit.asp文件表单和添加新闻没什么2样,只是sql语句上多了一条查询的条件,查找用户提交的新闻编号:
复制内容到剪贴板
代码:
exec="select * from news where id="&request.querystring("id")
set rs=server.createobject("adodb.recordset")
rs.open exec,conn
还有,表单的初始值要变为原先当前的数据库数据,这样利于编辑
复制内容到剪贴板
代码:
新闻标题:
    <input name="title" type="text" id="title"
value="<%=rs("szd_title").value%>">
   
    新闻内容:<textarea name="content" id="content"
cols=70% rows=8><%=rs("szd_content").value%></textarea>
关键不要忘了id参数,这是链接提交页面的关键,设置为隐藏
复制内容到剪贴板
代码:
<input name="id" type="hidden" id="id"
value="<%=request.querystring("id")%>">
好了,现在好了,整个过程就是这样的,相关的测试在:
http://www.5do8.com/blueidea/
请先登陆,然后可以看见每条新闻最右面有2个链接,删除和添加新闻的链接,你可以试试。
  现在所有文件我打包了,你可以下载研究:http://www.5do8.com/down/blueidea/xmlaspaccess.rar
刚看了一下,所有文件才27k,爽!

明天还要考英语,想起就麻烦呀。  呵呵,待续ing。

23555455(两年以上工作经验的WEB程序员生活Q群)-博客

TOP

[菜鸟篇 XML+asp+access]做的新闻系统教程

这一节我们专门说一下ubb的用法和实例;

现在英语考完了,可以松口气了,哈哈哈,好了,继续说吧!

下面是我的体会,不知在理论上对不对,反正在实际中好用。

页面处理的话,提交的新闻默认支持的是html的格式,这就是说,任何有html标签的东东都会被执行,在一般情况下,这点很糟,因为js也会被执行掉,严重的破坏了可视性。我们必须要对输出进行处理,当然代码的处理最后结果还是在本事上转换为html,注意,这是在数据层传输的,在页面处理的前台,不能让浏览器直接看到html标签,那会被转换掉的,这里就要用ubb代换掉html,浏览器虽然不认识,但是如果我们在后台悄悄的告诉浏览器,这是一个什么标签,怎么转换为html,它还是会接受的。现在关键的技术是在于如何把html转换为ubb,答案是正则,正则就是查找匹配,(\[b\])(.[^\[]*)(\[\/b\]),这是转换加粗的用法,详细的请理论请访问:    http://bbs.blueidea.com/viewthread.php?tid=303249

这里详细讲了正则在ubb的用法,我们这一节主要讲怎么插入,怎么使用,我也不罗嗦了[其实正则我也不是太明白],直接讲思路:
页面添加的时候,为了让用户输入方便,可以用js代码定义一些edit菜单:
复制内容到剪贴板
代码:
<IMG onclick=Cbold() alt=粗体
      src="Images/Ubbpic/bold.gif" border=0>
意思就是说当用户点击这个图片的时候,发生 onclick=Cbold() 事件:
复制内容到剪贴板
代码:
function Cbold() {
fontbegin="[B]";
fontend="[/B]";
fontchuli();
其他的全部相似的,这里包含的js代码是

 提示:您可以先修改部分代码再运行
这个页面包含到添加信息的表单前面,
复制内容到剪贴板
代码:
Function HTMLEncode(Str)
if not isnull(Str) then
Str = replace(Str, ">", "&gt;")
Str = replace(Str, "<", "&lt;")
Str = Replace(Str, CHR(32), "&nbsp;")
Str = Replace(Str, CHR(9), "&nbsp;")
Str = Replace(Str, CHR(34), "&quot;")
Str = Replace(Str, CHR(39), "&#39;")
Str = Replace(Str, CHR(10) & CHR(10), "</P><P> ")
Str = Replace(Str, CHR(10), "<BR> ")
HTMLEncode = Str
end if
End Function
而在页面输入信息的内容写为:

 提示:您可以先修改部分代码再运行
信息接受的页面不变,现在数据库保存的是ubb转换来的数据,信息显示的时候要转回去,还是匹配转换,这里的转换页面的代码是

 提示:您可以先修改部分代码再运行
这段的思路还是正则转化的一个逆过程,这是我得看法。
转换的页面包含这个文件,显示的时候就调用这个转换过程:
复制内容到剪贴板
代码:
<%=ubbcode(rs("szd_content").value)%>
把信息的内容转换为期望的格式显示。

有人可能要问,html怎么屏蔽调那?答案是在输出的时候改掉像“>"的标签,浏览器就不会执行了,哈哈哈,经典的改了一个笑脸的ubb,执行结果就是一个笑脸,哈哈哈
复制内容到剪贴板
代码:
Function HTMLEncode(Str)
if not isnull(Str) then
Str = replace(Str, ">", "&gt;")
Str = replace(Str, "<", "&lt;")
Str = Replace(Str, CHR(32), "&nbsp;")
Str = Replace(Str, CHR(9), "&nbsp;")
Str = Replace(Str, CHR(34), "&quot;")
Str = Replace(Str, CHR(39), "&#39;")
Str = Replace(Str, CHR(10) & CHR(10), "</P><P> ")
Str = Replace(Str, CHR(10), "<BR> ")
HTMLEncode = Str
end if
End Function
这是转换html的页面,随便你了,包含到输出页面,调用
复制内容到剪贴板
代码:
<%=LEncode(rs("szd_title").value)%>
就是这些了。
最后我要说,ubb会降低程序执行效率的,很严重,不过也么办法,如果可以,以后用vb的,以后再说把,先凑胡用吧,^_^。
  
我把现在的页面当前打包了,下载的地址还是:
http://www.5do8.com/down/blueidea/xmlaspaccess.rar



下午我再说说高级的页面显示,就想论坛一样的显示办法.ing

强烈建议自己动手做做看,有问题就pm我,不要回复无关的帖子,这样利于大家学习。
23555455(两年以上工作经验的WEB程序员生活Q群)-博客

TOP

[菜鸟篇 XML+asp+access]小综合实战教程

5do8在上个帖子中说
引用:


  xml其实可以说是html的老爹,他的道术高在他的可扩展型
xml其实可以说是html的老爹

你侮辱HTML了.

TOP

[菜鸟篇 XML+asp+access]小综合实战教程

数据在xml中的的高级排版显示和查询

我写这个我自己还可以巩固概念,呵呵,请楼上的不要误解,这不是我的工作哦,呵呵!
这一讲先开门见山的看看效果:http://5do8.com/blueidea/index0.asp,是不是有点论坛样式的感觉呢?呵呵,这玩意儿我今天用editplus排了2个小时,xml定义的css标签真的不是很好用,实话说,有点不想分享呢!不废话了,看看是怎么排的:

  先定义一个显示整个页面的层标签:
复制内容到剪贴板
代码:
<div class="news"></div>
我们排版的数据全部放在这个div里面,它的css属性是:

 提示:您可以先修改部分代码再运行
其中,大部分还是经典博客的标签,我只添加了一个标签:
复制内容到剪贴板
代码:
/* 老农的定义 */
  #aggregator .news .szdtitle{
color:#000000;
text-decoration:none;
font-size:85% !important;
font-size:80%;
}
这个标签就显示的是你看到的页面上的标题排版格式。

定义完大的标签后,我们看看里面的怎么看,我们要设计栏目和标题的格式不一样,单独定义的标签id:title
复制内容到剪贴板
代码:
#aggregator .news .title a{
    color:#000066;
text-decoration:none;
font-size:85% !important;
font-size:80%;
}
这样排的
复制内容到剪贴板
代码:
<h6 class="title">
<a ><%=szda("szd_lanmu").value%></a>    
</h6>
然后是对应下面的信息了,把他们放在一块,单独定义一个标签id
复制内容到剪贴板
代码:
<div class="summary"></div>[/div]
这个大格式已经确定,看看css里面如何写:
[code]#aggregator .news .summary{
font-size:80%;
margin:8px;
margin-top:25px;
line-height:150%;
}
现在好了,我们已经在大体明白了怎么干了,现在是数据循环了,思路是这样的:

循环查找栏目,并且在一级栏目对应的news表里面查出信息,前面的表我在第一讲说的很清楚,看看,news里面szd_lanmu对应的表lanmu里面的id号。

就这些,相关怎么链接,怎么查出,在上几次中已经很明白了,我现在只给源码的部分:

 提示:您可以先修改部分代码再运行
也许你注意到了,每个标题上有个链接是对应的信息主要内容的,不详细说怎么做了,主要还是连接的时候传一个id,对应可以搜索出信息内容的。源码可以参考

 提示:您可以先修改部分代码再运行
好了,你可以在上一讲的基础上试试效果了,这一讲我的源码已经写到这里了,不大算打包了,也防止我的努力付之东流,还是希望新手自己动手,实在需要整个源码的话pm我,或者更到我结束这个主题的时候,再打包吧。

既然现在做的像论坛,下一讲主要是如何回复对应主题的问题。

23555455(两年以上工作经验的WEB程序员生活Q群)-博客

TOP

[菜鸟篇 XML+asp+access]小综合实战教程

用户可回复操作的一点看法和数据表设计

这个问题原先没有考虑进去,做到后来才想到了,其实我感觉这个也很重要,现在你可以把留言版,小新闻发布都会做了吧,数据库的设计今天要增加一个表名:
  
huifu:
id:自动编号
szd_news_id,数字型,50,保存对应主题贴的id号
szd_content,备注,保存内容
szd_times,添加时间
szd_ip,添加者的ip地址
szd_user,添加者的name


主建id,自动编号,在每一个主题帖子的下面连接一个
复制内容到剪贴板
代码:
<h6 class="title">    
<a href="responses.asp?id=<%=request.querystring("id")%>" >我要回复</a>
</h6>

转到回复页面,传id的值。回复的页面和数据添加的没什么大的区别,只增加了2个隐藏参数和一个用户名:用户的ip和主题贴的id
复制内容到剪贴板
代码:
<input name="id" type="hidden" id="id"
value="<%=request.querystring("id")%>">
<input name="ip" type="hidden" id="ip"
value="<%=request.ServerVariables("REMOTE_ADDR")%>">
<input type="text" name="user" id="user" size="5"
value="<%=Session("szd_name")%>" />
处理的页面直接插入数据,插入成功的话跳转主题贴:
复制内容到剪贴板
代码:
<meta http-equiv="refresh" content="2;URL=szd_view.asp?id=<%=id%> ">
页面处理的代码是

 提示:您可以先修改部分代码再运行
当显示主题页面的时候显示回复的帖子,只需要把条件where改为
复制内容到剪贴板
代码:
SQLStr="SELECT * From huifu  where
szd_news_id="&cint(request.querystring("id"))&" order by id desc"
set rsd=conn.execute(sqlstr)
if rsd.eof and rsd.bof then
response.write "no reply data "
else
do while not rsd.eof
循环查找,显示,和上一讲的显示方式一样,关键代码:

 提示:您可以先修改部分代码再运行
现在显示插入没问题了,还有要统计的,这里用到一个关键的sql语句[count的实例用法,在这里统计满足有主题信息id的szd_news_id的数目和]:
复制内容到剪贴板
代码:
<a class="szdtitle">
[ <%
sqlaa="select count(*) as szd from huifu where szd_news_id="&ssid
set rss=conn.execute(sqlaa)
newsid=rss("szd")
set rss=nothing
%>
<%=newsid%>
/<%=rs("szd_hits").value%>]
</a>
关于统计的几个常用关键词:
AVG(字段名) 得出一个表格栏平均值
COUNT(*¦字段名) 对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名) 取得一个表格栏最大的值
MIN(字段名) 取得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加
引用以上函数的方法:
sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
set rs=conn.excute(sql)

今天就到这里,现在基本上大部分功能已经实现了,asp操作部分和access部分结束了,现在就是xml的了,除xml外,我有忘了那部分没说么?请pm我,现在我也把所有的源码打包把,,我只放链接3天,3天后失效我不管了。
下载地址还是: http://www.5do8.com/down/blueidea/xmlaspaccess.rar

刚刚仔细查了资料,我的原先理解有问题,严格的说,这应该是xhtml吧,就像狼哥说的,真有点误导大家,不好意思,我不是故意的,原先我没有理解到呐!呵呵,现在感觉说完了,本贴可以结了么?
ps:我把cookie的应用和验证码的应用以后单独开个帖子说说。
我把密码刚刚去掉了,呵呵,
23555455(两年以上工作经验的WEB程序员生活Q群)-博客

TOP

[菜鸟篇 XhTML+asp+access]小综合实战教程

解压密码是:
http://www.5do8.com/xml+asp+access

http://www.5do8.com/down/blueidea/xmlaspaccess.rar

那个解压密码好象不对,用几个版本的winrar都试了还是解不了。照着打也不行

TOP

[菜鸟篇 XhTML+asp+access]小综合实战教程

模块划结构--过程的使用
其实还是一些VBScript 过程,是分为2中的,function和sub。

   1:Sub 过程是包含在 Sub 和 End Sub 语句之间的一组 VBScript 语句,执行操作但不返回值。Sub 过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果 Sub 过程无任何参数,则 Sub 语句必须包含空括号 ()。
复制内容到剪贴板
代码:
<%
Sub Copyright()
%>

<div id="footer">
<div id="copyright">&copy;  Powered by tillage home
<%
dim endtime
endtime=timer()
%>
Time out:<%=FormatNumber((endtime-startime)*1000,3)%>
</div></div>

<%
End Sub
%>
在页面先包含这个文件,然后
复制内容到剪贴板
代码:
<%
copyright()
%>
就相当于输入sub里面的部分了,这个例子和include file实现结果一样,当然,它还可以实现其他的,返回验证呀
复制内容到剪贴板
代码:
sub WriteErrMsg()
dim strErr
strErr=strErr & "产生错误的可能原因:" & errmsg &"" & vbcrlf
response.write strErr
end sub
2.Function 过程
Function 过程是包含在 Function 和 End Function 语句之间的一组 VBScript 语句。Function 过程与 Sub 过程类似,但是 Function 过程可以返回值。Function 过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果 Function 过程无任何参数,则 Function 语句必须包含空括号 ()。Function 过程通过函数名返回一个值,这个值是在过程的语句中赋给函数名的。Function 返回值的数据类型总是 Variant。

可以在function里面灵活的运用sub比如,验证用户的信息:
复制内容到剪贴板
代码:
'**************************************************
'函数名:CheckUserLogined
'作  用:检查用户是否登录
'参  数:无
'返回值:True ----已经登录
'        False ---没有登录
'**************************************************
function CheckUserLogined()
dim Logined,Password,rsLogin,sqlLogin
Logined=True
User=Request.Cookies("5do8")("User")
Password=Request.Cookies("5do8")("Password")
jibie=Request.Cookies("5do8")("jibie")
if User="" then
Logined=False
    end if
if Password="" then
Logined=False
end if
if User="" then
Logined=False
        
end if
if jibie="" then
Logined=False
jibie=9
end if
if Logined=True then
user=replace(trim(user),"'","")
password=replace(trim(password),"'","")
        
set rsLogin=server.createobject("adodb.recordset")
sqlLogin="select * from  admin where
szd_user ='" & user & "' and szd_password ='" & password &"'"
rsLogin.open sqlLogin,Conn,1,1
if rsLogin.bof and rsLogin.eof then
    Logined=False
        else
    if password<>rsLogin("szd_password") then
    Logined=False
end if
User=rsLogin("szd_user")
            
if rsLogin("szd_cookie")=1 then
ValidDays=rsLogin("szd_session")
elseif rsLogin("szd_cookie")=2 then
ValidDays=rsLogin("szd_session")*30
    elseif rsLogin("szd_cookie")=3 then
    ValidDays=rsLogin("szd_session")*365
end if
ValidDays=ValidDays-DateDiff("D",rsLogin("szd_last_time"),now())
        end if
        rsLogin.close
        set rsLogin=nothing
    end if
CheckUserLogined=Logined
       if jibie=1 then
    jibies "Practical villageR"
elseif jibie=2 then
jibies="Laborious villageR"
elseif jibie=3 then
    jibies="Superior villageR"
         elseif jibie=4 then
jibies= "CEO of villageR"
end if
end function
这个function例子要检查的是用户是不是等陆了,使用的时候直接在显示的地方写上
复制内容到剪贴板
代码:
<% call ShowUserLogin() %>
就可以了。
简单吧!
差不多了,明天我要面试去了,不知怎么样,祈祷吧
23555455(两年以上工作经验的WEB程序员生活Q群)-博客

TOP

[菜鸟篇 XhTML+asp+access]小综合实战教程

缓存的应用

楼上说的下载的事情已经结束了,不好意思,我要再次说,我是写教程的,不是发布源码的,如果实在需要或者又不明白的地方pm我,原下载已经失效了。
测试么:http://www.5do8.com,前面看不出的,没办法,由于ie的版本不一样,页面效果不一样,我过短时间专门改改css就好了,也专门说说。



关于缓存,我得看法是积极的,我还是鼓励用缓存,现看看这是什么东西:

  缓存(Cache):使用本地硬盘作为缓存来存储一些下载的内容,当以后的用户试图连接那一网页时,数据将直接从本地硬盘中读取,而不是通过通信线路传输。速度会非常快而且节省费用,限使使用了缓存,最终用户也可以通过使用浏览器的“刷新”钮来读取最新的信息。
修正:缓存是保存在服务器上的,使用的时候尽量最块释放,节省资源。
现在有好几级了,有兴趣的朋友自己研究去,在这里说超出菜鸟级别了。
看看怎么设置缓存[其实我感觉还是asp的一个对象:Application的功能吧],例子:
复制内容到剪贴板
代码:
If Len(Trim(Application("Setting")))<8 Then    '建立缓存
Clscache()
Sub Clscache()
set rs = server.CreateObject ("adodb.recordset")
sqlstr="select top 1 INfor,Setting from Y_Config"
rs.open sqlstr,conn,1,1
SQLNum=SQLNum+1    
Application.Lock
Application("Infor") = rs("Infor")
Application("Setting") = rs("Setting")
Application.UnLock
Rs.close
Set rs=nothing
End Sub
Else
End if
运用的时候:
复制内容到剪贴板
代码:
Infor=Application("Infor")
Setting=Application("Setting")
<%=infor%>
这个东西可是个好东西,速度不用说,哉块!

为了让用户的cpu资源得到释放,大部分的时候必须释放掉:
复制内容到剪贴板
代码:
Sub CleanCache()
    Application("Infor")=""
    Application("Setting")=""
End sub
这一节就这些,我原先写了好多,结果误操作就没了,郁闷。



以上你都掌握的话,你已经不是菜鸟了。so 看下一节:
我的fso操作方法总结和分享。关注ing


23555455(两年以上工作经验的WEB程序员生活Q群)-博客

TOP

[XhTML+asp+access]实战教程 --每日一贴

支持楼主!精神可加!

下面提点个人意见:
1.代码可读性差
2.代码性能差
3.对用户(来访问的用户)不够友好
举个简单的例子 pageno=CInt(pageno),如果pageno的值为"ab12sd"这样的值,ASP就报错了。这样就要求来访的用户都不能是ASP菜鸟?
4.对XHTML还是没有坚持到底,有些ASP代码中夹在其间的xhtml代码,估计不能通W3C验证。通过验证不是目的,关键是XHTML带来的思想。

关于爹和儿女的关系,一般都是爹先来到这个世界上的吧

TOP

[XhTML+asp+access]实战教程 -[完毕]

阳光指点的极是,小弟我的能力就在这里。

1。代码我也尽量注释的,现在的习惯不怎么样,我感觉我的思路很明确,可能是因为我投入了吧

2.性能确实不好,因为你看到的全是查数据库,循环呀,基本上高级的缓存和类之类的没用.

3.对用户不够友好?不懂哪,我在加上cookie吧,这段时间也搞英文板:
http://www.5do8.com/asp/do/index.asp,还没做好,不过英文班的大部分是”高技术“的,哈哈,前面一样,速度就不一样了

4.xhml我会在最后优化一点的,还有,css的定位也要改的。


关于爹和儿女么,不好说。


  我现在也不想说什么了,大部分的功能都是在这上面延伸的,这个帖子置顶快2周了,老农再次感谢web编程区的斑竹,特别是狼哥的支持,也感谢所有的web区的老哥们的狂点,让我坚持到现在,这个帖子到这里我感觉没什么说的了,我下次有时间的话和大家分享一下我的组件com+模式在asp中的应用,算是稍微高级的吧,这些都是后话了,还有,阳光说的代码的运行行差,对的,这些代码运行确实不好,但对入门的新手已经够了。

  原计划今天写fso的操作的,今天也不知道怎么了,感觉好无助,有点孤独的感觉,写不下去了,我只能向大家道歉,再道歉了。 我在以后会在这个帖子下面补上吧!

  再次谢谢你的观赏,我把源文件打包了:

http://www.5do8.com/down/blueidea/0.rar
23555455(两年以上工作经验的WEB程序员生活Q群)-博客

TOP

[XhTML+asp+access]实战教程 --每日一贴

确实写的很好,很是佩服楼主这种坚持不懈的精神!
很喜欢这样把教程分解开写的文章,很详细的说。
也像阳光学习提点个人意见(见笑了):
1、变量的命名最好加前辍,SQL语句都用大写不会和字段表名什么的混淆。
2、确实像阳光说的代码可读性差,主要是分解的太细了前后看着很乱,记得网络综合板块置顶的有个也网站重构的教程,他那个分解的就很好看着不乱。
3、如果有时间的话还是多写点类的东西吧,对代码封装还是很好的,以后要接触更有难度的任务时像这种过程化的ASP编写方法很累的,还是教给"菜鸟"以模块化的编程思想为好。
4、代码中有好多由<%%>包括起来的代码,觉得最好还是少用<%%>输出用Response,每次执行到<%%>时候都会执行一次asp.dll文件会降低效率。
5、如果时间充足的话用ASP时间假三层结构也不错

能把缓存那块写的更详细些吗,以前看过动网的缓存根本就不看不懂。
对于标准,俩手抓俩手都要硬
一手抓XHTML,一手抓CSS

TOP

走向标准:css+div

    web页走向标准:css+div
     原先没有好好的规划以下css的准确定位,现在我要专门上一节说说css的定位,div+css定位确实不好把握,我最近作了我的主战,要全部用css+div的,看看浏览器兼容么,opera不怎么样,好像css里面的字体设置位百分比就一团糟,也不知道为什么,可能还是ie6.0好吧。上面阳光说过,我得源码里面参了table标签,很糟,当然这次也要解决了。

也不知道css+div是不是这个web开发区的范围,我感觉自己定义css+div也算编程的一部分吧,废话不说,进入正题:web页走向标准:css+div
学css的基础?我不想写了,看书就可以搞定,主要还是几个:

前景颜色,背景,宽度,字体,列表样式,元素的边缘距离,文本对齐方式,文本修饰和间距。
复制内容到剪贴板
代码:
body{
    text-align:center;
    margin:0;
    background-color:#E0E6D9;
    font-size:90% !important;
    font-size:88%;
    font-family:tahoma,verdana,arial;
    }
就是作用全局。因为body是html的主体吧!
复制内容到剪贴板
代码:
#bxna{
    text-align:left;
    width:750px;
    margin:auto;
    overflow:hidden;
    }
用户定义的,使用的时候<div id="bxna">**</div>
复制内容到剪贴板
代码:
    #navigation a{
        font-size:85%;
        color:#ffffff;
        text-decoration:none;
        padding-right:15px;
        padding-left:15px;
        border-right:1px solid #778899;
    height:50px;
在继承bxna基础上使用,使用的时候<div id="bxna"><a href="">**</a></div>应用这个样式。
复制内容到剪贴板
代码:
    #navigation #search{
        float:right;
        }
使用的时候因为是#定义,故是class。基本上就是这几种吧,看你怎么发挥和灵活应用了,我在我得经验中还是喜欢从下往上写css,感觉容易掌握。过2天我把全部更新了,奉送上来吧!
有关css+div走向标准的态度我的态度还是积极的,毕竟在浏览器方面好多了,这个东西写起来感觉没什么好写的,做起来很难,希望新手自己动手试试看。

强烈推荐文章:http://www.onestab.net/seybold/31books.html
23555455(两年以上工作经验的WEB程序员生活Q群)-博客

TOP