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。如果您需要在应用程序中执行此操作,那么从列表中读取应该很容易实现。是的,我必须在应用程序中执行此操作。