|
后台管理--插入数据、分页、评论 |
Author:咖啡虫 PublishTime:2004-7-25 |
一、插入数据
 其中的分类是从数据库中提取出来的。 分类是一个下拉框列表,一般下拉框的代码为 <select name="spart"> <option value="abc">abc</option> </select>
我们只需要将中间的列表值用asp代码写出来就可以了。将上面的代码变为:
<select name="spart"> <!--#include file="part_list.asp" --> </select>
其中,包含文件part_list.asp的代码为 其中,包含文件part_list.asp的代码为
<!--#include file="Conn.asp" --> <% set rs=server.CreateObject("adodb.recordset") sqlstr="select * from part" rs.open sqlstr,conn,1,1 %> <%do until rs.EOF '读出全部的分类字段 %> <option value="<%=rs("part")%>"><%=rs("part")%></option> <% rs.movenext loop%>
插入页面文件insert.asp主要的代码为:(到insok.asp执行) <!--#include file="session.asp" --> ...... <table width="100%" border="0" cellpadding="3" cellspacing="1" style="font-size:13px;">
<form name="form1" method="post" action="insok.asp"> <tr bgcolor="#eeeeee"> <td width="14%" align="right" valign="top">文章标题:</td> <td width="86%"><input name="title" type="text" id="title" size="50"></td> </tr> <tr bgcolor="#eeeeee"> <td align="right" valign="top">作者出处:</td> <td> <input name="author" type="text" id="author" size="30"> <select name="spart"> <!--#include file="part_list.asp" --> </select> </td> </tr> <tr bgcolor="#eeeeee"> <td align="right" valign="top">文章内容:</td> <td><textarea name="con" cols="90" rows="20" id="con"></textarea></td> </tr> <tr bgcolor="#eeeeee"> <td colspan="2"> </td> </tr> <tr bgcolor="#eeeeee"> <td> </td> <td><input type="submit" name="Submit" value=" 提 交 "> <input type="reset" name="Submit2" value=" 重 置 "></td> </tr> </form>
</table>
执行页面insok.asp的代码: <!--#include file="../Conn.asp" --> <!--#include file="session.asp" --> <% title=request.Form("title") '从上个页的表单中得到title的值 author=request.Form("author") spart=request.Form("spart") con=request.Form("con")
set rs=server.CreateObject("adodb.recordset") sqlstr="select * from concent" rs.open sqlstr,conn,1,3
rs.addnew '添加数据 rs("title")=title '将上面tilte得到的值赋到数据库中的title字段中 rs("author")=author rs("spart")=spart rs("con")=con rs.update ' 当然,还有执行效率高的方法,但这个添加的方法容易理解些。 %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>插入文章</title> </head> <body> <font size="2"><a href="insert.asp">继续添加新文章</a> <a href="viewlist.asp">返回文章列表</a></font> </body> </html> <%rs.close conn.close set rs=nothing set conn=nothing %>
===================================================
二、分页显示文章列表
首先,连接数据库 <!--#include file="Conn.asp" --> <% set rs=server.CreateObject("adodb.recordset") sqlstrc="select * from table" rs.open sqlstrc,conn,1,1 %>
设置开头部分 <%filepath=request.servervariables("path_info") '设置路径用%> <% rs.PageSize = 20 '每页显示记录数 pagecount=rs.PageCount page=int(request.QueryString ("page")) if page<=0 then page=1 if page>pagecount then page=pagecount if request.QueryString("page")="" then page=1 rs.AbsolutePage=page %>
中间记录显示 <table width="755" border="0" align="center" cellpadding="3" cellspacing="1"> <tr style="font-size:13px;" bgcolor="#CCCCCC"> <td align="center" width="47%"> 文章标题</td> <td align="center" width="16%"> 作者或出处</td> <td align="center" width="15%"> 所属分类 </td> <td width="16%" align="center"> 入库时间 </td> <td width="6%" align="center">被阅</td> </tr> <% For i = 1 to rs.PageSize if rs.EOF then Exit For end if '利用for next 循环依次读出记录 %> <tr bgcolor="#EEEEEE"> <td align="left" width="47%" style="font-size:13px;"><a href="viewmore.asp?id=<%=rs("id")%>"><%=rs("title")%></a></td> <td align="center" width="16%" style="font-size:12px;"><%=rs("author")%> </td> <td align="center" width="15%" style="font-size:12px;"><%=rs("spart")%> </td> <td align="center" width="16%" style="font-size:12px;"><%=rs("time")%> </td> <td align="center" width="6%" style="font-size:12px;"><%=rs("num")%></td> </tr> <% rs.MoveNext next %> </table>
最后分页导航部分
<form action="<%=filepath%>" method="get"> <%if page=1 and not page=pagecount then%> [共<%=rs.RecordCount%>篇 <b><%=rs.PageSize%></b>篇/页] [首 页] [上一页] <a href="<%=filepath%>?page=<%=page+1%>">[下一页]</a> <a href="<%=filepath%>?page=<%=pagecount%>">[尾 页]</a> <%elseif page=pagecount and not page=1 then%> [共<%=rs.RecordCount%>篇 <b><%=rs.PageSize%></b>篇/页] <a href="<%=filepath%>?page=1">[首 页]</a> <a href="<%=filepath%>?page=<%=page-1%>">[上一页]</a> [下一页] [尾 页] <%elseif page<1 then%> <font color=red>没有任何记录!</font> <%elseif page>pagecount then%> <font color=red>没有任何记录!</font> <%elseif page=1 and page=pagecount then%> <%else%> [共<%=rs.RecordCount%>篇 <b><%=rs.PageSize%></b>篇/页] <a href="<%=filepath%>?page=1">[首 页]</a> <a href="<%=filepath%>?page=<%=page-1%>">[上一页]</a> <a href="<%=filepath%>?page=<%=page+1%>">[下一页]</a> <a href="<%=filepath%>?page=<%=pagecount%>">[尾 页]</a> <%end if%> [页次:<font color=red><b><%=page%></b></font>/<%=pagecount%>] 转到<input name="page" size=5 value="<%=page%>">页 <input type="submit" value="GO!"> </form>
<%if rs.pagecount<>1 and rs.pagecount<>0 then%>'首先判断页总数不为1和0 <%if page>1 then%> <%if page<rs.pagecount then %> [<a Href="<%=filepath%>?Page=<% = 1%>">首页</a>] [<a Href="<%=filepath%>?Page=<% = page -1 %>">上一页</a>] [<a Href="<%=filepath%>?Page=<% = page + 1%>">下一页</a>] [<a Href="<%=filepath%>?Page=<% = rs.PageCount%>">尾页</a>] <%else%> [<a Href="<%=filepath%>?Page=<% = 1%>">首页</a>] [<a Href="<%=filepath%>?Page=<% = page -1 %>">上一页</a>] [下一页] [尾页] <% end if %> <%else%> [首页] [上一页] [<a Href="<%=filepath%>?Page=<% = page + 1%>">下一页</a>] [<a Href="<%=filepath%>?Page=<% = rs.PageCount%>">尾页</a>] <%end if %> <%else%> 没有任何记录! <%end if%> =================================================== 三、详细页面
评细页面的操作很简单,就是连接数据库后显示即可。 <!--#include file="Conn.asp" --> <%dim con_id con_id=request.QueryString("id") '从上面的列表点击时得么的id值 if con_id="" then '如果直接进入本页,就让con_id值为1 con_id=1 end if set rs=server.CreateObject("adodb.recordset") sqlstr="select * from concent where id="&con_id rs.open sqlstr,conn,1,1 %> ....... <table width="755" border="0" align="center" cellpadding="3" cellspacing="1" style="font-size:13px;"> <tr align="left"> <td align="center" bgcolor="#CCCCCC" style="font-size:20px;"><b><%=rs("title")%></b></td> </tr> <tr style="font-size:12px;"> <td align="center" bgcolor="#eeeeee"><b>作者或出处:</b><%=rs("author")%> <b>入库时间:</b><%=rs("time")%> <b>所属分类:</b><%=rs("spart")%> <b>被阅 </b><%=rs("num")%> 次</td> </tr> <tr> <td height="10"></td> </tr> <tr> <td bgcolor="#eeeeee" style="font-size:13px;"> <table width="742" border="0" cellpadding="0" cellspacing="0"> <tr> <td width=742 style="word-break:break-word;line-height:120%; font-size:13px;"><%=rs("con")%></td> </tr> </table></td> </tr> </table>
其中,有些复杂的可能就是阅读次数的计算了 在显示页面的开头加入以下代码即可 <%set rs1=server.CreateObject("adodb.recordset") sqlstr1="select * from concent where id="&con_id ' 注意设置SQL语句 rs1.open sqlstr1,conn,1,3 '阅读次数 dim no no=rs1("num") no=no+1 '每打开本页一次就加一 rs1("num")=no rs1.update rs1.close %> ================================================== 四、评论操作
评论显示一般地都放在文章显示的下方。 由于,评论可以有多条,所以我们将评论放在单独的一张表reply中。 1, 显示评论 <SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPT> function HTML(Str) if not isnull(Str) then Str=trim(Str) Str=replace(Str,"<","<") Str=replace(Str,">",">") Str=replace(Str,"'","""") Str=replace(Str,vbCrLf&vbCrLf,"</p><p>") Str=replace(Str,vbCrLf,"<br>") HTML=replace(Str," "," ") end if end function </SCRIPT> <b>·网友评论内容·</b> <% set rs2=server.CreateObject("adodb.recordset") sqlstr2="select * from reply where con_id="&con_id '注意SQL语句的设置,请查看前一篇的数据库设置。变量con_id的值在上面的详细页面说明时就可以获得 rs2.open sqlstr2,conn,1,1
if rs2.Eof or rs2.Bof then %> 暂时没有评论!<br> <%end if do until rs2.Eof '评论显示部分 %> <table width="90%" border="0" cellpadding="1" cellspacing="1" bgcolor="#CCCCCC"> <tr> <td bgcolor="#EEEEEE"> <B><%=rs2("rep_name")%></B>网友评论说:</td> </tr> <tr> <td bgcolor="#FFFFFF"><%=html(rs2("rep_con"))%></td> </tr> </table><br> <%rs2.MoveNext loop %>
在最上面有一段js代码,是为让显示正常。(这不UBB的显示方式,有兴趣的朋友可以改成UBB的方式。) 将rs2("rep_con")改成html(rs2("rep_con"))就OK了!
2, 加入评论
<form name="form1" method="post" action="plun.asp" id="form1" onSubmit="return check_form()"> <table width="100%" border="0" cellpadding="0" cellspacing="0" style="font-size:13px; "> <tr bgcolor="#CCCCCC"> <td height="20" colspan="2" style="font-size:16px; "><b>·请发表评论·</b></td> </tr> <tr> <td colspan="2" align="right" valign="top"> </td> </tr> <tr> <td width="8%" align="right" valign="top">用 户: </td> <td width="92%" valign="top"><input name="rep_name" type="text" class="table" id="rep_name"></td> </tr> <tr> <td align="right" valign="top">评 论: </td> <td valign="top"><textarea name="rep_con" cols="50" rows="6" class="table" id="textarea"></textarea></td> </tr> <tr> <td> </td> <td> <input type="hidden" name="id" value="<%=con_id%>"> <input name="Submit" type="submit" class="table" value=" 提 交 "> <input name="Submit2" type="reset" class="table" value=" 重 置 "></td> </tr> </table> </form>
在倒数第6行加入了一个隐藏域,为传递con_id值到reply表中,这样,才能用上面的SQL语句将对应的评论选出来
需要到plun.asp页去处理
需要到plun.asp页去处理
<!--#include file="Conn.asp" --> <html> <head> <% rep_name=request.form("rep_name") con_id=request.form("id") rep_con=request.form("rep_con")
if con_id<>"" or rep_con<>"" then ' 如果成功添加,设置2秒的时间来跳转 %> <meta http-equiv="refresh" content="2;url=/viewmore.asp?id=<%=con_id%>"> <%else '不成功,直接回到原页 response.redirect "/viewmore.asp?id=<%=con_id%>" end if%> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>评论--风的思念</title> </head> <body><center> <%if con_id<>"" or rep_con<>"" then ' 由于本页不能用session来限制,所以用这种方法能限制,只有从详细页的表单输入值提交,rep_con才可能不为空,这样就执行添加评论的代码。而前面的if语句是用来设置跳转的。
set rs=server.CreateObject("adodb.recordset") sqlstr="select * from reply" rs.open sqlstr,conn,1,3
rs.addnew rs("id")=con_id rs("rep_name")=rep_name rs("rep_con")=rep_con rs.update %> <font color="#0000FF"><b>评论成功! 你将在2秒后返回!</b></font><br><br> <font size="2"><a href="/viewmore.asp?id=<%=con_id%>">如果不想等待自动返回,请手动点击本行返回!</a></font> <%end if%>
</body> </html>
|
| | |