Автор Тема: Подсчет  (Прочитано 4066 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Rodent

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 133
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.unimix.ru
Подсчет
« : 10 Июня 2006, 22:28:24 »
Что есть.
Таблица, куда заноситься id-команды и время прохождения гонки.
При выводе результатов на монитор пользователя производиться рассчет очков по нескольким методикам.
никуда результаты расчетов не сохраняются.

Что нужно.
Нужно создать турнирную (общую) таблицу с результатами (суммой всех очков команд по весм гонкам).

Как это сделать?
1. создавать временную таблицу, куда будут заноситься результаты гонок и суммировать
2. каждый раз вычислять очки по каждой гонке отдельно и потом суммировать (но тогда получается слишком много циклов) да и массив будет нехилый...

Как поступить? Совет дайте пожалуйста.

Оффлайн Rodent

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 133
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.unimix.ru
Подсчет
« Ответ #1 : 13 Июня 2006, 23:51:09 »
Ладно, в этом вопросе я помощи не дождался... :-( наверное у всех были очень бурные выходные... :-)

Я решил данную проблему путем составления доп таблицы и уже ее выводом на общее рассмотрение.
однако, у меня возник еще один вопрос. Надеюсь здесь мне помогут советом.

У меня получилось так, что несколько команд финишировали с одним временем, как сделать так в цикле, чтобы команды с одинаковым временем вставали на одно призовое место.

допустим.
команда - время - очки
 команда А - 1,50 - 5
 команда Б - 1,55 - 4
 команда С - 1,55 - 4
 команда Д - 1,59 -3
...
общее число команд около 80

нужно сделать так чтобы команды с одинаковым временем записывали в одну ячейку. т.е.
1 место -  команда А
2 место - команда В, команда С
3 место - Команда Д


$result  
запрос всех команд в игре со временем
for ($j=0$j<mysql_num_rows($result); $j++):
    
$r mysql_fetch_array($result);
    
$sql запрос кол-ва команд с одиноковым временем r[time]
    
$result2 mysql_query($sql);
    
$num mysql_num_rows($result2);
    while (
$r2 mysql_fetch_array($result2)) {
         echo \
'вывод списка\';
    }
    $j = $j+$num-1; // типа чтобы пропустить те котроые уже посчитали...
endfor;

но вот тут и загвоздка, выводит не то... команды дублируются... некоторых вообще нет...


HELP SOS

Дайте плиз совет.... я практически уверен, что мыслю не в том направлении... хотя бы дайте направление...
« Последнее редактирование: 13 Июня 2006, 23:59:16 от Rodent »

Оффлайн Altaxar

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 222
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.moroseac.ru/
Подсчет
« Ответ #2 : 14 Июня 2006, 17:33:11 »
Сделай проще, зачем тебе 2 запроса? поставь в 1 запрос сортеровку по времени, а за место
echo \'вывод списка\';
создай масив почти такойже только индекс пусть бежит отдельно.
проверяй не тоже ли время у прошлого элемента в масиве.
если да, то добовляй в прошлый элемент имя этой команды, заодно и придержи индекс масива.

P.S. на с чет первого вопроса: MySQL умеет делать математические операции меж несколькими таблицами.
« Последнее редактирование: 14 Июня 2006, 17:41:41 от Altaxar »
Не все является тем чем кажется.

Оффлайн Rodent

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 133
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.unimix.ru
Подсчет
« Ответ #3 : 15 Июня 2006, 21:22:36 »
Я чего-то не догоняю, как мне вывести, чтобы две команды оказались на одном месте, при этом не сбился счетчик?

Оффлайн Altaxar

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 222
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.moroseac.ru/
Подсчет
« Ответ #4 : 16 Июня 2006, 11:12:14 »
допустим $mas- масив после запроса MySQL тоесть
тип $mas[$key][\'name\'], $mas[$key][\'date\'];
$key -порядковый номер строки, \'name\' \'date\'- твои столбци (имя и время)
foreach($mas as $key => $val)
  if(($key!=0) && ($mas[$key-1][\'date\']==$val)){
    $mas[$key-1][\'name\'].=$val[\'name\'];
     unset($mas[$key]);
}
Не все является тем чем кажется.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28