Оптимизировать помогите

SocMaster

Профессор
Регистрация
26 Июл 2011
Сообщения
211
Реакции
49
Есть код выборки из базы
вот функции
Код:
function tenthanhven($id){
    $query = DB::query("select username from ".DB::table('common_member')." where uid = $id");
    $result = DB::fetch($query);
    return $result['username'];
}
function iconthanhven($id){
    $query = DB::query("select groupid from ".DB::table('common_member')." where uid = $id");
    $result = DB::fetch($query);
    return $result['groupid'];
}
Тут использую функции
Код:
class plugin_online_24h_forum {
    function index_middle() {
        global $_G,$online_24h;
        $day_time = time()-date('H',time())*60*60;       
        $queryshow = DB::query("select * from ".DB::table('common_member_status')." where lastvisit > $day_time order by lastvisit DESC ");
        while($resultshow = DB::fetch($queryshow)){
        $showcount ++;
        $resultshow['username'] = tenthanhven($resultshow['uid']);
        $resultshow[lastvisit] = dgmdate($resultshow['lastvisit']);
                    $xxx = iconthanhven($resultshow['uid']);               
                    $resultshow['icon'] = isset($_G['cache']['onlinelist']["$xxx"]) ? $_G['cache']['onlinelist']["$xxx"] : $_G['cache']['onlinelist'][0];
               
        $receiveshow[] = $resultshow;
        }
        include template('online_24h:online_24h');
        return $return;
    }
}
Думаю что 2 функции это много для данного кода(
помогите оптимизировать наверное в один sql запрос
 
PHP:
class plugin_online_24h_forum {
   function index_middle() {
     global $_G,$online_24h;
     $showcount = 0;
     $day_time = time()-date('H',time())*60*60;
     $queryshow = DB::query("select cms.*, cm.username, cm.groupid
                 from ".DB::table('common_member_status')." AS cms
                 # возможно просто join, от логики связывания зависит
                 LEFT JOIN ".DB::table('common_member')." AS cm ON cm.uid = cms.uid
         where lastvisit > $day_time order by lastvisit DESC ");
     while($resultshow = DB::fetch($queryshow)){
       $showcount++;
       $resultshow['lastvisit'] = dgmdate($resultshow['lastvisit']);
       $xxx = $resultshow['groupid'];
       unset( $resultshow['groupid'] );
       $resultshow['icon'] = isset($_G['cache']['onlinelist']["$xxx"]) ? $_G['cache']['onlinelist']["$xxx"] : $_G['cache']['onlinelist'][0];

       $receiveshow[] = $resultshow;
     }
     include template('online_24h:online_24h');
     return $return;
   }
}
вообще код хреновый.. глобалы, $return в теле plugin_online_24h_forum::index_middle() не определен, переменная в sql запросе не контролируется... не гоже так..
 
Последнее редактирование:
Назад
Сверху