从用于创建“过滤器按钮”的表中获取列表

时间:2018-10-04 15:14:23

标签: php html sql filter

这一定是微不足道的,但需要解释。我无法对Google提出好问题。我不知道是否应该在SQL查询中得到此结果,或者我需要更改包括SQL查询的PHP部分。 (我的知识很小,我正在制作自己的计划程序网站,但是我一直无法创建用于过滤选项的按钮。)

想象一下,我有一个名为“ Records”的表,其中有3列“ ID,Item,Category”。 在类别中,我将所有数据都写成大写,并且类别可以重复。

所以表记录示例如下(在列布局中为:id-item-CATEGORY):

  

1-睡眠-健康
2-吃早餐-食品和饮料
3-喝   咖啡-食品&饮料
4滴眼药水-健康
5电车   work-TRAVEL

我知道如何列出“类别”列中的所有数据,但我想避免重复类别。我需要获取这样的类别列表(“健康与饮食”不重复):

  

健康
食品和饮料
旅行

因此,有了这个列表,我可以比通过php生成html select标签选项。 在php部分中,我会使用类似这样的内容:

$query1=mysqli_query($db,"select * from Records asc”);
while($query2=mysqli_fetch_array($query1)){
echo “<option value=“.$query2[‘category_option’].”>”.$query2[‘category_option’].”</option>”
};


因此结果HTML看起来像这样。

<select>
  <option value="HEALTH">HEALTH</option>
  <option value="FOOD&DRINK">FOOD&DRINK</option>
  <option value="TRAVEL">TRAVEL</option>
</select>

能给我指出正确的方向吗?或提及一些最佳实践来实现这种功能。感谢所有尝试提供帮助的人。

1 个答案:

答案 0 :(得分:1)

在您的SQL中使用DISTINCT

SELECT DISTINCT Category FROM Records

不会返回任何重复项。

在此链接https://www.w3schools.com/Sql/sql_distinct.asp上玩耍

请注意,现在我们只在这里获取一列,而不是*

您也可以使用GROUP BY

SELECT * FROM Records GROUP BY Category

https://www.w3schools.com/Sql/sql_groupby.asp