2012-09-05 2 views
1

테이블에 데이터베이스의 데이터가 표시됩니다. 이 데이터 수는 dynamic입니다. 나는 각 줄에 4를 보여주고 싶다. 그러나 마지막 행에 문제가 있습니다. 마지막 행에 1 TD가 있으면이 td에 colspan이 4로 표시되어 중간에 데이터를 표시 할 수 있습니다. 사전에동적 colspan

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> 

감사의.

+0

그리고 표시 할 레코드가 7 개 있다면 어떻게 될까요 ?? –

+0

@AshwiniAgarwal 3 TDS 각 폭의 너비 = 33 % – Othman

+0

마지막 코멘트가 주어지면 내 두 번째 예 (마지막 열에 새 표를 넣는 곳 - 가장 쉬운 방법입니다) – ronalchn

답변

1

다음은 시작하기위한 것입니다. 그것은 아마도 가장 우아한 것은 아니지만 그렇게 할 것입니다. 표 3 개 셀이있는 경우에만 colspan 전체 테이블 컬럼 (더 분획)을 걸쳐있을 수 없기 때문

<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> 

, 이는 전술 한 방법에 실제로 불가능하다.

그래서 대신에, ... 전체 행에 걸쳐 테이블 셀 내부에

<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> 
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>'; 
    } 
} 
관련 문제