Web Developer's Virtual Library: Encyclopedia of Web Design Tutorials, Articles and Discussions


WDVL Newsletter

Active Server Pages
JSP/Java Servlets
Microsoft SQL Server
Daily Backup
Dedicated Servers
Streaming Audio/Video
24-hour Support    

jobs.webdeveloper.com

Hiermenus


e-commerce
Partner With Us















Developer Channel
FlashKit.com
JavaScript.com
JavaScriptSource
Developer Jobs
ScriptSearch
StreamingMediaWorld
Web Developer's Journal
Web Developer's Virtual Library
WebDeveloper.com
Webreference
Web Hosts
XMLfiles.com

internet.com
IT
Developer
Internet News
Small Business
Personal Technology

Search internet.com
Advertise
Corporate Info
Newsletters
Tech Jobs
E-mail Offers


Resolving Bids - Page 6

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:

  1. Enter a user's bid (using the DoBids() function)
  2. Find the highest bid for the item, and total number of items bid for
  3. Loop through database and:
  4. 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.
  5. 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).

Managing Bids - Page 5
How to Make Your Own Ebay
Determining A Winner - Page 7


Up to => Home / Authoring / ASP / Ebay




Jupiter Online Media: internet.comearthweb.comDevx.commediabistro.comGraphics.com

Search:

Jupitermedia Corporation has two divisions: Jupiterimages and Jupiter Online Media

Jupitermedia Corporate Info


Legal Notices, Licensing, & Permissions, Privacy Policy.

Web Hosting | Newsletters | Tech Jobs | Shopping | E-mail Offers