Добрый день уважаемые пользователи данного портала. Пишу вам с просьбой помочь мне доделать алгоритм распределения матчей и генерации данной сетки. Суть проблемы: если при регистрации турнира указать максимум 16 команд и в процессе регистрации на турнир зарегистрируются 16 команд, то всё норм, а если хотя бы на одну команду меньше, то вот здесь уже начинается проблемос. Вот как должно работать, если хотя бы на 1 команду меньше. Ниже описывается сколько участников всупят в первый день, у меня же это считается первая стадия, точнее максимальная(Стадия - Круг, в котором встречаются четыре игрока, называется полуфиналом. При числе участников свыше 16 круг, ему предшествующий, т. е. в котором встречаются восемь игроков, называется четвертьфиналом.)
Теперь что у меня не получается: я могу расчитать количество команд, которые должны начать играть в первый день, и вот тут начинается проблемос. Возьмем например максимум 16 команд, это 4 стадии. У меня зарегистрировались всего 9, получается на 4 стадии играют 2 команды(рассчитывая по формуле), а остальные 7 начинают с третьей стадии. Сетка генерируется по матчам, таблица матчей выглядит так:
Спойлер (Отобразить)CREATE TABLE IF NOT EXISTS `matchs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_tour` int(11) DEFAULT NULL COMMENT 'Ид турнира',
`team_id_1` int(11) DEFAULT NULL COMMENT 'Ид команды 1',
`team_id_2` int(11) DEFAULT NULL COMMENT 'Ид команды 2',
`group_match` varchar(10) DEFAULT NULL COMMENT 'Группа',
`stage` int(11) DEFAULT NULL COMMENT 'Стадия',
`cell` int(11) DEFAULT NULL COMMENT 'Матч или ячейка',
`next_stage` int(11) DEFAULT NULL COMMENT 'Следующая стадия',
`next_cell` int(11) DEFAULT NULL COMMENT 'Следующая ячейка',
`next_team_id` varchar(32) DEFAULT NULL COMMENT 'Какое поле обновить:team_id_1 или team_id_2',
`last_match_1` int(11) DEFAULT NULL COMMENT 'Предыдущий матч команды 1',
`last_match_2` int(11) DEFAULT NULL COMMENT 'Предыдущий матч команды 2',
`score_1` int(11) DEFAULT NULL COMMENT 'Счет команды 1',
`score_2` int(11) DEFAULT NULL COMMENT 'Счет команды 2',
`win` int(11) DEFAULT NULL COMMENT 'Победитель матча или турнира',
`date_match` varchar(32) DEFAULT NULL COMMENT 'Дата матча',
`stream` varchar(32) DEFAULT NULL COMMENT 'Трансляция матча',
`protest` int(11) DEFAULT NULL COMMENT 'Протест',
`status` int(11) DEFAULT NULL COMMENT 'Статус матча(ожидается, играется, сыгран, отменен)',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=16 ;
--
-- Дамп данных таблицы `dynamit_matchs`
--
INSERT INTO `matchs` (`id`, `id_tour`, `team_id_1`, `team_id_2`, `group_match`, `stage`, `cell`, `next_stage`, `next_cell`, `next_team_id`, `last_match_1`, `last_match_2`, `score_1`, `score_2`, `win`, `date_match`, `stream`, `protest`, `status`) VALUES
(1, 1, 15, 12, NULL, 4, 1, 3, 1, 'team_id_1', NULL, NULL, 16, 0, 15, NULL, NULL, NULL, NULL),
(2, 1, 6, 5, NULL, 4, 2, 3, 1, 'team_id_2', NULL, NULL, 20, 20, 5, NULL, NULL, NULL, NULL),
(3, 1, 2, 3, NULL, 4, 3, 3, 2, 'team_id_1', NULL, NULL, 20, 0, 2, NULL, NULL, NULL, NULL),
(4, 1, 13, 9, NULL, 4, 4, 3, 2, 'team_id_2', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(5, 1, 16, 1, NULL, 4, 5, 3, 3, 'team_id_1', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(6, 1, 7, 10, NULL, 4, 6, 3, 3, 'team_id_2', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(7, 1, 11, 14, NULL, 4, 7, 3, 4, 'team_id_1', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(8, 1, 8, 4, NULL, 4, 8, 3, 4, 'team_id_2', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(9, 1, 15, 5, NULL, 3, 1, 2, 1, 'team_id_1', 1, 2, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(10, 1, 2, 0, NULL, 3, 2, 2, 1, 'team_id_2', 3, NULL, 21, 0, 2, NULL, NULL, NULL, NULL),
(11, 1, 0, 0, NULL, 3, 3, 2, 2, 'team_id_1', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(12, 1, 0, 0, NULL, 3, 4, 2, 2, 'team_id_2', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(13, 1, 0, 2, NULL, 2, 1, 1, 1, 'team_id_1', NULL, 10, 0, 21, 2, NULL, NULL, NULL, NULL),
(14, 1, 0, 0, NULL, 2, 2, 1, 1, 'team_id_2', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(15, 1, 2, 0, NULL, 1, 1, 0, 1, 'team_id_1', 13, NULL, 22, 0, 2, NULL, NULL, NULL, NULL);
Так вот как мне сделать, чтобы скрипт правильно понимал, сколько команд в первой стадии, а остальных кидал на предыдущую стадию. Если нужен скрипт, который генерирует данный запрос, выложу. Помогите пожалуйста. Третий день голову ломаю, ничего придумать не могу(