目前我的HTML代码中的类别如下:
<ul>
<li>Category 1: ($Count)</li>
<li>Category 2: ($Count)</li>
<li>Category 3: ($Count)</li>
</ul>
我想列出每个类别包含的元素数量。我可以使用以下SQL语法获取类别的计数:
SELECT COUNT(element) FROM category WHERE cid = 1
但是,我不知道如何将其绑定到HTML代码中的每个类别。
我只能想到另一种实现方法:通过将类别名称存储在数据库中使其成为动态类别,然后选择所有具有计数的类别。
答案 0 :(得分:2)
我建议只在数据库中存储类别列表。您可以选择计数以及其他字段,它更优雅。差不多:
categories
+----+----------------------+
| id | name |
+----+----------------------+
| 1 | Some category
...
和
elements
+-----+-----------+-------------+
| cid | blah | blah2 |
+-----+-----------+-------------+
| 1 | something | whatever |
...
和查询:
SELECT *, COUNT(SELECT * FROM elements WHERE elements.cid = categories.id) AS count
FROM categories
并显示:
<ul>
<?php foreach($results as $category) { // Or however you get it ?>
<li><?php echo htmlentities($category['name']); ?>: <?php echo $category['count']; ?></li>
<?php } ?>
</ul>
答案 1 :(得分:2)
我认为如果可以在数据库中存储类别名称会更好。如果将类别名称存储在数据库中,如
categories
+----+----------------------+
cid | cat_name |
+----+----------------------+
| 1 | Category 1
| 2 | Category 2
| 3 | Category 3
...
然后您可以查询数据库,如:
$query = "SELECT count(*) as count,`cat_name` FROM categories GROUP BY cid";
<ul>
<?php foreach($categories as $category) { // Or however you get it ?>
<li><?php echo htmlentities($category['cat_name']); ?>: (<?php echo $category['count']; ?>)</li>
<?php } ?>
</ul>
如果你没有在db中存储类别名称,另一种可能性是如果你的cid 1和类别1相同,那么你可以这样做。
$query = "SELECT count(*) as count,`cid` FROM category GROUP BY cid ORDER BY cid ASC"
如果$ result按顺序排列在数组中,那么你可以
<ul>
<li>Category 1: ($result[0][count])</li>
<li>Category 2: ($result[1][count])</li>
<li>Category 3: ($result[2][count])</li>
</ul>
但我建议你先使用它。
希望这会有所帮助:)
答案 2 :(得分:0)
查看GROUP BY运算符
SELECT COUNT(element) FROM category GROUP BY cid