Forum Webscript.Ru

Программирование => PHP => Тема начата: Rodent от 10 Июня 2006, 22:28:24

Название: Подсчет
Отправлено: Rodent от 10 Июня 2006, 22:28:24
Что есть.
Таблица, куда заноситься id-команды и время прохождения гонки.
При выводе результатов на монитор пользователя производиться рассчет очков по нескольким методикам.
никуда результаты расчетов не сохраняются.

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

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

Как поступить? Совет дайте пожалуйста.
Название: Подсчет
Отправлено: Rodent от 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    $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

Дайте плиз совет.... я практически уверен, что мыслю не в том направлении... хотя бы дайте направление...
Название: Подсчет
Отправлено: Altaxar от 14 Июня 2006, 17:33:11
Сделай проще, зачем тебе 2 запроса? поставь в 1 запрос сортеровку по времени, а за место
echo \'вывод списка\';
создай масив почти такойже только индекс пусть бежит отдельно.
проверяй не тоже ли время у прошлого элемента в масиве.
если да, то добовляй в прошлый элемент имя этой команды, заодно и придержи индекс масива.

P.S. на с чет первого вопроса: MySQL умеет делать математические операции меж несколькими таблицами.
Название: Подсчет
Отправлено: Rodent от 15 Июня 2006, 21:22:36
Я чего-то не догоняю, как мне вывести, чтобы две команды оказались на одном месте, при этом не сбился счетчик?
Название: Подсчет
Отправлено: Altaxar от 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]);
}