簡體   English   中英

命令 php echo 輸出

[英]Order php echo output

我有一個安裝了自定義組件的 Joomla 站點。 在該組件中,我將 Joomla 用戶名打印到 html 表中。 還有一個復選框,我可以在其中按名稱選擇用戶。

<option value="<?php echo $allUser->id; ?>" <?php echo $selected; ?> ><?php echo $allUser->name; ?></option>
<?php
}
?>
</select>
<?php } ?>

這工作正常,但我想訂購用戶名。 前任。 我有 3 個注冊用戶:

1-Joe
2-Katie
3-Bill

我想指定我顯示的順序,例如:

1-Bill
2-Joe
3-Katie

默認情況下,按注冊 ID 排序(我認為)。 這樣做的正確方法是什么? 以及如何做到這一點?

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;
}

提前感謝您的幫助:)

使用 MySQL 中的FIELD函數對結果進行排序:

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

對您的代碼進行上述更改以實現您的問題中指定的自定義訂單。

如果您有更復雜的訂單規范,您還可以利用CASE 表達式,例如:

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

見下文。 您將需要添加帶有適當的訂購信息的$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;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM