[英]How can I create an HTML table layout with rows from a MySQL query?
在我的“热门标签”页面上,我从这个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>× '.$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整除:
if($count % 4 == 0)
如果你想保留你的css解决方案,你也可以设置div的高度,然后将overflow设置为hidden来处理太长的描述。
是的,我会检查你是否有像斯科特所说的那样连续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>";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.