Подскажите с разбивкой постранично с использованием Smarty

Pavel6

Новичок
Подскажите с разбивкой постранично с использованием Smarty

PHP:
$smarty->register_function("page","page");
function page($param, &$smarty){
$page_row = $param['page_row'];
global $page_row;
$n_page = ceil($param['row']/$param['page_row']);
$page = array();
 while(++$i<=$n_page){
$page[$i]=$i;
 }

return $page;
             }

$min=0;
	// $page_row - переменная из шаблона.
$r = mysql_query("SELECT * FROM tbl_msg LIMIT $min,$page_row");
В шаблоне: {page row=$count page_row=2 assign="str"} , row - это всего объявление, а page_row - это сколько нам надо вывести на странице.

Функция page выдает мне массив. Я хотел бы перенести его в переменную str и вывести его через цикл, но у меня это не срабатывает. Подскажите как мне это сделать?
Так же переменная page_row используется в не функции, т.к. я её использую в sql-запросе,
я пробовал делать её глобальной но не срабатывает.
 

zerkms

TDD infected
Команда форума
получить заранее необходимый объём данных и данные для построения ссылок на страницы и это всё уже передавать в смарти
 

avenger_msoft

Новичок
Можешь еще посмотреть
http://www.phpinsider.com/php/code/SmartyPaginate/
PHP:
    require('Smarty.class.php');
    require('SmartyPaginate.class.php');
    
    $smarty =& new Smarty;
    
    // required connect
    SmartyPaginate::connect();
    // set items per page
    SmartyPaginate::setLimit(25);

    // assign your db results to the template
    $smarty->assign('results', get_db_results());
    // assign {$paginate} var
    SmartyPaginate::assign($smarty);
    // display results
    $smarty->display('index.tpl');

    function get_db_results() {
        // normally you would have an SQL query here,
        // for this example we fabricate a 100 item array
        // (emulating a table with 100 records)
        // and slice out our pagination range
        // (emulating a LIMIT X,Y MySQL clause)
        $_data = range(1,100);
        SmartyPaginate::setTotal(count($_data));
        return array_slice($_data, SmartyPaginate::getCurrentIndex(),
            SmartyPaginate::getLimit());
    }
index.tpl
---------
PHP:
    {* display pagination header *}
    Items {$paginate.first}-{$paginate.last} out of {$paginate.total} displayed.

    {* display results *}    
    {section name=res loop=$results}
        {$results[res]}
    {/section}

    {* display pagination info *}
    {paginate_prev} {paginate_middle} {paginate_next}
OUTPUT
------
Items 1-25 out of 100 displayed.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

prev [1-25][26-50][51-75][76-100] next
 

bepkyt

Новичок
извините но можна сделать smarty вывод постранично по проще?
на основе примера с http://www.phpfaq.ru/paginator
и есть ли смысл использования smarty для такого вывода?
 

Фанат

oncle terrible
Команда форума
постраничный вывод НИЧЕМ не отличается от любой другой страницы.
просто в шаблон добавляется пара элементов.

к примеру - массив с номерами страниц. из этого массива строится навигация в шаблоне.
а в остальном-то страница от "непостраничной" не отличается ничем ведь?
 
Сверху