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" οnsubmit="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")%>" οnclick="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&"条记录&nbsp;&nbsp;&nbsp;" 
if page =1 then                  
    response.Write"<font color= darkgray>首页&nbsp;&nbsp;&nbsp;&nbsp;上一页</font>&nbsp;&nbsp;" '首页 上一页
else
    response.Write"<a href=index.asp?page=1&menu=1>首页</a><a href=index.asp?page="&page-1&"&menu=1>&nbsp;&nbsp;上一页</a>&nbsp;&nbsp;"
end if 

if page = allpases then  
    response.Write"<font color= darkgray>下一页&nbsp;&nbsp;&nbsp;&nbsp;尾页</font>"             '下一页 尾页
else
    response.Write"<a href=index.asp?page="&page+1&"&menu=1>下一页</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href=index.asp?page="&allpases&"&menu=1>尾页</a>"
end if 

response.Write"&nbsp;&nbsp;当前第"&page&"页&nbsp;&nbsp; 共"&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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值