Таблицы HTML - охват ячейки - PullRequest
       4

Таблицы HTML - охват ячейки

2 голосов
/ 12 февраля 2010

Если у меня есть таблица, число столбцов которой не может быть определено при создании таблицы и строки которой могут иногда не содержать достаточно данных для заполнения каждого столбца, есть ли способ иметь последнюю ячейку в каждом ряду с авторазмером?

Я бы предпочел не использовать colspan в последней ячейке в каждой строке, потому что, опять же, максимальное число столбцов не предсказуемо при рисовании таблицы.

Например:

-----------------------------------
NEW ROW | FOO | BAR                | <- last cell should span the length of the table
-----------------------------------
NEW ROW | FOO | BAR | TEST | BLAH  | <- no spanning needed, as it contains the most cols
-----------------------------------
NEW ROW | FOO | BAR | TEST         | <- last cell should span the length of the table
-----------------------------------

Ответы [ 2 ]

1 голос
/ 13 февраля 2010

Вы можете создать отдельную таблицу для каждой строки и использовать CSS, чтобы установить ширину столбцов для управления макетом. В этом случае ширина последней ячейки будет установлена ​​на «auto»

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

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

<TABLE border="1">
   <TR><TD>NEW ROW</TD><TD>FOO</TD><TD COLSPAN="97">BAR</TD></TR>
   <TR><TD>NEW ROW</TD><TD>FOO</TD><TD>BAR</TD><TD>TEST</TD><TD COLSPAN="95">BLAH</TD></TR>
   <TR><TD>NEW ROW</TD><TD>FOO</TD><TD>BAR</TD><TD COLSPAN="96">TEST</TD></TR>
</TABLE>
0 голосов
/ 13 февраля 2010

Если вы имеете дело с записями в БД, которые могут быть пустыми или что-то в этом роде, этот псевдокод поможет вам начать:

foreach ($query as $row) {
    $max_elements = 5; //per your example
    $number_of_elements = count($row);
    $colspan = $max_elements - $number_of_elements;
    $i = 0;
    while ($i <= $number_of_elements-2) {
        echo "<td>".$row['$i']."</td>";
        $i++;
    }
    echo "<td colspan='$colspan'>".$row['$number_of_elements-1']."</td>";
}

В этом непроверенном / непроверенном PHP предпосылка состоит в том, чтобы подсчитать количество элементов для каждой строки и узнать, сколько осталось (на основе максимального числа, например, 5 в вашем примере). Затем выведите каждый элемент из запроса и добавьте в динамически сгенерированный colspan #.

для последнего.

Отладка оставлена ​​читателю в качестве упражнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...