Home > Article > Backend Development > The eighth day of php practice_PHP tutorial
今天是学习做后台页面布局,用得是bootcss。那么效果展示一下。
布局的代码
[html]
Learn javascript functions from middle school
str.substr(0,20) means taking 20 characters starting from 0 characters
Math.random() takes a random number
switch statement
This background is ajax. I have been writing pagination for a long time. Okay, let’s get straight to the code.
[javascript] // JavaScript Document
$('body').off('.data-api');
$(document).ready(function(e) {
$("#menu a").click(function() {
switch ($(this).text()) {
case '所有留言':
admin_content(1);
break;
case '基本设置':
$("#main #mainData").load('admin_config.html?r='+Math.random());
break;
default:
break;
}
});
$("#start").click();
});
/**
*留言管理
*/
function admin_content(page) {
$.ajax({
url: 'http://localhost/l/admin.php?m=admin&a=content&page=' + page + '&rand=' + Math.random(),
type: 'get',
dataType: 'json',
data: {},
complete: function(xhr, textStatus) {
//called when complete
},
success: function(json, textStatus, xhr) {
if (json['state'] == 'ok') {
var page_start = json['start'];//分页开始
var page_end = json['end'];//分页结束
var page_page = json['page'];//分页当前页面
var data = json['data'];//分页数据
/**
* 生成 表格内容
*/
var table_html = '
操作 | 用户名 | 留言内容 | 发表时间 |
---|---|---|---|
删除 | ' + data[i].userName + ' | ' + data[i].content + ' |
' + getLocalTime(data[i].time) + ' |
// JavaScript Document
$('body').off('.data-api');
$(document).ready(function(e) {
$("#menu a").click(function() {
switch ($(this).text()) {
case '所有留言':
admin_content(1);
break;
case '基本设置':
$("#main #mainData").load('admin_config.html?r='+Math.random());
break;
default:
break;
}
});
$("#start").click();
});
/**
*留言管理
*/
function admin_content(page) {
$.ajax({
url: 'http://localhost/l/admin.php?m=admin&a=content&page=' + page + '&rand=' + Math.random(),
type: 'get',
dataType: 'json',
data: {},
complete: function(xhr, textStatus) {
//called when complete
},
success: function(json, textStatus, xhr) {
if (json['state'] == 'ok') {
var page_start = json['start'];//分页开始
var page_end = json['end'];//分页结束
var page_page = json['page'];//分页当前页面
var data = json['data'];//分页数据
/**
* 生成 表格内容
*/
var table_html = '
操作 | 用户名 | 留言内容 | 发表时间 |
---|---|---|---|
删除 | ' + data[i].userName + ' | ' + data[i].content + ' |
' + getLocalTime(data[i].time) + ' |
/**
*生成分页
*/
var page_html = '
}
if (page_end !== 0) {
if (page_page == page_end) {
page_html = page_html + '
}
page_html = page_html + '
var mainData = $("#main #mainData");
mainData.html(table_html);
mainData.append(page_html);
admin_content_page(page_page,page_end); //挂接分页点击事件
}
//alert(json.data);
},
error: function(xhr, textStatus, errorThrown) {
//called when there is an error
}
});
}
/**
* On-hook paging event
* Parameter page_page current page
* Parameter page_end Number of pages
*/
function admin_content_page(page_page,page_end) {
$("#mainPage a").click(function() {
var charStr = $(this).text();
var num = charStr;
if (charStr == "»") {
num = parseInt(page_page) + 1;
if (page_end
return;
}
} else if (charStr == "«") {
num = parseInt(page_page) - 1;
if (num
return;
}
}
admin_content(num);
});
}
function admin_content_del (id) {
alert(id);
}
function getLocalTime(nS) {
return new Date(parseInt(nS) * 1000).toLocaleString().replace(/:d{1,2}$/, ' ');
}这是分页请求的服务端代码
[php] public function content()
{
//引入分页类
include "page.class.php";
//得到data表的数据数量
$rows = $this->db->count('select * from data');
//创建分页对象
$page = new Page($rows, 5, "");
$list=$this->db
->order('id DESC')
->table('data')
->limit($page->getLimit())
->select();
/*
echo "
";<br> var_dump($list);<br> echo "";
public function content()
{
//Introduce paging class
Include "page.class.php";
//Get the number of data in the data table
$rows = $this->db->count('select * from data');
//Create paging object
$page = new Page($rows, 5, "");
$list=$this->db
->order('id DESC')
->table('data')
->limit($page->getLimit())
->select();
/*
echo "
";<br> var_dump($list);<br> echo "";
Attach the code page.class.php
[php]
/**
File: page.class.php
Perfect paging type Page
@Qq496928838
*/
Class Page {
private $total;
private $listRows;
Private $ Limit; // SQL statement uses limit clauses to limit the number of records
private $uri; //Automatically obtain the request address of the url
private $pageNum;
private $page;
private $config = array(
'head' => "record",
'prev' => "Previous page",
'next' => "Next page",
'first'=> "Home",
'last' => "Last page"
);
Private $ listnum = 10; // The number of default layout lists
/**
Construction method, you can set the properties of the paging class
@param int $total
’ ’ s ’ s ’ s ’ t ’ t ’ t ’ to ’ t ’ t ’ to ’ t ’ ’ s to ’ ’ s ’ s ’ t ‐ ‐ ‐ ‐
@Param Mixed $ Query can choose parameters to the target page, which can be an array or query string format
@param bool $ord Optional, the default value is true, the page will be displayed from the first page, false will be the last page
*/
public function __construct($total, $listRows=25, $query="", $ord=true){
$this->total = $total;
$this->listRows = $listRows;
$this->uri = $this->getUri($query);
$this->pageNum = ceil($this->total / $this->listRows);
/*以下判断用来设置当前面*/
if(!empty($_GET["page"])) {
$page = $_GET["page"];
}else{
if($ord)
$page = 1;
else
$page = $this->pageNum;
}
if($total > 0) {
if(preg_match('/D/', $page) ){
$this->page = 1;
}else{
$this->page = $page;
}
}else{
$this->page = 0;
}
$this->limit = "LIMIT ".$this->getLimit();
}
/**
For the information for setting the paging, you can perform coherent operations
@param string $param is the subscript of the member attribute array config
@param string $value is used to set the element value corresponding to the config subscript
@Return Object Return to this object itself $ this, used to operate
*/
function set($param, $value){
if(array_key_exists($param, $this->config)){
$this->config[$param] = $value;
}
return $this;
}
/* 不是直接去调用,通过该方法,可以使用在对象外部直接获取私有成员属性limit和page的值 */
function __get($args){
if($args == "limit" || $args == "page")
return $this->$args;
else
return null;
}
/**
按指定的格式输出分页
@param int 0-7的数字分别作为参数,用于自定义输出分页结构和调整结构的顺序,默认输出全部结构
@return string 分页信息内容
*/
function fpage(){
$arr = func_get_args();
$html[0] = " 共 {$this->total} {$this->config["head"]} ";
$html[1] = " 本页 ".$this->disnum()." 条 ";
$html[2] = " 本页从 {$this->start()}-{$this->end()} 条 ";
$html[3] = " {$this->page}/{$this->pageNum}页 ";
$html[4] = $this->firstprev();
$html[5] = $this->pageList();
$html[6] = $this->nextlast();
$html[7] = $this->goPage();
$fpage = '
/**
file: page.class.php
Perfect paging type Page
@微 Cool QQ496928838
*/
class Page {
private $total; //Total number of records in the data table
private $listRows; //Display number of rows per page
private $limit; //SQL statement uses limit clause to limit the number of records obtained
private $uri; //Automatically obtain the request address of the url
private $pageNum; //Total number of pages
private $page; //Current page
private $config = array(
'head' => "record",
'prev' => "Previous page",
'next' => "Next page",
'first'=> "Home",
'last' => "Last page"
); // Display content in paging information, you can set it yourself through the set() method
private $listNum = 10; //The number of items displayed in the default paging list
/**
Constructor method, you can set the attributes of the paging class
@param int $total Calculate the total number of paging records
@param int $listRows Optional, set the number of records to be displayed on each page, the default is 25
@param mixed $query Optional, in order to pass parameters to the target page, it can be an array or a query string format
@param bool $ord Optional, the default value is true, the page will be displayed from the first page, false will be the last page
*/
public function __construct($total, $listRows=25, $query="", $ord=true){
$this->total = $total;
$this->listRows = $listRows;
$this->uri = $this->getUri($query);
$this->pageNum = ceil($this->total / $this->listRows);
/*The following judgments are used to set the current state*/
if(!empty($_GET["page"])) {
$page = $_GET["page"];
}else{
If($ord)
$page = 1;
else
$page = $this->pageNum;
}
if($total > 0) {
If(preg_match('/D/', $page) ){
$this->page = 1;
}else{
$this->page = $page;
}
}else{
$this->page = 0;
}
$this->limit = "LIMIT ".$this->getLimit();
}
/**
用于设置显示分页的信息,可以进行连贯操作
@param string $param 是成员属性数组config的下标
@param string $value 用于设置config下标对应的元素值
@return object 返回本对象自己$this, 用于连惯操作
*/
function set($param, $value){
if(array_key_exists($param, $this->config)){
$this->config[$param] = $value;
}
return $this;
}
/* 不是直接去调用,通过该方法,可以使用在对象外部直接获取私有成员属性limit和page的值 */
function __get($args){
if($args == "limit" || $args == "page")
return $this->$args;
else
return null;
}
/**
按指定的格式输出分页
@param int 0-7的数字分别作为参数,用于自定义输出分页结构和调整结构的顺序,默认输出全部结构
@return string 分页信息内容
*/
function fpage(){
$arr = func_get_args();
$html[0] = " 共 {$this->total} {$this->config["head"]} ";
$html[1] = " 本页 ".$this->disnum()." 条 ";
$html[2] = " 本页从 {$this->start()}-{$this->end()} 条 ";
$html[3] = " {$this->page}/{$this->pageNum}页 ";
$html[4] = $this->firstprev();
$html[5] = $this->pageList();
$html[6] = $this->nextlast();
$html[7] = $this->goPage();
$fpage = '
//Current page
function getPage(){
Return $this->page;
}
//Start of pagination
function getStart(){
$num1=$this->page-4;
return $num1>0?$num1:1;
}
//End of paging
function getEnd(){
$num1=$this->pageNum;
$num2=$this->page+5;
return $num1 }
/* Private method used inside the object to automatically obtain the current URL visited */
private function getUri($query){
$request_uri = $_SERVER["REQUEST_URI"];
$url = strstr($request_uri,'?') ? $request_uri : $request_uri.'?';
If(is_array($query))
$url .= http_build_query($query);
else if($query != "")
$url .= "&".trim($query, "?&");
$arr = parse_url($url);
if(isset($arr["query"])){
Parse_str($arr["query"], $arrs);
unset($arrs["page"]);
$url = $arr["path"].'?'.http_build_query($arrs);
}
if(strstr($url, '?')) {
If(substr($url, -1)!='?')
$url = $url.'&';
}else{
$url = $url.'?';
}
Return $url;
}
/* Private method used inside the object to obtain the number of records at the beginning of the current page */
private function start(){
if($this->total == 0)
Return 0;
else
Return ($this->page-1) * $this->listRows+1;
}
/* Private method used inside the object to obtain the number of records at the end of the current page */
private function end(){
Return min($this->page * $this->listRows, $this->total);
}
/* Private method used inside the object to obtain operation information of the previous page and home page */
private function firstprev(){
if($this->page > 1) {
$str = " {$this->config["first"]} ";
$str .= "{$this->config["prev"] } ";
Return $str;
}
}
/* Private method used inside the object to obtain page list information