我的网站上有一个显示成员目录的页面。我希望成员在每行列出3,然后才能进入下一行。我拥有的代码,第一行是这样做的 - 但是在第二行,它全部在一行而且没有进行。
个人资料显示如下:
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 :(得分:0)
使用
if (++$i % 3 == 0) echo '</td></tr><tr><td>';
说明:
首先++$i
首先递增$i
,然后在接下来的任何内容中使用它,这样可以获得更易读的代码。
其次,%
是modulus
,这意味着它会从$i
中减去3,直到不再可能为止。例如。 9 % 3 == 0
和11 % 3 == 2
等等。这意味着我们知道,只要$i % 3
等于0
,我们就会打印3行。
答案 1 :(得分: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>
答案 2 :(得分: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
}
}