使用SMARTY進(jìn)行分頁遇到問題的人們,將從這里學(xué)到如何更好的在SMARTY中進(jìn)行分頁....首先必需說明的是:這篇教程是我從別的教程改過來的,所以不能說是完全原創(chuàng),但我把它說明的更加詳細(xì),以及提供了完備的示例..你將很清楚的理解里的每個(gè)變量的作用及其使用方法....希望這篇文字對(duì)對(duì)你產(chǎn)生幫助....如果,下面的文字真的對(duì)你產(chǎn)生了幫助,別忘了"呱唧呱唧"(鼓掌哦)!!! <?php
require_once('include/common.inc.php');//這里是個(gè)接口common.inc.php里面包函了一些常用到的函數(shù)類庫以及SMARTY
include_once('header.php');//調(diào)用頭部信息,SESSION的信息全都保存在這里,這樣做的好處是幾乎所有的頁面都不需要在開頭輸入session_start();
$smarty = new Smarty_Calvin;//調(diào)用這個(gè)對(duì)象
$smarty->caching = false;//不使用緩存
$swe = "SET NAMES gb2312;";//如果是使用MYSQL5的數(shù)據(jù)庫的話,這樣做是非常必要的。要不然極易出現(xiàn)亂碼
mysql_query($swe);
//下面是數(shù)據(jù)庫的關(guān)聯(lián)查找,將得到數(shù)據(jù)庫中的記錄
$sqle = "SELECT calvin.did,calvin.title,calvin.voidbulk,calvin.databulk,
calvin.place,calvin.price,calvin.line,calvin.explan,
calvin.identify,
idcof_extend.identify,idcof_extend.pid,idcof_extend.pid,idcof_extend.start,idcof_extend.end,idcof_extend.taxis
FROM calvin,extend
WHERE calvin.identify = idcof_extend.identify
AND calvin.did = extend.pid
ORDER BY extend.taxis DESC";
$resulte = mysql_query($sqle) or die(mysql_error());
$ie= mysql_num_rows($resulte);//得到結(jié)果集的數(shù)量
//把結(jié)果集存到SMARTY可以用的數(shù)組中
while(($rowe=mysql_fetch_array($resulte)) && $ie > 0)
{
$arraye[] = array("dide"=>$rowe["did"],"titlee"=>$rowe["title"],"voidbulke"=>$rowe['voidbulk'],"databulke"=>$rowe['databulk'],
"placee"=>$rowe['place'],"linee"=>$rowe['line'],"pricee"=>$rowe["price"],"explane"=>cutstr($rowe["explan"],180));//cutstr這個(gè)函數(shù)是自定義的,從COMMON。INC。PHP而來
$ie--;
}
$smarty->assign('arraye',$arraye);//把數(shù)組指向模板
//下面的部分是本教程的重點(diǎn)。
// get_template_vars返回一個(gè)指定的已賦值的模板變量的值
$smartyArr = $smarty->get_template_vars();
//print_R($smartyArr);
//記錄總數(shù),每頁顯示記錄條數(shù),總頁數(shù)
$pager_Total = count($smartyArr);//總記錄數(shù)
//echo $pager_Total;
$pager_Size = 10;//設(shè)定每頁顯示的記錄數(shù)
$pager_Number = ceil($pager_Total/$pager_Size);//得到總頁數(shù),如果有小時(shí)就進(jìn)一步取整
$pager_URL = "dummyhost.php?action=View";
//獲得當(dāng)前頁的頁數(shù),從REQUEST獲得
if(isset($_GET['pager_PageID'])&& !empty($_GET['pager_PageID'])){
$pager_PageID = intval($_GET['pager_PageID']);
}else{
//如果是第一次訪問,則設(shè)定當(dāng)前頁為第一頁
$pager_PageID = 1;
}
//每頁的起,始記錄數(shù)
//如果當(dāng)前頁是第一頁,則記錄是從第0條記錄開始的
if ($pager_PageID == 1 ) {
$pager_StartNum = 0;
//如果當(dāng)前頁不是第一頁,則記錄是從當(dāng)前的頁數(shù)減去1乘以每頁的顯示記錄數(shù)開始的
} else {
$pager_StartNum = ($pager_PageID -1) * $pager_Size;
}
//當(dāng)前頁的結(jié)束記錄數(shù)是起始記錄數(shù)加上每頁的顯示記錄數(shù)
$pager_EndNum = $pager_StartNum + $pager_Size;
//如果當(dāng)前頁是第一頁,且總頁數(shù)大于1
if ($pager_PageID == 1 && $pager_Number>1) {
//第一頁
$pager_Links = "上一頁 | 下一頁";
//否則如果當(dāng)前頁是最后一頁,且總頁數(shù)大于1
} elseif($pager_PageID == $pager_Number && $pager_Number>1) {
//最后一頁
$pager_Links = "上一頁 | 下一頁";
//否則如果當(dāng)前頁不是第一頁,且當(dāng)前頁小于等于最后一頁
} elseif ($pager_PageID > 1 && $pager_PageID <= $pager_Number) {
//中間
$pager_Links = "上一頁 | 下一頁";
//否則
} else {
$pager_Links = "上一頁 | 下一頁";
}
$smarty->assign('search','dummyhost_search.php');
include_once('dummyhost_ad.php');
$smarty->assign('pager_Total',$pager_Total);
$smarty->assign('pager_StartNum',$pager_StartNum);
$smarty->assign('pager_EndNum',$pager_EndNum);
$smarty->assign('pager_Links',$pager_Links);
$smarty->display("dummyhost.tpl");
include_once('footer.php');
?>