2014-03-07 43 views
0

我在我的網站上顯示一個成員目錄的頁面。我希望成員在進入下一行之前每行列出3個。我擁有的代碼在第一行中是這樣做的 - 但在第二行中,它全部在一行上,並且不會延續。PHP成員頁面執行到新行

的輪廓顯示出來是這樣的:

uuu 

uuuuuuuuuuuuuuuuuuuuuuuuuuu 

當他們應該這樣做:

uuu 

uuu 

uuu 

uuu 

這是我的代碼如下所示:

<table> 
    <tr> 
    <td colspan="4"><h1>Member Directory</h1></td></tr> 
    <tr> 
    <td> 
     <?php 
      while($row = mysql_fetch_array($result)) { 

      if (empty($row['profile']) === false){ 
       echo '<img src="', $row['profile'], ' "width="125">'; 
      } else { 
       echo '<img src="../../images/template/avatar.png">'; 
      } 


      echo '</td><td>'; 

      echo '<a href="' . $row['username'] . '">' . ucfirst($row['username']) . '</a><br />'; 
      echo "Location: " . $row['location'] . "<br />"; 


      echo '</td><td>'; 
      if ($i++ == 2) echo '</td></tr><tr><td>'; 
      } 
     ?> 
    </td> 
    </tr> 
</table> 

任何幫助將不勝感激,謝謝!

+0

使用'​​...'裏面while循環。 – krishna

+0

在$ 2變成'2'後,你永遠不會重置'$ i'。順便說一句,如果你有4個條目會發生什麼? –

+0

'$ count%3 == 0'? – Prix

回答

0

使用

if (++$i % 3 == 0) echo '</td></tr><tr><td>'; 

說明:

所有++$i第一增量$i首先,然後使用它無論是下一個,這使得更多的可讀的代碼。

其次,%modulus,這意味着它排序從$i減去3,直到它不再可能。例如。 9 % 3 == 011 % 3 == 2等等。這意味着我們知道我們已經打印了3行,只要$i % 3等於0

0

試試這個

<table> 
     <tr> 
      <td colspan="4"><h1>Member Directory</h1></td> 
     </tr> 



     <?php 
     $count=0; 
     while($row = mysql_fetch_array($result)) 
     { 
      $count+=1; 
      if($count%3==1) 
      { 
       echo '<tr>';   
      }   
       echo '<td>'; 
          if (empty($row['profile']) === false){ 
           echo '<img src="', $row['profile'], ' "width="125">'; 
          } else { 
           echo '<img src="../../images/template/avatar.png">'; 
          } 
       echo '</td>'; 

       echo '<td>'; 
       echo '<a href="' . $row['username'] . '">' . ucfirst($row['username']) . '</a><br />'; 
       echo "Location: " . $row['location'] . "<br />"; 
       echo '</td>'; 


      if($count%3==0) 
      { 
       echo '</tr>';  
      }  

     } 
     if($count%3!=0) 
     { 
       echo '</tr>';  
     } 
    ?> 
</table> 
0

您沒有重置的$i價值,所以它不斷增加;另一個問題是,如果你只有七個項目,最後一行應該有四個空單元格。所以循環條件需要與行完成狀態來增強:

$i = 0; 
while (($row = mysql_fetch_array($result)) !== false || $i != 0) { 
    if ($i == 0) { 
     echo '<tr>'; // start of new row 
    } 

    if ($row !== false) { 
     echo '<td>'; 
     if (empty($row['profile'])) { 
      echo '<img src="', $row['profile'], ' "width="125">'; 
     } else { 
      echo '<img src="../../images/template/avatar.png">'; 
     } 
     echo '</td><td>'; 
     echo '<a href="' . $row['username'] . '">' . ucfirst($row['username']) . '</a><br />'; 
     echo "Location: " . $row['location']; 
     echo '</td>'; 
    } else { 
     echo '<td></td><td></td>'; // no more data 
    } 

    $i = ($i + 1) % 3; // advance 

    if ($i == 0) { 
     echo '</tr>'; // end of the row 
    } 
}