如果你學過asp.net,你一定知道它里面有一個叫datalist之類自帶的分頁功能十分強大,這里的這個類就模擬了一部份這個功能,我敢用“強大”來定義它,是因為作為一個通用的頁類,這個類真正做到了“通用”。
廢話少說,馬上介紹一下是如何使用的。
1、先新建一個用于測試的表
create table `test` (
`aa` int not null auto_increment primary key,
`bb` varchar(50) not null,
`cc` varchar(50) not null,
`tt` int default '0' not null
);
2、制作一個模板文件,保存為:test.htm
{dede:page pagesize=15/}
<table width='100%' border='0' cellpadding='1' cellspacing='1' bgcolor='#cccccc'>
<tr bgcolor='#f8ffee' align='center'>
<td width='10%'>aa</td>
<td width='30%'>bb</td>
<td width='30%'>cc</td>
<td width='30%'>tt</td>
</tr>
{dede:datalist}
<tr bgcolor='#ffffff' align='center'>
<td>[field:aa/]</td>
<td>[field:bb/]</td>
<td>[field:cc/]</td>
<td>[field:tt function='date("y-m-d h-i-s","@me")'/]</td>
</tr>
{/dede}
<tr bgcolor='#f8ffee'>
<td colspan='4'>
{dede:pagelist listsize=3/}
</td>
</tr>
</table>
3、編寫調用這個類的代碼
數據庫的連接信息均在config_base.php這個文件是設定
showtable.php
<?
require("inc_datalist.php");
$dlist = new datalist();
$dlist->init();
$dlist->settemplet("./test.htm");
$dlist->setsource("select * from ttt");
$liststring = $dlist->display();
$dlist->close();
?>
看看效果,做一個分文件就這么簡單,還完全實現了頁面與邏輯分離
假如我要增加一個get字符串傳遞給查詢應該怎么做呢?
easy
假如增加的查詢串為 keyword
<?
require("inc_datalist.php");
if(!isset($keyword)) $keyword="";
$dlist = new datalist();
$dlist->init();
$dlist->setparameter("keyword",$keyword);
$dlist->settemplet("./test.htm");
$dlist->setsource("select * from ttt where bb like '%$keyword%'");
$liststring = $dlist->display();
$dlist->close();
?>
還有什么不能解決嗎?
假如有一個字段是布爾值,我想輸出時按不同情況輸出不同內容,其實不難實現
dede模板引擎支持使用自定義函數
<?
require("inc_datalist.php");
if(!isset($keyword)) $keyword="";
function getmyname($mname)
{
if($mname=="dede") return "my name";
else return $mname;
}
$dlist = new datalist();
$dlist->init();
$dlist->setparameter("keyword",$keyword);
$dlist->settemplet("./test.htm");
$dlist->setsource("select * from ttt where bb like '%$keyword%'");
$liststring = $dlist->display();
$dlist->close();
?>
在程序里不用做什么,需要做的事情是更改一下模板
[field:aa function="getmyname(]
這樣返回的值就是函數返回的值。
這樣幾乎達到盡善盡美的境界,唯一的是分頁列表的鏈接是固定的,不過你可以對它進行改進。
新聞熱點
疑難解答