asp之增,删,改,查的理解
sp琐碎经验记录
对基本操作:增,删,改,查 的理解:
增:
增就是用addnew来向数据库增加一条记录,是一个单纯的添加,不涉及到 id 和 循环结构等。
基本结构如下:
比如:
add.asp [前台结构]
----------------------------------------------------------------------------------------------------------------------------------------------
<script type="text/javascript">
function check(form_add)
{
if(form_add.title.value=="")
{
alert("请填写标题!")
return false;
}
if(form_add.content.value=="")
{
alert("请填写内容!")
return false;
}
}
</script>
<form action="adding.asp" onsubmit="return check(this)"> // 客户端判断表单
<input type="text" name="title"/>
<input type="text" name="content"/>
<input type="submit" value="提交">
</form>
adding.asp [ 程序处理页]
----------------------------------------------------------------------------------------------------------------------------------------------
<%
db="db.mdb"
conn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)
%>
此段为包含文件conn.asp
----------------------------------------------------------------------------------------------------------------------------------------------
对数据库操作要定义3个方面:连接对象,记录集对象,和 SQL语句
<%
dim objconn
set objconn= server.CreateObject("adodb.connection")
objconn.open conn 数据库连接对象 打开包含有:数据库驱动 和 存放地址 的数据库。
dim rs,sql
set rs=server.CreateObject("adodb.recordset")
set sql="select * fromnews"
rs.open sql,objconn,1,3 以上3者都是为了此处创建记录集。
rs.addnew
rs("title")=request.Form("title")
rs("content")=request.Form("content")
rs.update
rs.close
objconn.close
set objconn=nothing
response.Write"<script>alert('添加成功');history.back();</script>" '提示语
%>
;location.href='index.asp'; 页面重定向
----------------------------------------------------------------------------------------------------------------------------------------------
删:
删最大的关键是:你要找到你要删除的那个记录的 id 。把它给获取过来,然后,再操作数据库删掉。
一般我们在新闻列表页,会循环把记录读出来,然后,在每条记录后面跟个“删除”,或文字,或图标。
如:
<td>
<a href="del.asp?id=<%=rs("id")%>" onclick="return confirm('确定将此记录删除?')">
<img src="img/del_btn.gif" alt="删除该贴" />
</a>
</td>
在该列表中,给一个包含 id 的链接,然后,将此 id 带到 del.asp 中去进行删除。
del.asp代码如下:
<%
id=request.queryString("id") '获取地址栏参数 id
sql = "select * from tz where ID="&id '从数据库中查询id 列的值为id 的记录
set rs=server.createobject("adodb.recordset") '创建RecordSet 对象
rs.open sql,objconn,1,3
rs.delete
rs.close
set rs=nothing
objconn.close
set objconn=nothing
response.Write"<script> alert ('删除成功!,确定返回!')</script>"
response.redirect "index.asp"
%>
----------------------------------------------------------------------------------------------------------------------------------------------
改:
改就是编辑,是对已有的信息进行再编辑的过程,所以,此项操作也设置到 id 的问题。所以,在列表页链接“编辑”的时候也要带 id 。如:<a href="edit.asp?id=<%=rs("id")%>编辑</a>
改 跟 新增 其实很像,都是很多 input,只不过,新增的 input 里是空的,而改是将数据库的信息抓出来,放到 input 去,让你提交了再重新插入的过程。
edit.asp整个页面结构的话,上面要程序处理,下面要读数据到input中去!等于说是 一个地址栏的 id 分了两次用。一个是提交后插入到对于的那个 id ;一个是获取过来地址栏 id 来先显示出来。
这里的edit.asp是包含 表单内容 和 提交后程序处理内容的。在一张页面中。
获取id 插入对应的,编辑更新。
<%
if request.Form("tj")<>"" then 判断按钮是否点过。然后才执行下面的代码。此处需注意!
id=request.queryString("id")
sql = "select * from tz where id="&id
set rs= server.CreateObject("adodb.recordset")
rs.open sql,objconn,1,3
rs("title") = request.Form("title")
rs("content") = request.Form("content")
rs.Update
rs.close
set rs=nothing
response.Write"<script> alert ('信息修改成功!,确定返回!')</script>"
end if
%>
===========================================================
将要编辑的那个记录读出来
<%
id=request.queryString("id")
set rs=server.createobject("adodb.recordset")
sql = "select * from tz where ID="&id '从数据库中查询id 列的值为id 的记录
rs.open sql,objconn,1,3
%>
<form action="edit.asp?id=<%=id%>" method=post > 注意此处的表单提交参数
<input type="text" name="title" value="<%=rs("title")%>">
<input type="text" name="content" value="<%=rs("content")%>">
<input type="submit" name="tj" value="提交" />
</form>
<%
rs.close
set rs=nothing
objconn.close
set objconn=nothing
%>
==============================================================================
附:孙麒新闻系统的一点思考和技巧分析
孙麒的新闻系统,改,也就是编辑分为2个页面,分别是:newsedit.asp, newsediting.asp,
他在 newsedit.asp 中,负责了将数据读出来到 input , 通过 sql2="select id,cid,title,content,keywords,author,isindex,indexpic from ywhd_news where id ="&request.querystring("id").这个语句找到那个记录。
在此 newsedit.asp 页面中,新闻尾部跟了一个隐藏域:<input name="hf" type="hidden" value="<%=rs("id")%>"/> 此处的隐藏域是为了传参数给 后面的程序处理页 newsediting.asp
到了 newsediting.asp中后呢,是这样获取的!
<%
dim id
id=request.form("hf")
sql="news"
rs.find="id="&id
。。。
%>
总结:edit.asp 就是一个承上启下的作用。
承上就是; 从地址栏获得ID, 以供自己显示内容;
启下就是,本身底部在含一个隐藏域ID,以供程序处理页更新。
----------------------------------------------------------------------------------------------------------------------------------------------
查
查就是查看,查看比上面三种情况要稍微复杂一点。关键点是:第一要把记录循环出来;第二个要弄个分页。
循环代码如下:
<%
set rs_web = server.CreateObject("adodb.recordset")
sql_web="select * from web "
sql_web = sql_web&" order by web_addtime desc"
rs_web.open sql_web,objconn,1,3
if not rs_web.eof and not rs_web.bof then
if counts=0 or counts="" then counts=20
rs_web.pagesize = counts
allpases = rs_web.pagecount
page = request("page")
if not isnumeric(page) then page = 1
if isempty(page) or cint(page) < 1 then
page = 1
elseif Cint(page) >= allpases then 'page 值大于总页数
page = allpases
end if
rs_web.absolutepage = page
do while not rs_web.eof and counts>0
%>
<tr>
<td><%=rs_web("title")%></td>
<td><%=rs_web("content")%></td>
</tr>
<%
counts = counts -1 ' 这句千万别掉了,掉了就会导致循环条数无法控制!
rs_web.movenext
if rs_web.eof then exit do
loop
end if
%>
----------------------------------------------------------------------------------------------------------------------------------------------
分页代码如下:
<tr class="page">
<td colspan="5">
<%
response.Write"总共"&rs_web.recordcount&"条记录 "
if page =1 then
response.Write"<font color= darkgray>首页 上一页</font> " '首页 上一页
else
response.Write"<a href=index.asp?page=1&menu=1>首页</a><a href=index.asp?page="&page-1&"&menu=1> 上一页</a> "
end if
if page = allpases then
response.Write"<font color= darkgray>下一页 尾页</font>" '下一页 尾页
else
response.Write"<a href=index.asp?page="&page+1&"&menu=1>下一页</a> <a href=index.asp?page="&allpases&"&menu=1>尾页</a>"
end if
response.Write" 当前第"&page&"页 共"&allpases&"页"
%>
</td>
</tr>
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
无分页简单循环查看
<%
Set Rs_dsj=Server.CreateObject("Adodb.RecordSet")
Sql_dsj="Select * From [dsj] Order By year_dsj asc"
Rs_dsj.Open Sql_dsj,Conn,1,1
Do While Not Rs_dsj.Eof
%>
<div class="year_box">
<div class="y_num"><%=Rs_dsj("year_dsj")%></div>
<div class="y_info"><%=Rs_dsj("content")%></div>
</div>
<%
Rs_dsj.MoveNext
Loop
Rs_dsj.close
%>
-----------------------------------------------------------------------------------------------------------------------------
提示并跳转
response.Write"<script> alert ('作品添加成功!');location.href='works_add.asp';</script>"
<a href="del_news_cn.asp?id=<%=rs("id")%>" onClick="return confirm('确定将此记录删除?')">删除</a> 删除前的提示
经典程序块 - 有信息就循环显示,没信息就提示"暂无信息..."
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
<%
set rs_news01 = server.CreateObject("adodb.recordset")
sql_news01="select top 4 * from News_List2 where ClassID=50 order by PostTime desc"
rs_news01.open sql_news01,conn,1,3
if not rs_news01.eof and not rs_news01.bof then
do while not rs_news01.eof
%>
<a href="news_details.asp?id=<%=rs_news01("ID")%>"><span class="dot">·</span><%=rs_news01("Title")%></a><br/>
<%
rs_news01.movenext
if rs_news01.eof then exit do
loop
else
response.Write("暂无信息...")
end if
%>
单选框 根据数据库值,让其处于选定!
<input type="radio" name="w_type" value="ui"<% if rs("w_type")="ui" then response.Write("checked") end if%>/>界面设计 UI Design
<input type="radio" name="w_type" value="web" <% if rs("w_type")="web" then response.Write("checked") end if%> />网页设计 Web Design
提示并且重定向
Response.Write("<script>alert('删除信息成功。');location.href='Admin_star.asp';</script>")
以下为错误的写法,response.Write 后面掉了()
response.Write"<script> alert ('删除子公司成功!,确定返回!')</script>"
response.redirect "admin_star.asp"
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
新闻搜索代码:
控件代码如下:
<select name="select" id="select">
<option value="" >-请选择新闻类别-</option>
<option value="名扬新闻" >名扬新闻</option>
<option value="行业资讯" >行业资讯</option>
<option value="文化信息" >文化信息</option>
</select>
<input type="radio" name="rtype" id="rTitle" value="1" checked="checked" />
标题
<input type="radio" name="rtype" id="rKeywords" value="2" />
正文
<input name="txtSearch" type="text" class="input_text" id="txtSearch" size="30" />
<input type="submit" name="btnSearch" id="btnSearch" value="查询" />
---------------------------------------------------------------------------------------------------------
程序代码如下:
<%
dim Rs,strSql
Set Rs=Server.CreateObject("Adodb.RecordSet")
strSql="Select * From [News] Where 1=1 "
'选择下拉大类的搜索
if request.Form("select")<>"" then
selectname= request.Form("select")
strSql=strSql&"and BigClassName='"&selectname&"'"
end if
'strSql=strSql&"and BigClassName='"&selectname&"'"
'标题,正文 关键字的搜索-开始
if request.Form("rtype")=1 then
if request.Form("txtSearch")<>"" then
strSql=strSql&" and Title like '%"&request.Form("txtSearch")&"%'"
end if
else
if request.Form("txtSearch")<>"" then
strSql=strSql&" and Content like '%"&request.Form("txtSearch")&"%'"
end if
end if
'标题,正文 关键字的搜索-结束
strSql=strSql&" order by AddDate desc"
Rs.Open strSql,Conn,1,3
接下来,就是正常的列表代码了~
转载于:https://my.oschina.net/u/583531/blog/842749