Php 每10个结果后新列

Php 每10个结果后新列,php,mysql,Php,Mysql,我得到的结果是 Column 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 . . 诸如此类 我需要这样显示结果。。。。。。每10行后添加一个新列 col 1 | col 2 | ..... abc | 11 | 21 jjj | 12 | . jhjjk | 13 | . jhbjj | ... | . ..... | ... |

我得到的结果是

Column 1

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

.

.
诸如此类

我需要这样显示结果。。。。。。每10行后添加一个新列

col 1  |    col 2  | .....
abc    |    11     | 21
jjj    |    12     |  .
jhjjk  |    13     |  .
jhbjj  |    ...    |  .
.....  |    ...    |  .  
.....  |    ...    |  .
10     |    20     | 30
做了这么多

<?php

mysql_select_db("$database");

    $sql = "select test, rate FROM product";
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_assoc($result)) {
   echo <<<EOL
<input type="checkbox" name="name[]" value="{$row['test']}-{$row['rate']}" /> {$row['test']}-{$row['rate']}<br />

EOL;
}
?>


任何帮助都将不胜感激。

如果您可以使用列表而不是单独的列生存下来,那么这在SQL中并不太糟糕。这将是:

1,11,21,31
2,12,22,32
但这些值都将在一列中

其思想是枚举值(使用变量),然后聚合:

select group_concat(column order by rn)
from (select t.column, (@rn := @rn + 1) as rn
      from t cross join
           (select @rn := 0) params
      order by ??  -- do you want an ordering?
     ) t
group by (rn - 1) % 10
order by min(rn);

您需要在PHP代码中实现逻辑,如下所示:

<?php
$input_fields = array();
$rows_per_column = 10;

mysql_select_db("$database");

$sql = "select test, rate FROM product";
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_assoc($result)) {
    $input_fields[] =<<<EOL
<input type="checkbox" name="name[]" value="{$row['test']}-{$row['rate']}" /> {$row['test']}-{$row['rate']}
EOL;
}

echo "<table><tr>";

foreach ($input_fields as $i => $value){
    if ($i % $rows_per_column == 0){
        echo '<td valign="top">';
    }
    else{
        echo '<br>';
    }

    echo $value;

    if ($i % $rows_per_column == $rows_per_column - 1 || $i == count($input_fields) - 1){
        echo '</td>';
    }
}

echo "</tr></table>";

您应该在PHP中重新格式化。虽然在SQL中是可能的,但它需要使用动态SQL,因为您不知道列数。@user2570995。如果您需要在应用程序中执行此操作,那么从列表中读取应该很容易实现。是的,我必须在应用程序中执行此操作。