Well, I'll bite. Get the data into PHP and process there.
You'd probably put the venues in an array, then sort by the number of "preference requests". Pull in any school whose location matched (should be just one, right?) and then pull in the first $n schools that preferred that venue (so, for example, if a local tourney is 8 teams, get 7 more). Move on to the next preferred venue and repeat, and so on.
As for the individual matchups, I take it there's no "seeding" of teams?