当前位置: 首页 > 图文教程 > 网络编程 > ASP > 制作我们自己的Ebay(拍卖系统)(7)

ASP
ASP页面随机添加字符实现防复制的代码
ASP中应用事务处理技巧
asp下比较全面的获取IP地址的代码
ASP实现缓存类无错版
asp下实现批量插入数据的方法
asp下用ADODB.Stream代替FSO读取文本文件
asp之基于adodb.stream的文件操作类
自己写的文件操作的function和Sub vb.net dll
kesion科讯V4.0管理员Key工具
asp 获取access系统表,查询等操作代码
asp之字符串函数示例
asp之日期和时间函数示例
ASP 关于动态数据显示页面得锚点
Asp无组件上传进度条解决方案
ASP控制每页打印行数
用ASP实现分级权限控制
ASP在服务器自动解压RAR文件
用ASP实现远程将文件批量改名的代码
在Asp程序中取得表单所有内容的代码
使用ASP实现网站的“目录树”管理的代码

ASP 中的 制作我们自己的Ebay(拍卖系统)(7)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 213 ::
收藏到网摘: n/a

  Chris Payne

September 11, 2000

Well, now your auction can run for an indefinite time. People can keep placing bids until you decide to
stop them (good for the seller, but makes bidders kind of unhappy, to say the least). Let's discuss the
mechanisms for stopping an auction.

There are two easy ways to do it. The first, and easiest to perform, though requiring more manual
intervention in the long run, is to simply build in an "Active" bit field into your tblAuctions table.
When you decide to stop the auction, flip the bit, and the auction is over. (You'll also have to add some
code to make sure that the DoBids and ResolveBids functions don't operate on closed auctions.) Then simply
query the database, find out the winner(s), and let them and the seller know. Easy as pie.

The second method is to go by the end date the seller specifies (better business, believe me). To do this,
you can manually stop the auction (via the process above) when the appropriate date comes, or you can
schedule a task to turn an auction off at the appropriate times. There are a few ways to do this, via your
database program and the Windows NT Task Scheduler, so I won't go through each one. You could simply set
the script to run every midnight or so to stop the auction and determine the winners.

If you let the seller specify an exact time for the auction to end, then you're introducing a whole new
set of complications. One way to handle this is to programmatically set a scheduled task as soon as the
seller submits the auction, for the end date of the auction. This requires minimum intervention, but
requires you to know how to do that (for documentation on the Task Scheduler, read this MSDN article).
Another method is to create your own specific version of task scheduler; create a small program that will
run in the background and watch the times on auctions. When an auction end date passes, flip the bit.

Okay, so the auction is over. Now what?

Assuming that you would like minimal manual intervention, and you don't really care who wins (like the
head guys at Ebay care who wins every single auction), then you could create a function to send alerts to
the winner(s) and seller that will kick off when the auction is over. This function could also in turn
kick off some type of payment system, but that is beyond the scope of this article. Let's look at the
function:



Function SelectWinners(AuctionID, itemID)


'Set variables and create objects
dim totItems, intAvailable
totItems = 0
strConnectionString = "DSN=MyAuction;UID=username;PWD=password;Database=MyAuctionDB"
set rst = Server.CreateObject("ADODB.Recordset")


'Find the number of items available
strSQL = "SELECT Available FROM tblAuctionItems WHERE " & _
"IID = " & ItemID
rst.open strSQL, strConnectionString
intAvailable = rst(1)
rst.close


'find the winners
'If two customers bid the same amount, the customer requesting
more items will win. If still tied, the customer placing the
earliest bid will win
strSQL = "SELECT UID, WinPrice, WinItems FROM tblAuctionBids " & _
"WHERE IID = " & itemID & " ORDER BY WinItems DESC, Time"


rst.open strSQL, strConnectionString
if not rst.eof then
do until rst.eof OR totItems >= intAvailable
'Keep a running tally of items distributed
totItems = totItems + rst(2)
If totItems <= intAvailable then 'This buyer won
'Send an email alerting this buyer
call SendWinningEmail(rst(0))
End if
rst.movenext
loop
end if


End Function


This is a pretty simple function. Simply loop through the bids in the correct order (by number of items
won first, and then by date), and alert the buyers that they've won. Once the num