Zendikar draft records from 2009 while in progress, notice the hidden columns C,E,G,etc..
Those columns are all 1 or 0 if the column to their left is 2 or not, respectively. This allowed for an easy Victories sum.
When we first started, we would record our game wins/losses on an excel spreadsheet shared over the network, however this was clumsy in that it had to be created each time depending on who was playing that draft, and the file would lock out others from updating if it was opened by someone. That is why I created a simple PHP page that connects to a database and does all the recording work for you. The database is structured as follows:Those columns are all 1 or 0 if the column to their left is 2 or not, respectively. This allowed for an easy Victories sum.
Each bracket has a list of
players, the table Competitors. Each bracket is made up of an NxN grid
where N is the number of players. In each cell of this grid, a record is
stored. These records link to the P1 and P2 of the given cell as well
as the bracket in which it is contained. The records are merely # of
wins; 0, 1, or 2 for a given match. The actual calculation for getting
results and standings are done live on the page.![]() | ![]() |
$cellValue would later be echo'd in the current cell position. In the end it looks a little something like this:
Another issue I wanted to tackle was the creation of new brackets easily. I had the database in place, all I needed now was a way to take the information from the user and create a new bracket with it. For the input of player names, rather then have you specify a number of players, then generate that many input boxes, I simply ask for the list of players separated by commas.

This leaves me with an array of player names to insert to the database as well as a bracket name to insert. I then take all the players and the bracket and tie them together in the Competitors database table, and my bracket is good to go :).
Last but not least, something I am rather happy with is the way that the record fields are presented for updating. Rather then have you click a cell, load a page with an input form for the value of that cell and then submit, I decided to have the whole bracket editable at once and have each display field turn in to an input field for itself.

The input fields are small enough to not mess with the table structure and with a fast enough browser the change from viewing static fields to viewing the input fields is seemless. This also works great for mobile browsing as the information is all there every time you want to update.
I am very happy how it turned out, and we all use it for every draft now. If you are at all curious for more info on how it works, check out the bracket page in action @ http://qqnoobs.com/bracket or download the source code below:










