1

在我的“流行标签”页面上,我使用这个 PHP 和 SQL 从数据库中获取所有标签,从最流行到最不流行:

$sql = "SELECT t.tagid, t.name, t.desc, COUNT(qt.id) AS total
        FROM tags t
        LEFT JOIN question_tags qt ON t.tagid=qt.tag_id
        GROUP BY t.tagid, t.name
        ORDER BY total DESC";

$result = mysql_query($sql) or die(mysql_error());

while($row=mysql_fetch_assoc($result)) {
  echo '<div class="tag-list-box" id="tag-'.$row['tagid'].'">
        <a href="/tags/'.strtolower($row['name']).'" class="tag">
        <span class="label label-inverse label-tag">'.strtolower($row['name']).'</span>
        </a> <strong>&times; '.$row['total'].'</strong><br />
        <p>'.($row['desc']!==null ? $row['desc'] : '<em>This tag has no description.</em>').'</p>
        </div>';
}

我现在没有将它放在 HTML 表格中,因为我认为我可以使用 div 和 CSS 以更“现代的方式”来完成它,但正如您在下面的屏幕截图中看到的那样,当标签有描述因为盒子的高度比其他的大:

在此处输入图像描述

我的盒子 CSS 是:

.tag-list-box {
  width: 20%;
  padding: 5px;
  background-color: #f0f0f0;
  border: 1px solid #ccc;
  float: left;
  margin-right: 2%;
  margin-bottom: 10px;
}

我想我应该把它放在一个应该解决问题的表中,但我的问题是我如何让查询中的每 4 行都有自己的<tr>,这样每个表行中可以有 4 行?

我想不通——我试着做一个计数并在while循环中增加它,但我就是不知道从那里去哪里。

4

2 回答 2

2

使用模运算符查看您的计数是否可以被 4 整除:

if($count % 4 == 0) 

如果您想保留您的 css 解决方案,您还可以为您的 div 设置一个高度,然后将溢出设置为隐藏以处理太长的描述。

于 2012-06-15T18:17:03.727 回答
1

是的,我会检查你是否像斯科特所说的那样连续有 4 个。您可以使用 div。在每 4 之后添加一个清除左浮动的 div。我不会使用设定的高度,因为您永远不知道物品会变得多高。我会做的例子:

$count = 0;
while($row=mysql_fetch_assoc($result)) {
  echo '...'; //YOUR CURRENT ECHO STATEMENT HERE
  $count++;
  if($count % 4 == 0) echo "<div style='clear: left;'></div>";
}
于 2012-06-15T18:47:55.473 回答