2014-03-07 41 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 
    } 
}