2016-05-06 5 views
2

カスタムコンポーネントがインストールされているJoomlaサイトがあります。そのコンポーネントでは、Joomlaのユーザー名をhtmlテーブルに出力します。チェックボックスがあり、ユーザーを名前で選択することができます。php echo出力を注文する

これはうまくいきましたが、ユーザー名を注文したいと思います。 Ex。そこには、登録ID(と思う)が発注されているデフォルトでは

1-Bill 
2-Joe 
3-Katie 

:など、

1-Joe 
2-Katie 
3-Bill 

そして私は、私が表示される順序を指定したい:私は3、登録ユーザーがいます。これを行う正しい方法は何ですか?そしてこれを行う方法?指定されているよう

$query->join('LEFT'," #__user_usergroup_map AS ugm ON u.id=ugm.user_id 
        order by FIELD(u.name, 'Bill', 'Joe', 'Katie')"); 

は、カスタムオーダーを達成するためにあなたのコードに上記の変更を行います。事前にあなたの助け:)

+0

あなたはmysqlの選択コードを提供できますか? – jakob

+0

ここであなたの値を適切にエスケープすることを忘れないでください(https://docs.joomla.org/Secure_coding_guidelines#Constructing_SQL_queries)。 – tadman

+0

どういう意味ですか?これらのクエリにエスケープを挿入しますか? –

答えて

1

注文のMySQLにFIELD機能を使用して、結果を得るために

public function getUsersById($id = NULL, $select = NULL) 
{ 
    $db = JFactory::getDbo(); 
    $query = $db->getQuery(true); 
    $query->select($select); 
    $query->from('#__users AS u'); 
    $query->join('LEFT',' #__user_usergroup_map AS ugm ON u.id=ugm.user_id'); 
    $query->where('ugm.group_id!="8"'); 
    $query->where('u.id="'.$id.'"'); 
    $db->setQuery($query); 
    $row = $db->loadObjectList(); 
    return $row; 
} 

感謝あなたの質問で。

あなたは、より複雑な順序の指定がある場合、あなたはまた、そのような中などCASE expressionを利用することがあります。

ORDER BY (
      CASE name 
      WHEN 'Bill' THEN 0 
      WHEN 'Joe' THEN 1 
      WHEN 'Katie' THEN 2 
      END 
     ) 
+0

私はユーザー名で注文したくありません、私は混在注文(私が指定した注文)をします –

+0

登録日付のような列で注文したいのですか? –

+0

あなたの質問を例で編集してください。 – Spade

1

下記を参照してください。ご注文の際に適切な情報を$query->order行に追加することをお勧めします。

public function getUsersById($id = NULL, $select = NULL) 
    { 
     $db = JFactory::getDbo(); 
     $query = $db->getQuery(true); 
     $query->select($select); 
     $query->from('#__users AS u'); 
     $query->join('LEFT',' #__user_usergroup_map AS ugm ON u.id=ugm.user_id'); 
     $query->where('ugm.group_id!="8"'); 
     $query->where('u.id="'.$id.'"'); 
     $query->order('**column you want to order by** **ASC/DESC**'); 
     $db->setQuery($query); 
     $row = $db->loadObjectList(); 
     return $row; 
    } 
+0

あなたの答えは私の別の質問を解決:) –

関連する問題