Перейти к контенту

Постраничный вывод


Рекомендуемые сообщения

в пыт. процессе создания мода твердо застрял на прикручивании постраничного вывода к функции ввиду ограниченности знаний php и ipb в частности -)

 

Ситуация:

1. имеется ipb 1.31 Final c некоей таблицей ibf_pr_log

2. имеется некая функция show_pr_log() в некоем файле sources/pr.php, достающая информацию из ibf_pr_log и направляющую ее на шаблон skin/s1/skin_pr.php.

 

Проблема:

1. таблица ibf_pr_log имеет свойство быть большой

2. конечный результат, необъятный 10ками 'Page Down'ов грузится минуты :D

 

Задача:

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, "");

 

 

буду благодарен любому совету и помощи в прикручивании постаничного вывода

Ссылка на комментарий
Поделиться на других сайтах

допёр 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;
}

 

Возможно, кто-то сочтет инфу полезной -)

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.