Динамическое расположение таблиц с использованием PHP логики - PullRequest
0 голосов
/ 19 июля 2010

У меня есть простая таблица, которая имеет около 80 строк, которые я динамически заполняю с помощью PHP. То, что я пытаюсь сделать, это расположить эти строки по частям для каждого столбца. Поэтому, если у меня 80 строк, я бы хотел 4 столбца по 20 строк или около того, возможно, последний столбец имеет меньше или больше в зависимости от общего количества строк. Общее количество строк может измениться!

У меня возникли проблемы при разработке метода реализации, который не станет беспорядочным! Кто-нибудь знает простой способ, которым я могу это реализовать.

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

foreach($indexes as $index){

    $counter++;

    echo '<tr>';

    if($counter > 20){

        $multiplier = $counter / 20;

        $head = '<td></td>';

        for($i=1; $i<$multiplier; $i++){

            $head .= '<td></td>';

        }

    }

    if($counter < 20){

        $head = ''; 

    }

    echo "$head<td>$index</td><td><input id='$index' name='$index' type='checkbox' /></td>";  

    echo '</tr>';

}

Спасибо всем за помощь

Ответы [ 3 ]

1 голос
/ 19 июля 2010

Я бы сделал:

$nbCols = 4;
$nbRows = count($indexes)/$nbCols;
for($row=0; $row<$nbRows; $row++) {
    echo "<tr>";
    for($i=0; $i<$nbCols; $i++) {
        $index = $indexes[$row + ($i*$nbRows)];
        echo "<td>$index</td><td><input id='$index' name='$index' type='checkbox' /></td>";
    }
    echo "</tr>";
}
0 голосов
/ 19 июля 2010

если вы не возражаете против такого порядка ячеек:

1 2 3 4
5 6 7 8

вы можете использовать <div style='float:left'>$cellValue</div> в цикле без использования таблицы.

0 голосов
/ 19 июля 2010

Разве вы не хотели бы видеть оставшуюся часть вашего подразделения и заниматься этим также?

if($counter % 20 == 0){
  // You've no remainder
}else{
  // Do another loop to output the odd rows
}

Или вы можете % 2 == 0 проверить, четное ли это, а затем просто умножить весь результат на 10.

Обязательно посмотрите также ceil() и floor()для обеспечения вашего числа строк является круглым числом.

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