En el desarrollo general de PHP, cuando se mezclan código php y código html, es relativamente sencillo manejar la paginación y también se puede construir en forma de función. En un desarrollo reciente, se utilizó la estructura de Pear::DB + Smarty, por lo que consideré paginar la plantilla. Dado que la página no se puede manipular directamente, consideré generar una cadena de paginación.
Debido a que es una estructura de tres niveles, en forma de biblioteca de clases-->llamada PHP-->plantilla, todo el procesamiento de datos se realiza en la biblioteca de clases, por lo que el control de paginación se realiza en la llamada PHP y la plantilla analiza de manera compleja el resultado de la convocatoria. Miremos directamente el código de paginación en nuestra llamada PHP:
-------------------------------------- -----------------------------------------
<?php
/**
* Archivo: Tipo.php
* Función: Mostrar libros en categorías
* Autor: heiyeluren
**/
//Contiene archivos públicos, incluidas bibliotecas de clases, etc.
require_once("include.php");
//Crea una instancia del objeto de operación
$Type = new CTypes();
//Número de registros por página
define("PAGE_SIZE", 10);
//Obtener las variables enviadas por GET
$TypeID = $tid ? $tid : intval($_REQUEST['tid']);
//Número total de libros
$BookTotal = $Type->getBookTotal($TypeID
/* Núcleo de visualización de paginación*/
);
//Obtener el número total de páginas
$pageCount = ($LibroTotal/PAGE_SIZE);
//Número de página actual
if (isset($_GET[página]) && !empty($_GET[página])) {
$página = intval($_GET[página]);
} demás {
$página = 1;
}
si ($página==1) {
$NúmInicio = 0;
} demás {
$startNum = ($página-1) * PAGE_SIZE;
}
//Generar cadena de enlace de paginación
si ($página==1 && $páginaCount>1) {
$pageStr = "Página anterior | <a href=/Type.php?tid=".$TypeID."&page=".($page+1).">Página siguiente</a>";
} elseif ($página==$pageCount && $pageCount>1) {
$pageStr = "<a href=/Type.php?tid=".$TypeID."&page=".($page-1).">Página anterior</a> | Página siguiente";
} elseif ($página>1 && $página<=$páginaCount) {
$pageStr = "<a href=/Type.php?tid=".$TypeID."&page=".($page-1).">Página anterior</a> |
<a href=/Type.php?tid=".$TypeID."&page=".($page+1).">Página siguiente</a>";
} demás {
$pageStr = "Página anterior | Página siguiente";
}
//Obtiene el registro actual según el número de páginas
$allBook = $Type->getBookFromType($TypeID, $start=$startNum, $offset=PAGE_SIZE)
;
$tpl->assign('LibroTotal', $LibroTotal);
$tpl->assign('todoLibro', $todoLibro);
$tpl->assign('pageStr', $pageStr);
(
'Type.html')
;
-------------------------------------------------- ----------------------------------
Para una comprensión más clara, aquí hay una breve descripción del contenido básico de la biblioteca de clases: (El código está incompleto)
-------------------------------------------------- ----------------------------------
<?php
/**
* Archivo: Tipo.class.php
* Función: clase de procesamiento de tipos
* www.knowsky.com
* Autor: heiyeluren
**/
tipo de clase
{
var$mDsn;
var $mNombreTabla;
var $hPearDB;
//Constructor
tipo de función()
{
//...
}
//Obtener el método de manejo de la clase Pear DB
función _getDBClass($fetchMode = DB_FETCHMODE_ASSOC)
{
if(!is_object($this->hPearDB)){
$this->hPearDB = DB::connect($this->mDsn);
$this->hPearDB->query("establecer nombres 'utf8'");
$this->hPearDB->setFetchMode($fetchMode);
si(DB::IsError($this->hPearDB)){
devolver falso;
}
}
devolver $this->hPearDB;
}
//Obtener el número total de libros
función obtenerLibroTotal($TypeId)
{
$db = $this->_getDBClass();
$sql = "SELECCIONAR CONTAR(*) COMO total DE...";
$rs = $db->getOne($sql);
si (DB::isError($rs))
devolver $rs->getMessage();
demás
devolver $rs;
}
//Obtener todos los libros
función getBookFromType($TypeId, $inicio, $offset)
{
$db = $this->_getDBClass();
$sql = "SELECCIONAR * DESDE... LÍMITE $inicio,$desplazamiento";
$rs = $db->getAll($sql);
si (DB::isError($rs))
devolver $rs->getMessage();
demás
devolver $rs;
}
}
?>
-------------------------------------------------- ----------------------------------
Finalmente, echemos un vistazo a cómo se procesa esta plantilla Type.html:
-------------------------------------------------- ----------------------------------
{*Insertar archivo de encabezado*}
{incluir archivo="Cendar/head.html"}
<div id="lado">
<ul>
<li>Número total de libros: {$BookTotal}</li>
</ul>
</div>
<div id="Libro">
<h2 class="cata">El contenido específico del libro</h2>
<ul>
{nombre de la sección=bucle del libro=$allBook}
<li><a href="show_Book.php?tid={$allBook[Book].id}">{$allBook[Book].title}</a></li>
{sección más}
<li class="warning">Actualmente no hay libros</li>
{/sección}
</ul>
</div>
{* Visualización de cadena de paginación*}
<div align="derecha">
{"GBK"|iconv:"utf-8":$pageStr}
</div>
{* insertar archivo inferior*}
{incluir archivo="Cendar/foot.html"}
-------------------------------------------------- ----------------------------------
Luego captamos el punto clave y sabemos que podemos controlar $pagStr desde el programa PHP para que sea nuestra cadena de paginación y, finalmente, será reemplazada en el archivo de plantilla para lograr el efecto.
En este punto, básicamente comprende cómo realizar el procesamiento de paginación en la plantilla. Por supuesto, también puede escribir la función de paginación como una función o encapsularla en una clase para que pueda llamarse en todas partes. Jaja ~~~
(No reimprima el código anterior sin autorización)
Autor: heiyeluren
Fecha: 2005-8-2