我有一个关于从数据中显示某些订单的问题。我从数据库中创建了颜色表。有256行和名称颜色。数据库行看起来像他的https://prnt.sc/geyp48,我希望像这个屏幕https://prnt.sc/geypbr一样显示。
现在所有颜色都有14种不同的代码。例如红色有14种不同的颜色类型。
我想以14个顺序显示每一个。
header('Location: /somewhere');
我知道我可以在第14页这样做。
<div class="red">All in 14 different red color code</div>
<div class="blue">All in 14 different blue color code</div>
<div class="gren">All in 14 different green color code</div>
<!--All others will be come here-->
但是,如果我使用$query = mysqli_query($this->db,"SELECT id, colors, color_name FROM colors WHERE id ORDER BY id ASC LIMIT 0,14") or die(mysqli_error($this->db));
,我应该为所有其他14种颜色代码创建许多关于它的查询。
我的问题是,我如何以每14个div的不同顺序显示。
答案 0 :(得分:2)
你不应该ORDER BY
id。这使得顺序取决于插入顺序,这在我看来非常脆弱。您可以按颜色代码订购,假设每个颜色代码都以相同的颜色类别&#34;开头,但这又是非常脆弱的。
你应该做的是规范化。添加新表color_category
,添加每种颜色。然后通过外键为每一行分配一个颜色类别。它也可以是带有颜色类别的VARCHAR()
列,但从长远来看,这可能会让您感到头疼(不同的颜色拼写等)。因此,尝试使用新表将其标准化。然后你可以JOIN
到原始表格来获取每一行的颜色类别。像这样:
所以,当你拥有它时,你可以ORDER BY color_category_id
并在你的代码中,在迭代时,检测color_category何时发生变化,然后开始一个新的DIV或你需要做的任何事情。