【问题标题】:Split data (dynamic result) in to 3 columns - php mysql将数据(动态结果)拆分为 3 列 - php mysql
【发布时间】:2016-01-28 06:09:48
【问题描述】:

需要将结果(动态 - mysql)拆分为列(按照 $cols 下面的定义)

注意:如果有人有任何其他格式的解决方案,请告诉我...

$cols=3; // note i can change this to 4,5 ..2 etc..

echo "<table border='0'  align='center' valign='top' >";
do{
        echo "<tr>";
                    for($i=1;$i<=$cols;$i++){    
            $rowsA=data_fetch($sqlquery);
                        if($rowsA){
        echo'<td align="center" valign="top">
                    <table  border="1px" cellspacing="0" cellpadding="0" style="border-collapse:collapse;">
                        <tr align="center" valign="top">';
                                echo '<td class="dateis" align="center" valign="top" width="35px"> <strong>'.$srno.'</strong> </td>';
                                echo '<td class="dateis" align="center" valign="top" width="100px">'.$rowsA['prdname'].'</td>';
                                echo '<td class="dateis" align="center" valign="top" width="50px">'.number_format($rowsA['prdwgh'],3,'.','').'</td> 
                                    </tr>';
                                   $srno++;
                       echo'</tr>
                    </table>
        </td>';
    } else{
          }
      }
    } while($rowsA);
    echo "</table>";

因此从上面我得到下面的显示:

1 Prda 1.4  |  2 prdan  2.3  |  3  prdbc  3.1
4 prdf 0.02 |  5 prdcv  1.0  |  6  prdd   0.9
7 prdc 0.3  |  8 prdbn  2.8  |  9  prdf   0.5

但我需要如下:

1 Prda 1.4     |  4 prdf   0.02    |  7  prdc   0.3 
2 prdan  2.3   |  5 prdcv  1.0     |  8  prdbn  2.8
3 prdbc  3.1   |  6 prdd   0.9     |  9  prdf   0.5

更新:

如果有 10 条记录:

1 Prda 1.4     |  5 prdcv  1.0    |  9  prdf   0.5
2 prdan  2.3   |  6 prdd   0.9    |  10 prdf   2.5
3 prdbc  3.1   |  7 prdc   0.3    |  
4 prdf   0.02  |  8 prdbn  2.8    | 

如果有 11 条记录:

1 Prda 1.4     |  5 prdcv  1.0    |  9  prdf   0.5
2 prdan  2.3   |  6 prdd   0.9    |  10 prdf   2.5
3 prdbc  3.1   |  7 prdc   0.3    |  11 prdfd  2.1
4 prdf   0.02  |  8 prdbn  2.8    | 

谢谢

【问题讨论】:

  • 如果有人有任何不同的解决方案......会这样做......谢谢
  • 任何人请帮帮我....
  • 假设 $cols=4,那么它会显示在哪里?
  • 那么最后会有第四列……
  • @santhy,你能告诉我 $cols=3 的解决方案吗...

标签: php mysql split html-table multiple-columns


【解决方案1】:

cols = 3 的示例。请调整您的数据库名称及其列。希望结果如您所愿。

$NoOfColumns = 3;
$dataArr = $matrixArr = array();

$query = "SELECT * FROM testDb ORDER BY prdname";
$result = mysqli_query($conn, $query) or die("error getting data");
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    array_push($dataArr, $row);
}
$totalCnt = count($dataArr);
$NoOfRows = floor($totalCnt / $NoOfColumns);
if ($havRem = $totalCnt % $NoOfColumns) {
    $NoOfRows++;
}
$matrixArr = array_chunk($dataArr , $NoOfRows);

//echo "<pre>";print_r($dataArr);echo "</pre>";
//echo "<pre>";print_r($matrixArr);echo "</pre>";

echo "<table border=1>";
for ($row = 0; $row < $NoOfRows; $row++) {
    echo "<tr>";
    $srno = $row+1;
    for ($col = 0; $col < $NoOfColumns; $col++) {        
    echo'<td align="center" valign="top">';
            if ($srno<=$totalCnt) {
             echo   '<table  border="1px" cellspacing="0" cellpadding="0" style="border-collapse:collapse;">
                    <tr align="center" valign="top">';
                            echo '<td class="dateis" align="center" valign="top" width="35px"> <strong>'.$srno.'</strong> </td>';
                            echo '<td class="dateis" align="center" valign="top" width="100px">'.$matrixArr[$col][$row]['prdname'].'</td>';
                            echo '<td class="dateis" align="center" valign="top" width="50px">'.$matrixArr[$col][$row]['prdwgh'].'</td> 
                                </tr>';

                   echo'</tr>
                </table>';
            }
    echo '</td>';
    $srno = $srno+$NoOfRows;
}
echo "</tr>";
}
echo "</table>";

【讨论】:

  • 感谢它的工作,但正如您所知,我的数据是动态的,因此如果我有 10 条记录...那么按照您上面的结构,它只显示 9 条记录...隐藏 10 条记录...我也测试了 $NoOfColumns = 4;其工作但相同的 ..10 记录未显示 ...
  • 哦,你的意思是根据数据计数,列数会增加。说 9 然后 3, 10 到 12 然后 4 colm, 13 到 15 然后 5 等等...?
  • 不会根据其变量设置 numberofcol ..但是需要更新行..请查看我的更新问题
猜你喜欢
  • 1970-01-01
  • 2021-06-03
  • 1970-01-01
  • 1970-01-01
  • 2015-01-24
  • 1970-01-01
  • 1970-01-01
  • 2011-12-24
  • 1970-01-01
相关资源
最近更新 更多