Пользовательская таблица с использованием SQL-запроса и php

Я пытаюсь создать таблицу из запроса sql, но мне нужно только 3 результата на строку таблицы.

У меня есть список из примерно 47 имен, поэтому у меня нет проблем с их печатью на новой строке, но как мне создать таблицу, в которой цикл while будет печатать строку таблицы, а затем печатать 3 ячейки данных таблицы с запросом, а затем создавать новый строка для следующих 3 значений?

Пример:

результат_1 | результат_2 | результат_3
результат_4 | результат_5 | результат_6
результат_7 | результат_8 | результат_9

Текущий цикл while:

while($row = mysql_fetch_assoc($result)) {

      echo "<tr>";  
      echo "<td><input type='checkbox'> ".$row['name']."</td>";
      echo "<td><input type='checkbox'> ".$row['name']."</td>";
      echo "<td><input type='checkbox'> ".$row['name']."</td>";
      echo "</tr>";


        }

Структура базы данных:

идентификатор | имя
1 | результат_1
2 | результат_2
3 | результат_3
4 | результат_4

Заранее спасибо!


person 626    schedule 25.03.2014    source источник
comment
рассматривали ли вы возможность использования вложенных циклов for/while при повторении результата запроса для отображения таблицы? Было бы полезно, если бы вы могли опубликовать больше кода/структуры базы данных и других вещей, которые вы пробовали до сих пор.   -  person Maximus2012    schedule 26.03.2014
comment
Я обновил сообщение с кодом цикла while и структурой базы данных. Спасибо   -  person 626    schedule 26.03.2014


Ответы (2)


Вы можете использовать оператор модуля (%), чтобы проверить, готовы ли вы к новой строке.

    $number_of_names = count($names);
    $number_of_columns = 3; //you can change this at any point

    echo "<table><tr>";

    for($i=0;$ i<$number_of_names; $i++){
        echo "<td>" . $names[$i] . "</td>";

        if ($i % $number_of_columns == ($number_of_columns - 1) && $i<$number_of_names-1){
            echo "</tr><tr>";
        }
     }

     echo "</tr></table>";
person WinterMute    schedule 25.03.2014
comment
Спасибо, это идеально! - person 626; 26.03.2014

Попробуйте просмотреть результаты с помощью цикла for, а затем сравните остаток от деления итератора на 3 с помощью оператора модуля.

echo "<tr>";
for($i = 0; $i<mysql_num_rows($result); $i++) {
  if($i%3==0) {
    echo "</tr><tr>";
  }
  $row = mysql_fetch_assoc($result)
  echo "<td><input type='checkbox'> ".$row['name']."</td>";
}
echo "</tr>";
person Dragos Giurca    schedule 25.03.2014