Bet System

Protip, don't made draw a 2 if you ever want to calculate winning percentage without driving yourself fucking nuts trying to use fewer queries. I did that and then the database grew to a couple hundred million rows.

Oddly enough, I just set up a site for taking bets for basketball games using EVE Online's currency, here's the structure.

--
-- Table structure for table `bets`
--

CREATE TABLE IF NOT EXISTS `bets` (
  `betid` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
  `gameno` int(10) unsigned NOT NULL,
  `lineid` mediumint(8) unsigned NOT NULL,
  `user` varchar(24) NOT NULL,
  `amount` bigint(20) unsigned NOT NULL,
  `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `bet` varchar(9) NOT NULL,
  `won` varchar(1) DEFAULT NULL,
  `rcvd` varchar(1) NOT NULL,
  `settled` varchar(1) NOT NULL,
  PRIMARY KEY (`betid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

-- --------------------------------------------------------

--
-- Table structure for table `games`
--

CREATE TABLE IF NOT EXISTS `games` (
  `gameno` bigint(20) unsigned NOT NULL,
  `gametime` varchar(16) NOT NULL,
  `home` varchar(47) NOT NULL,
  `away` varchar(47) NOT NULL,
  `q1h` varchar(2) DEFAULT NULL,
  `q1a` varchar(2) DEFAULT NULL,
  `q2h` varchar(2) DEFAULT NULL,
  `q2a` varchar(2) DEFAULT NULL,
  `q3h` varchar(2) DEFAULT NULL,
  `q3a` varchar(2) DEFAULT NULL,
  `q4h` varchar(2) DEFAULT NULL,
  `q4a` varchar(2) DEFAULT NULL,
  `oth` varchar(2) DEFAULT NULL,
  `ota` varchar(2) DEFAULT NULL,
  PRIMARY KEY (`gameno`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Table structure for table `lines`
--

CREATE TABLE IF NOT EXISTS `lines` (
  `lineid` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `gameno` bigint(20) unsigned NOT NULL,
  `home` varchar(47) NOT NULL,
  `away` varchar(47) NOT NULL,
  `MLH` varchar(7) NOT NULL,
  `MLA` varchar(7) NOT NULL,
  `SA` varchar(7) NOT NULL,
  `SH` varchar(7) NOT NULL,
  `SAH` varchar(7) NOT NULL,
  `SAA` varchar(7) NOT NULL,
  `OU` varchar(7) NOT NULL,
  `OUAO` varchar(7) NOT NULL,
  `OUAU` varchar(7) NOT NULL,
  PRIMARY KEY (`lineid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;

The system won't know whether or not there's a winner until you close out the games, then you can run some conditionals on what their bet was, and whether the final score results in a win/loss/draw.

/r/PHPhelp Thread