PHP 会员列表代码示例。
<?php
class MemberModel
{
public $_table = 'u_member';
public function getInfo()
{
$fields = [
't1.ID',
't1.CreateDate',
'Member',
'Sex',
'Birthday',
'Age',
'Mobile',
'Card',
'CardType',
'AvailablePoint',
't1.Remark',
];
$table = 'u_member AS t1 INNER JOIN u_card AS t2 ON t1.CardID = t2.ID';
return [
'num' => DB::num_row($table, $fields),
'list' => DB::findAll($table, $fields),
];
}
public function num()
{
return [
'num' => DB::num_row($this->_table, ['ID']),
];
}
public function page()
{
$defaultPageSize = 10;
$pageSize = isset($_POST['num']) ? (int) $_POST['num'] : $defaultPageSize;
if (isset($_POST['num'])) {
$_SESSION['num'] = $pageSize;
}
$nums = [
'nums' => isset($_SESSION['num']) ? (int) $_SESSION['num'] : $defaultPageSize,
];
$page = isset($_GET['page']) ? (int) $_GET['page'] : 1;
$rows = DB::num_row($this->_table, ['ID']);
$pages = (int) ceil($rows / $nums['nums']);
if ($page > $pages) {
VIEW::display('template/tpl/test/404.html');
exit;
}
$start = ($page - 1) * $nums['nums'];
$url = '/member_list/';
$fields = [
't1.ID',
'Member',
'Sex',
'Birthday',
'Age',
'Mobile',
'Card',
'CardType',
'AvailablePoint',
't1.Remark',
'StateID',
];
$table = 'u_member AS t1 INNER JOIN u_card AS t2 ON t1.CardID = t2.ID '
. 'ORDER BY CardID LIMIT ' . $start . ',' . $nums['nums'];
return [
'list' => DB::findAll($table, $fields),
'nav' => ['nav' => $this->getPageHtml($page, $pages, $url)],
'nums' => $nums,
];
}
public function getPageHtml($page, $pages, $url)
{
$pageNum = 5;
$page = max(1, min($page, $pages));
$pages = max($pages, $page);
$start = max(1, $page - (int) floor($pageNum / 2));
$end = min($pages, $page + (int) floor($pageNum / 2));
$currentPageNum = $end - $start + 1;
if ($currentPageNum < $pageNum && $start > 1) {
$start = max(1, $start - ($pageNum - $currentPageNum));
$currentPageNum = $end - $start + 1;
}
if ($currentPageNum < $pageNum && $end < $pages) {
$end = min($pages, $end + ($pageNum - $currentPageNum));
}
$html = '<ul class="pagination">';
$html .= $start === 1
? '<li><a class="no" title="第一页">首页</a></li>'
: '<li><a title="第一页" href="' . $url . '1.html">首页</a></li>';
if ($page > 1) {
$html .= '<li><a title="上一页" href="' . $url . ($page - 1) . '.html">«</a></li>';
}
for ($i = $start; $i <= $end; $i++) {
if ($i === $page) {
$html .= '<li><a class="active">' . $i . '</a></li>';
continue;
}
$html .= '<li><a href="' . $url . $i . '.html">' . $i . '</a></li>';
}
if ($page < $end) {
$html .= '<li><a title="下一页" href="' . $url . ($page + 1) . '.html">»</a></li>';
}
$html .= $end === $pages
? '<li><a class="no" title="最后一页">尾页</a></li>'
: '<li><a title="最后一页" href="' . $url . $pages . '.html">尾页</a></li>';
return $html . '</ul>';
}
public function memberSearch()
{
$_SESSION['date_start'] = empty($_POST['datemax']) ? '1900-01-01' : $_POST['datemax'];
$_SESSION['date_end'] = empty($_POST['datemin']) ? '9999-12-31' : $_POST['datemin'];
$_SESSION['content'] = empty($_POST['content']) ? '%' : $_POST['content'];
$fields = [
't1.ID',
't1.Member',
't1.Sex',
't1.Birthday',
'Mobile',
'stateID',
't1.Remark',
'AvailablePoint',
'Age',
't2.CardType',
't2.Card',
'StateID',
];
$table = 'u_member AS t1 INNER JOIN u_card AS t2 ON t1.CardID = t2.ID';
$where = sprintf(
"t1.Birthday BETWEEN '%s' AND '%s' AND (t1.Member LIKE '%%%s%%' OR t1.Mobile LIKE '%%%s%%' OR t2.Card LIKE '%%%s%%')",
$_SESSION['date_start'],
$_SESSION['date_end'],
$_SESSION['content'],
$_SESSION['content'],
$_SESSION['content']
);
return [
'list' => DB::findAll($table, $fields, $where),
'num' => DB::num_row($table, $fields, $where),
];
}
public function memberView()
{
$id = $_REQUEST['id'];
$fields = [
't1.ID',
't1.CreateDate',
'Member',
'Sex',
'Birthday',
'Age',
'Mobile',
'Card',
'CardType',
'AvailablePoint',
'Account',
'times',
'StartDate',
'EndDate',
't1.Remark',
'State',
'StateID',
'Point',
'IntroducerPoint',
];
$table = 'u_member AS t1 INNER JOIN u_card AS t2 ON t1.CardID = t2.ID';
$where = sprintf("t1.ID = '%s'", $id);
return DB::findOne($table, $fields, $where);
}
}