Arhar Опубликовано 6 Февраля 2007 Жалоба Поделиться Опубликовано 6 Февраля 2007 хотелось бы в мемберлисте сделать так, чтобы при сортировке по группам (показать только пользователей группы, допустим, новички), показывались пользователи, у которых эта группа присутствует в поле mgroup_others как правильно построить запрос? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 12 Января 2009 Автор Жалоба Поделиться Опубликовано 12 Января 2009 писалось давно, возможно улучшение, но то что есть:2.1.х./sources/action_public/memberlist.phpвесь получившийся код, начиная где-то с 251 линии //----------------------------------------- // Member Groups... //----------------------------------------- if ($this->filter != 'ALL') { if ( ! preg_match( "/(^|,)".$this->filter."(,|$)/", $group_string ) ) { $query[] = "m.mgroup IN($group_string)"; } else { $query[] = "m.mgroup='".$this->filter."' "; if ( $this->ipsclass->member['g_access_cp'] )//видят только админы. можно сделать любую логику { $this->output = $this->ipsclass->compiled_templates['skin_mlist']->mlist_start(); $this->output .= $this->ipsclass->compiled_templates['skin_mlist']->mlist_page_header_other(); //шаблон новый, фактически копированный mlist_page_header, но без лишних элементов типа страниц $this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'members', ) ); $this->ipsclass->DB->simple_exec(); while( $r = $this->ipsclass->DB->fetch_row() ) { if ( strstr( $r['mgroup_others'] , "," ) ) { foreach( explode( ",", $r['mgroup_others'] ) as $group ) { if ($this->filter == $group) { $member = $r; $member = $this->topic->parse_member( $member ); $photo_vars = $this->ipsclass->cache['group_cache'][$member['mgroup']]['g_photo_max_vars']; $photo_dims = array( 'pwidth' => 180, 'pheight' => 180 ); if( strpos( $photo_vars, ":" ) ) { $tmp = array(); $tmp = explode( ":", $photo_vars ); $photo_dims['pwidth'] = $tmp[1]+30; $photo_dims['pheight'] = $tmp[2]+30; unset( $tmp, $photo_vars ); } $member['joined'] = $this->ipsclass->get_date( $member['joined'], 'JOINED' ); $member['group'] = $this->mem_groups[ $member['mgroup'] ]['TITLE']; if ($member['photo_type'] and $member['photo_location']) { $member['camera'] = "<a href=\"java script:PopUp('{$this->ipsclass->base_url}act=Profile&CODE=showphoto&MID={$member['id']}','Photo','{$photo_dims['pwidth']}','{$photo_dims['pheight']}','0','1','1','1')\"><{CAMERA}></a>"; } $member['posts'] = $this->ipsclass->do_number_format($member['posts']); //----------------------------------------- // Bug fix... name-- breaks formatting // xhmlt invalid.. //----------------------------------------- $member['members_display_name'] = str_replace( '--', '& #45;& #45;', $member['members_display_name'] );//& # - пробел убрать $this->output .= $this->ipsclass->compiled_templates['skin_mlist']->mlist_show_row($member); } } } } $this->output .= $this->ipsclass->compiled_templates['skin_mlist']->mlist_page_end_other();//аналогично } } } Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 13 Января 2009 Жалоба Поделиться Опубликовано 13 Января 2009 ну например так: SELECT m.id, m.name FROM ibf_members m where m.mgroup = xx union SELECT mm.id, mm.name FROM ibf_members m, ibf_members mm WHERE m.mgroup=xx and m.mgroup_others LIKE CONCAT('%,',mm.mgroup,',%') Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.