1

データベースからのデータを表示するテーブルがあります。これらのデータ数はdynamicです。各行に4つ表示したい。ただし、最後の行の問題。最後の行に 1 つの TD がある場合、関数はこの tdcolspanに 4 を与えるので、データを中央に表示できます。

NUMBER OF DATA IS 5

###############################################
#           TABLE HEADER(colspan=4)           #
###############################################
||  TD1   ||  TD2  ||   TD3   ||    TD4     ||
||  TD5   ||  

I NEED THIS 
###############################################
#           TABLE HEADER(colspan=4)           #
###############################################
||  TD1   ||  TD2  ||   TD3   ||    TD4     ||
||                  TD5                     ||  

and if there are 6 TDS to show it like this.

###############################################
#           TABLE HEADER(colspan=4)           #
###############################################
||  TD1   ||  TD2  ||   TD3   ||    TD4     ||
||       TD5       ||          TD6          ||  

私の PHP コード + HTML

<table>
    <tr>
        <th colspan="4">TABLE HEADER</th>
    </tr>
    <tr>
        <? $counter = 0;
                foreach($data as $d)
                {
                    if($counter % 4 == 0)
                    {
                        echo '</tr><tr>';
                    }
                    echo $d['name'];
                    $counter++
                }
        ?>
    </tr>
</table>

前もって感謝します。

4

2 に答える 2

1

ここにあなたが始めるための何かがあります。それはおそらく最もエレガントではありませんが、それは可能です。

<tr>
    <? $counter = 0;
       $lastrow = floor($count($data)/4)*4;
       $numinlastrow = $count($data)%4;
            foreach($data as $d)
            {
                if($counter % 4 == 0)
                {
                    echo '</tr><tr>';
                }
                $colspan = 1;
                if ($counter >= $lastrow) {
                  if ($numinlastrow == 1) $colspan = 4;
                  if ($numinlastrow == 2) $colspan = 2;
                  if ($numinlastrow == 3) ; // ??
                }
                echo "<td colspan='".$colspan."'>";
                //... contents of table cell here
                echo "</td>";
                $counter++
            }
    ?>
</tr>

colspanテーブルセルが3つある場合、テーブル列全体(分数なし)にしかスパンできないため、上記の方法では実際には不可能です。

したがって、代わりに、行全体にまたがるテーブルセル内にテーブルを配置します...

<tr>
    <? $counter = 0;
       $lastrow = floor($count($data)/4)*4;
       $numinlastrow = $count($data)%4;
            foreach($data as $d)
            {
                if($counter % 4 == 0)
                {
                  if ($counter >= $lastrow) {
                    echo '</tr><tr><td colspan="4"><table><tr>';
                  }
                  else echo '</tr><tr>';
                }

                echo "<td>";
                //... contents of table cell here
                echo "</td>";
                $counter++
            }
            if ($numinlastrow != 0) echo '</tr></table></td>'
    ?>
</tr>
于 2012-09-05T09:21:17.863 に答える
0

私はこれを次の方法で (おおよそ) 実行します。

$num_of_rows = mysql_num_rows($result);
for ($i = 0; $i < ($num_of_rows / 4); $i++)
{
   for ($j = 0; $j < 4; $j++)
   {
      $row = mysql_fetch_assoc($result);
      echo $row['name'];
   }
   echo '</tr><tr>';
}
if (mysql_num_rows($result) == 3)
{
   mysql_fetch_assoc($result);
   echo '<td colspan="2">'.$row['name'].'</td>';
   mysql_fetch_assoc($result);
   echo '<td>'.$row['name'].'</td>';
   mysql_fetch_assoc($result);
   echo '<td>'.$row['name'].'</td>';
}
else
{
   while($row = mysql_fetch_assoc($result))
   {
      echo '<td colspan="'.(4 / mysql_num_rows($result)).'">'.$row['name'].'</td>';
   }
}
于 2012-09-05T09:25:24.077 に答える