列出每个项目的计数类别

时间:2012-01-29 16:26:38

标签: php mysql

目前我的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代码中的每个类别。

我只能想到另一种实现方法:通过将类别名称存储在数据库中使其成为动态类别,然后选择所有具有计数的类别。

3 个答案:

答案 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