Вы можете просто получить доступ к выходному массиву с ходу. Вычислите, сколько строк вам нужно, как количество результатов, разделенное на 5, и используйте количество строк в качестве шага.
$ncols = 5;
$nrows = $nresults / $ncols + ($nresults % $ncols == 0 ? 0 : 1);
for ($i = 0; $i < $nrows; $i++)
{
// start row
for ($j = 0; $k < $ncols; $j++)
{
// print $results[$nrows * $j + $i]
}
// end row
}
Сначала вам нужно будет перенести результаты запроса в массив $results
. Поскольку вам нужно знать общее количество результатов, это является своего рода обязательным, хотя мне было бы любопытно, есть ли у кого-нибудь решение, которое может работать при получении результатов.
Обновление: См. Ответ Джастина для классного решения, которое увеличивает вывод при извлечении результатов запроса построчно. Поскольку в настоящее время над ним ведутся работы, вот краткое изложение (благодарность Джастину):
$nresults = mysql_num_rows($query);
$ncols = 5;
$nrows = (int) ceil($nresults / $ncols);
$i = 0; $cols = array_fill(0, $nrows, "");
while ($result = mysql_fetch_array($query))
$cols[$i++ % $nrows] .= "<td>$result['name']</td>";
echo "<tr>" . implode("</tr><tr>", $cols) . "</tr>";