Страница 1 из 1

как при помощи php и mysql это сделать

Добавлено: 2010-06-11 9:01:53
Гость
идет запрос в mysql сразу к 3-м таблицам. В цикле while выводится табличка с результатами запроса. Вся таблица представляет собой состояния некоторых событий(например событие №1 имеет несколько сток в результате запроса, событие №2 тоже произвольное кол-во строк). Каждое событие имеет свой ID, описание, время, статус, тип(это и есть ячейки таблицы). Для одного события статус и тип одинаковы. Что надо сделать, чтобы ячейки со статусом и типом отображались только один раз для одного ID?

Re: как при помощи php и mysql это сделать

Добавлено: 2010-06-13 5:52:31
ProFTP
похоже вроде бы на

Код: Выделить всё

GROUP By id
чтоли?

Re: как при помощи php и mysql это сделать

Добавлено: 2010-06-13 22:22:01
rmn
как-то так. Ячейки в первом столбце группируются по номеру id:

Код: Выделить всё

$result = mysql_query("... ORDER BY id");
$values = array();
while($row = mysql_fetch_assoc($result))
{
    $values[] = $row;
}

for ($i=0; $i<count($values); )
{
    $id_count = 1;
    $current_id = $values[$i]['id'];
    for($j=$i+1; $j<count($values); $j++)
    {
        if ($values[$j]['id'] == $current_id)
            $id_count++;
        else
            break;
    }

    echo "<tr>\n\t<td rowspan=" . $id_count . ">" . $values[$i]['id'] . "</td>\n";
    for($j=0; $j<$id_count; $j++)
    {
        echo "\t<td>" . $values[$i + $j]['col1'] . "</td>\n";
        echo "\t<td>" . $values[$i + $j]['col2'] . "</td>\n";
        ...
        echo "\t<td>" . $values[$i + $j]['colN'] . "</td>\n";
    }
    echo "</tr>\n";
    $i += $id_count;
}