制作我们自己的Ebay(拍卖系统)(6)

Resolving Bids - Page 6

Chris Payne

September 11, 2000

Function ResolveBids(ItemID)

'Set variables and create objects
dim monIncrement, monHighPrice, intAvailable, intTotItems, flgQuit
dim blnResolved

'Assume bids are resolved
blnResolved = True
strConnectionString = "DSN=MyAuction;UID=username;PWD=password;Database=MyAuctionDB"
set rst = Server.CreateObject("ADODB.Recordset")

'Get information from items table
strSQL = "SELECT Increment, Available FROM tblAuctionItems WHERE " & _
"IID = " & ItemID
rst.open strSQL, strConnectionString
monIncrement = rst(0)
intAvailable = rst(1)
rst.close

'Find the highest bid and total number items bid for
strSQL = "SELECT max(WinPrice) AS WinPrice, sum(WinItems) as " & _
"WinItems FROM tblAuctionBids WHERE " & _
"ItemID = " & ItemID
rst.open strSQL, strConnectionString
monHighPrice = rst(0)
intTotItems = rst(1)
rst.close

'If a user with a higher max bid exists, then
' update their bid if and only if available items is exceeded
strSQL = "SELECT MaxBid, UID, BidItems, WinPrice FROM " & _
"tblAuctionBids WHERE ItemID = " & ItemID
rst.open strSQL, strConnectionString
if not rst.eof then
do until rst.eof
if (rst(0) > monHighPrice + monIncrement) AND (intTotItems > intAvailable) & _
AND (rst(3) <> monHighPrice) then
monHighPrice = monHighPrice + monIncrement
call DoBids(ItemID, rst(1), monHighPrice)
blnResolved = False
end if
rst.MoveNext
'If we're at the end of the recordset
and the bids are not yet resolved, go back to the beginning
if not blnResolved AND rst.eof then
rst.MoveFirst
blnResolved = True
end if
loop
end if
rst.close

End Function

The main part of the above code is the last do...loop section. The process is as follows:

Enter a user's bid (using the DoBids() function)
Find the highest bid for the item, and total number of items bid for
Loop through database and:
IF the current bidder's maximum bid is higher than the highest winning bid,
AND the total number of items bid for is greater than the number of items available,
AND the current bidder's bid is not the highest bid,
THEN increment the current bidder's bid by the increment value.
If we reach the end of the recordset, and the bids are still not resolved, the start over.
This process will automatically update all bids appropriately, and weed out those whose max bids are not
high enough. The reason we check to make sure the total number of items bid for is greater than the number
of total items available in step 4 is because if all bids are placed and items claimed, and there are
still lots available, then everyone wins and bids do not need to be incremented.

For example, imagine there are 10 lots available, and there are 3 bidders. If bidder A wants 3 lots at $3,
bidder B wants 3 lots at $2, and bidder C wants 3 lots at $1, everyone will win because there is enough
lots to go around, and then some. The do loop above will only have to go through once.

However, suppose bidder C now wants 5 items. Since there are not enough items to go around, someone will
have to lose out. The loop in the code above weeds this person out by checking max bids and updating the
winning bids. If everyone's max bids in this scenario was $20, and the increment was $2, then bidder C and
whichever of bidder A and B placed the first bid would win (remember that bid priority is placed on most
lots bid for, followed by bid time).

时间: 2024-10-31 06:07:19

制作我们自己的Ebay(拍卖系统)(6)的相关文章

制作我们自己的Ebay(拍卖系统)(1)

Chris Payne September 11, 2000 Everyone knows Ebay is raking in the big bucks. Peer to peer networking is where it's at, and auctions can make some serious money. While finding items to sell and attracting people to your auction is up to you, this ar

制作我们自己的Ebay(拍卖系统)(9)

Chris Payne September 11, 2000 Hopefully this article showed you that creating something as complex as an auction isn't impossible, but just takes some forethought and imagination. You're probably not ready to take on Ebay yet, but if you have need t

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

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

制作我们自己的Ebay(拍卖系统EN) - 1

Chris Payne September 11, 2000 Everyone knows Ebay is raking in the big bucks. Peer to peer networking is where it's at, and auctions can make some serious money. While finding items to sell and attracting people to your auction is up to you, this ar

制作我们自己的Ebay(拍卖系统)(2)

Chris Payne September 11, 2000 Before we go jumping into code and databases, let's take a moment and examine the needs and strategies, as well as the different types of auctions. First of all, there are many different types of auctions (which we'll d

制作我们自己的Ebay(拍卖系统)(3)

Based on the information in the previous section, we have a good understanding of what our database schema should look like. The following tables list our database structure: tblAuctionsAID:Unique ID to keep track of records AutonumberStartDate:Date

制作我们自己的Ebay(拍卖系统)(4)

First, we'll discuss the easy part. You'll have to create a few forms - one for the users to register (that is, get themselves into our AuctionUsers table), and one for sellers to post their info. These forms should be easy to create if you know how

制作我们自己的Ebay(拍卖系统)(5)

This is the complex part - you must make sure everyone's bids are correct, update those that have proxy bids, reallocate lots to winners, notify buyers who have been outbid, and perform some upkeep. First let's look at the code to add a bid. Function

制作我们自己的Ebay(拍卖系统)(8)

Chris Payne September 11, 2000 So now you've got yourself a pretty functional auction. Let's talk a bit about what we haven't covered, and a few miscellaneous things. Things to Add While this auction will work, it lacks a few features of finer produc