显示帖子某些命令
问题描述:
我有一个关于显示某些数据订单的问题。我从数据库创建了颜色表。有256行和名称的颜色。数据库行看起来像他的:https://prnt.sc/geyp48,我想显示像这样的屏幕https://prnt.sc/geypbr。显示帖子某些命令
现在所有颜色有14个不同的代码。例如,红色有14种不同的颜色类型。
我想按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-->
我知道我可以这样给它的第14
$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));
但是,如果使用ASC LIMIT 0,14
我应该为所有其他14色代码中创建很多关于它的查询。
我的问题是,我如何以不同的顺序显示每14格。
答
您不应该ORDER BY
ID。这使得顺序取决于插入顺序,这在我看来非常脆弱。您可以通过颜色代码进行订购,假设每个颜色代码都以相同的“颜色类别”开头,但又非常脆弱。
你应该做的是正常化。添加一个新表,color_category
您添加每种颜色。然后通过外键为每行分配一个颜色类别。它也可以是颜色类别的VARCHAR()
列,但从长远来看,这可能会让您头痛(不同的颜色拼写等)。所以请尝试使用新表对其进行标准化。然后你可以JOIN
它到原来的表格来获取每一行的颜色类别。事情是这样的:
所以,当你有,你可以ORDER BY color_category_id
,并在你的代码,而迭代,检测时color_category更改,然后开始一个新的DIV或任何你需要做的。
要用你当前的表处理这个问题,我认为你需要在'ORDER BY'子句中使用一组严重丑陋的'CASE'表达式。如果您真的有这种长期需求,我建议为可见光的每种颜色创建一个波长或频率列。然后,你可以很容易地使用它来排序。也许十六进制代码已经可以做到这一点。 –