ОБСУЖДЕНИЕ

Автоматические турниры (вопрос)

4 сообщений1 просмотровОткрыта
#1
Парни привет! Пишу игру, столкнулся с проблемой. Второй день мучаюсь как правильно расписать автоматическое переключение между турнирами. Нужна переменная $turnir, из нее беру все данные для турнира (начало, конец, награду и прочее).
вот код:

PHP

<?

if(mysql_result(mysql_query("SELECT COUNT(*) FROM `turnir` WHERE `time_start` < '".$time."' AND `time_end` > '".$time."'"),0)!=0)
{
$turnir=mysql_fetch_array(mysql_query("SELECT * FROM `turnir` WHERE `time_start` < '".$time."' AND `time_end` > '".$time."' ORDER BY `time_start` ASC")); //если идет турнир
}

elseif(mysql_result(mysql_query("SELECT COUNT(*) FROM `turnir` WHERE `time_start` > '".($time+1800)."' AND `time_end` > '".$time."'"),0)!=0)
{
$turnir=mysql_fetch_array(mysql_query("SELECT * FROM `turnir` WHERE `time_start` > '".($time+1800)."' AND `time_end` > '".$time."' ORDER BY `time_start` ASC")); // подготовка к турниру
}

elseif(mysql_result(mysql_query("SELECT COUNT(*) FROM `turnir` WHERE `time_start` < '".$time."' AND `time_end` < '".$time."'"),0)!=0)
{
$turnir=mysql_fetch_array(mysql_query("SELECT * FROM `turnir` WHERE `time_start` < '".$time."' AND `time_end` < '".$time."'")); // закончился

} else {
$turnir=mysql_fetch_array(mysql_query("SELECT * FROM `turnir` ORDER BY `time_start` ASC")); // если не подошло не одно - выбираем любой турнир
}

?>




И все работает на ура, кроме пункта "подготовка к турниру".

Вот допустим в таблицу с турами я добавил 3 турнира.
первый утром - с 8 до 9:30, второй с 15:00 до 16:00, третий с 22:00 до 23:30.
Сейчас к примеру 13:00, как сделать так, чтобы подготовка включалась за пол часа до следующего турнира, а до этого времени был еще текущий турнир, не важно прошел он или нет.

Данный код работает, но если после первого турнира в базе есть еще турниры - в первом турнире не показывает
победителей, а сразу переключается на второй.
#2
Если я верно понял то бери текущее время, добавляй к нему 30 минут и проверяй на существование турнир который начнётся через 30 мин( $time=time()+3*60; ) , если такой будет тогда исполняй код) всё просто.
#3
PHP

<?

elseif(mysql_result(mysql_query("SELECT COUNT(*) FROM `turnir` WHERE `time_start` > '".($time+1800)."' AND `time_end` > '".$time."'"),0)!=0)
{
$turnir=mysql_fetch_array(mysql_query("SELECT * FROM `turnir` WHERE `time_start` > '".($time+1800)."' AND `time_end` > '".$time."' ORDER BY `time_start` ASC")); // подготовка к турниру
}

?>



не совсем( как быть если турниров там больше 3-5 (запланированных на завтра к примеру)?

вот с этими строчками нужно намудрить что-то, да вот не пойму что, проверка стоит если есть вообще турниры через (текущее время+пол часа).
#4
можно сделать так что если в бд через пол часа обнаружен турнир, в выполнении кода делай запрос на окончание турниров которые уже идут для начала подготовки к новому турниру, а победителей, если есть такая строка, обирай кто ближе