dimmonz Опубликовано 14 Ноября 2007 Жалоба Поделиться Опубликовано 14 Ноября 2007 в пыт. процессе создания мода твердо застрял на прикручивании постраничного вывода к функции ввиду ограниченности знаний php и ipb в частности -) Ситуация: 1. имеется ipb 1.31 Final c некоей таблицей ibf_pr_log2. имеется некая функция show_pr_log() в некоем файле sources/pr.php, достающая информацию из ibf_pr_log и направляющую ее на шаблон skin/s1/skin_pr.php. Проблема: 1. таблица ibf_pr_log имеет свойство быть большой2. конечный результат, необъятный 10ками 'Page Down'ов грузится минуты Задача: 1. разбить конечный результат на страницы -----------------------------------------------------Функция:function show_pr_log() { global $ibforums, $DB, $std; $this->output .= $this->html->pr_log_header(); $DB->query("SELECT prid,prname,prdata,prrelease FROM ibf_pr_log ORDER by prname, prdata ASC "); while( $pr = $DB->fetch_row() ) { $prid = $pr['prid']; $prname = $pr['prname']; $prdata = $std->get_date( $pr['prdata'], 'SHORT' ); $prrelease = $pr['prrelease']; $this->output .= $this->html->showprlog($prid,$prname,$prdata,$prrelease); } $this->output .= $this->html->pr_log_end(); } в дальнейшем, шаблон skin/s1/skin_pr.php выводит это в виде function pr_log_header() { global $ibforums; return <<<EOF <table><tr><td colspan=4>шапко</td></tr> EOF; } function showprlog($prid,$prname,$prdata,$prrelease) { global $ibforums; return <<<EOF <tr><td>{$prid}</td><td>{$prname}</td><td>{$prrelease}</td><td>{$prdata}</td></tr> EOF; } function pr_log_end() { global $ibforums; return <<<EOF </table> EOF; } -----------------------------------------------------сам постраничный вывод в IPB как я смутно представляю, имеет собой нечто подобное: $DB->query("SELECT COUNT(prid) as total FROM ibf_pr_log"); $max = $DB->fetch_row(); $DB->free_result(); $links = $std->build_pagelinks( array( 'TOTAL_POSS' => $max['total'], 'PER_PAGE' => "30", 'CUR_ST_VAL' => "", 'L_SINGLE' => "30", 'L_MULTI' => $ibforums->lang['multi_pages'], 'BASE_URL' => $ibforums->base_url, ) ); $this->output .= $this->html->Links($links, ""); буду благодарен любому совету и помощи в прикручивании постаничного вывода Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
dimmonz Опубликовано 19 Ноября 2007 Автор Жалоба Поделиться Опубликовано 19 Ноября 2007 допёр cам -) будет работать нечто подобное function show_pr_log() { global $ibforums, $DB, $std; // подготовка разбиения страниц: $perpage = $ibforums->input['perpage']; //задается из скина $start = intval($ibforums->input['st']); $DB->query("SELECT count(*) as cnt FROM ibf_pr_log"); $row = $DB->fetch_row(); $links = $std->build_pagelinks( array( 'TOTAL_POSS' => $row['cnt'], 'PER_PAGE' => $perpage, 'CUR_ST_VAL' => $start, 'L_SINGLE' => "", 'L_MULTI' => $ibforums->lang['multi_pages'], 'BASE_URL' => $ibforums->base_url."act=pr", ) ); // основная выборка: $this->output .= $this->html->log_header(); $DB->query("SELECT prid,prname,prdata,prrelease FROM ibf_pr_log ORDER by prname, prdata ASC LIMIT $start,$perpage"); while( $pr = $DB->fetch_row() ) { $prid = $pr['prid']; $prname = $pr['prname']; $prdata = $std->get_date( $pr['prdata'], 'SHORT' ); $prrelease = $pr['prrelease']; $this->output .= $this->html->showprlog($prid,$prname,$prdata,$prrelease); } $this->output .= $this->html->pr_log_end($links); } в скин-файле достаточно указать в нужном месте '$links' для формирования ссылок постраничной навигации, в данном примере - в 'pr_log_end': function pr_log_end() { global $ibforums; return <<<EOF </table> {$links} EOF; } Возможно, кто-то сочтет инфу полезной -) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.