2017-08-30 13 views
0

データから特定の注文を表示することについて質問があります。私はデータベースから色のテーブルを作成しました。 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個のdivごとにどのように別のシーケンスで表示するのですか?

+0

これをあなたの現在のテーブルで処理するには、あなたの 'ORDER BY'節に真剣に醜い' CASE'式が必要だと思います。この長期的なニーズが本当に必要な場合は、可視光の各色ごとに波長または周波数の列を作成することをお勧めします。そして、これを使って簡単にソートすることができます。多分、16進コードはこれを可能にするでしょう。 –

答えて

2

あなたはORDER BYであるべきではありません。それで注文は挿入の順序に依存しますが、それは私の意見では非常に脆弱です。それぞれが同じ「カラーカテゴリ」で始まると仮定して、カラーコードで注文することもできますが、それはやはり非常に脆弱です。

正規化する必要があります。新しい表、color_categoryを追加して、各色を追加します。次に、外部キーを使用して各行にカラーカテゴリを割り当てます。色カテゴリーもVARCHAR()の列にすることはできますが、長期的には頭痛(色の違う綴りなど)が出る可能性があります。だから新しいテーブルでそれを正規化してください。その後、元のテーブルにJOINを付けて各行の色カテゴリを取得することができます。このような何か:

tables schema

だから、あなたが反復しながら、あなたがORDER BY color_category_idとあなたのコードでできる、という持ち、color_category変化を検出してから新しいDIVを開始するか、あなたがする必要があるものは何でも。

関連する問題