2012-01-04 9 views
2

アホイすべて!あなたがこの初心者のPHPerに手を貸しても大丈夫ならば、これは短い話です。 :)PHP:外部データを使用してORDER BYを実行しますか?

は、私は、これが保存された「カテゴリー」と呼ばれるデータベースフィールドを持っている:

Fruit, People, Place, Animals, Landscape 

私も各項目の分野におけるこれらのカテゴリ名を持つアイテムを持っているDBで別のテーブルを持っています。今、スクリプト(私は少しそれをフォークしようとしています)を使用します:利用可能なすべてのカテゴリのリストを表示するには

SELECT DISTINCT(type), type FROM the_categories ORDER BY type ASC 

を使用します。十分に簡単ですか?

Welllllll ...私はASCでソートしたくないですが、私が言及した最初のカテゴリーフィールドの項目のリストでソートしたいと思います。それらがどの順序であっても、私は上記の "タイプ"を表示する順序です。

明らかに、私はコンマで爆発をしなければならないでしょう、そして、おそらくそれらに1を何でも与えるでしょう....でも...でも、私は別のフォルダに保存されたデータを使って "orderby" ?

これも可能ですか?笑ありがとう!

+0

カテゴリフィールドが各行で同じテーブルにあると仮定すると、終わりを「ORDER BYカテゴリ」に変更してください – Grexis

答えて

2
... ORDER BY FIELD(type,"Fruit","People","Place","Animals","Landscape") 

http://www.cfdan.com/posts/Handy_MySQL_-_ORDER_BY_FIELD.cfm

+0

'DISTINCT(タイプ)、タイプ'は意味がありません – zerkms

+0

ええ、同意します。残りのコードをコピーして貼り付けました。間違いです。私はそのセクションを削除し、彼の参照のために残りの部分を残します。 –

+0

おっと、そのコードは元の質問から取りました、ごめんなさい – zerkms

0

そして、ちょうどので、今後の見物人はそれを持っている....ここだけのための変数

に入れて爆発するコードクエリの

$query2 = mysql_query("SELECT * FROM categorytable"); 
     while($row = mysql_fetch_array($query2)){ 
      $categories = html_entity_decode($row['categories']); 
      $thelist = explode(',', $categories); 

     foreach($thelist as $order){ 
      if(trim($order) != ''){ 
       $order = trim($order); 
       $order = ", '".$order."'"; 
       $theorder .= $order; 
      } 
     } 

、その後は、あります

SELECT DISTINCT(type), type FROM the_categories ORDER BY FIELD(type" . $theorder .")")