If you have studied Asp.net, you must know that it has a very powerful paging function called datalist. This class here simulates part of this function. I dare to use it. "Powerful" is used to define it because as a general page class, this class is truly "universal".
Without further ado, let’s immediately introduce how to use it.
1. First create a new table for testing
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. Make a template file and save it as: test.htm
{dede:page pagesize=15/}
aa
bb
cc
tt
{dede:datalist}
[field:aa/]
[field:bb/]
[field:cc/]
[field:tt function=date("Y-m-d H-i-s","@me")/]
{/dede}
{dede:pagelist listsize=3/}
3. Write the code to call this class
The connection information of database is set in the file 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();
?>
Look at the effect, it’s so simple to create a sub-file, and it completely separates the page and logic
What if I want to add a GET string to pass to the query?
Easy
If the added query string is 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();
?>
Is there anything that can't be solved?
If there is a field with a Boolean value, and I want to output different content according to different situations, it is not difficult to achieve
Dede template engine supports the use of custom functions
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();
?>
You don’t need to do anything in the program, all you need to do is change the template
[field:aa function="GetMyName(@me)"/]
The value returned is the value returned by the function.
This is almost as good as it gets, the only thing is that the links to the paginated list are fixed, but you can improve it.