Maison >développement back-end >tutoriel php >Pagination des données ThinkPHP

Pagination des données ThinkPHP

不言
不言original
2018-06-08 15:28:021742parcourir

Cet article présente principalement le processus de mise en œuvre de la pagination des données du didacticiel de démarrage rapide ThinkPHP. Les amis qui en ont besoin peuvent s'y référer

La pagination des données peut être l'une des fonctions les plus couramment utilisées en programmation Web. ThinkPHP implémente la fonction de pagination très simplement. Ceci peut être réalisé en définissant simplement quelques paramètres. Et il est également très facile de l’étendre.

Implémentons le programme de pagination de ThinkPHP à partir de zéro.

1. Tout d'abord, nous devons créer une base de données pour les tests de pagination. Le code test.sql est le suivant.

CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` char(100) NOT NULL,
`content` varchar(300) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=27 ;
INSERT INTO `test` (`id`, `name`, `content`) VALUES
(19, '123', '123'),
(20, '1231', '123123123'),
(21, '123123', '123123123'),
(26, '24', '123123'),
(25, '321123', '321123'),
(24, 'age', 'age'),
(23, '123123', '123123'),
(22, '213', '123');

2. Ensuite, nous devons créer un nouveau projet ThinkPHP. La nouvelle version de tp intègre une fonction de génération automatique de répertoire de projet.
Créez un nouveau dossier de test sous htdocs (c'est-à-dire le répertoire racine de votre site Web), placez le dossier principal THINKPHP dans le répertoire racine de test, créez un nouveau fichier index.php dans le répertoire racine de test et ajoutez le code suivant :

// 定义ThinkPHP框架路径
define('THINK_PATH', './Thinkphp');
//定义项目名称和路径。这2句是重点。
define('APP_NAME', 'test');
define('APP_PATH', './test');
// 加载框架入口文件
require(THINK_PATH."/ThinkPHP.php");
//实例化一个网站应用实例
$App = new App();
//应用程序初始化
$App->run();

Exécutez "http://localhost/test/index.php". Ouvrez à nouveau votre répertoire de test et constatez qu'il existe un dossier de test supplémentaire dans le répertoire racine. À ce stade, votre répertoire de projet a été généré.
Ouvrez le répertoire /test/test/conf/, créez un nouveau "config.php" et configurez votre connexion à la base de données.

<?php
return array(
&#39;DB_TYPE&#39;=>&#39;mysql&#39;,
&#39;DB_HOST&#39;=>&#39;localhost&#39;,
&#39;DB_NAME&#39;=>&#39;test&#39;, //新建的数据库名test
&#39;DB_USER&#39;=>&#39;root&#39;, //数据库用户名
&#39;DB_PWD&#39;=>&#39;&#39;, //数据库密码
&#39;DB_PORT&#39;=>&#39;3306&#39;,
);
?>

Si vous souhaitez activer le mode débogage, veuillez ajouter

"debug_mode"=>true

3. Implémentation de l'entrée et de la sortie de page de base.
(1) Ouvrez /test/test/lib/action/IndexAction.class.php et vous trouverez automatiquement le code suivant

<?php
// 本类由系统自动生成,仅供测试用途
class IndexAction extends Action{
public function index(){
header("Content-Type:text/html; charset=utf-8");
echo "<p style=&#39;font-weight:normal;color:blue;float:left;width:345px;text-align:center;border:1px solid silver;background:#E8EFFF;padding:8px;font-size:14px;font-family:Tahoma&#39;>^_^ Hello,欢迎使用<span style=&#39;font-weight:bold;color:red&#39;>ThinkPHP</span></p>";
}
}
?>

par le système La fonction index() dans la classe indexaction générée est la fonction d'appel de page d'accueil par défaut. Vous pouvez utiliser http://localhost/test/index.php ou http://localhost/test/index.php/index pour y accéder

(2) Nous l'ignorerons pour l'instant. Nous avons d’abord besoin d’une page de soumission de formulaire. Ouvrez "/test/test/tpl/default/index/" et créez un nouveau fichier add.html.

<form method="post" action="__URL__/insert">
<p>姓名:<input name="name" type="text" ></p>
<p>内容:<input name="content" type="text"></p>
<p>提交:<input type="submit" value="submit"></p>
</form>

Après avoir enregistré, saisissez http : / /localhost/test/index.php/index/add, vous pourrez voir la page que vous avez ajoutée. Parmi eux, __URL__ (l'url doit être en majuscule) est converti en l'adresse correspondante /test/index.php/Index/.
Voici une brève introduction à la relation entre les modèles et les actions. Pour chaque action, le modèle correspondant est un fichier html du même nom. Par exemple, index() sous la classe index correspond à default/index/index.html, et add.html correspond évidemment à add() sous la classe index.
Nous pouvons même accéder à add en accédant à add() (http://localhost/test/index.php/index/add) lorsqu'il n'y a que add.html et aucune action html add() correspondante. Les espaces réservés sous le modèle add.html seront remplacés par les données correspondantes. L'effet est le suivant.

(3) Comme le montre "action=__URL__/insert" du formulaire, l'action pour le traitement du formulaire est /test/index.php/index/insert, nous devons donc ajouter l'insert action pour traiter les données de soumission du formulaire. Avant cela, il nous reste encore une chose importante à faire : ajouter un nouveau fichier modèle. Grâce à la création du fichier modèle, nous pourrons utiliser des méthodes pratiques pour faire fonctionner la base de données dans l'action d'insertion
Ouvrez le dossier /test/test/lib/model/, créez un nouveau fichier TestModel.class.php. Ouvrez-le, entrez et enregistrez le code suivant

<?php
class TestModel extends Model {
}
?>

En termes simples, il s'agit du fichier de base pour l'implémentation d'ActiveRecord. La règle de dénomination consiste à ajouter Model après la table dans votre base de données. Par exemple, la table que nous allons utiliser est test, mon nom de fichier doit être TestModel.class.php et le nom de classe sous le fichier doit être TestModel.

Ensuite, nous revenons au fichier indexaction.class.php, supprimons le code d'origine et ajoutons le code suivant.

class IndexAction extends Action{
//表单数据添加到数据库
public function insert() {
//实例化我们刚才新建的testmodel.
$test = D(&#39;Test&#39;);
if ($test->create()) {
//保存表单数据就这一步。thinkphp已经全部做完了。
$test->add();
$this->redirect();
}else{
exit($test->getError()。&#39;[ <A HREF="javascript:history.back()">返 回</A> ]&#39;);
}
}
}

(4) Ensuite, nous devons ajouter une action d'affichage par défaut de la page d'accueil index() à la classe IndexAction pour appeler les données du formulaire.

public function index() {
//依旧是实例化我们新建的对应相应表名的model.这是我们进行快捷表操作的重要关键。
$test = D(&#39;Test&#39;);
//熟悉这段代码么?计算所有的行数
$count = $test->count(&#39;&#39;,&#39;id&#39;);
//每页显示的行数
$listRows = &#39;3&#39;;
//需要查询哪些字段
$fields = &#39;id,name,content&#39;;
//导入分页类 /ThinkPHP/lib/ORG/Util/Page.class.php
import("ORG.Util.Page");
//通过类的构造函数来改变page的参数。$count为总数,$listrows为每一页的显示条目。
$p = new Page($count,$listRows);
//设置查询参数。具体见“ThinkPHP/Lib/Think/Core/Model.class.php”1731行。
$list = $test->findall(&#39;&#39;,$fields,&#39;id desc&#39;,$p->firstRow.&#39;,&#39;.$p->listRows);
//分页类做好了。
$page = $p->show();
//模板输出
$this->assign(&#39;list&#39;,$list);
$this->assign(&#39;page&#39;,$page);
$this->display();
}

Il est temps de créer un modèle. Créez un nouveau index.html sous /test/test/tpl/default/index/ (car il correspond à index() par défaut. Par conséquent, vous pouvez l'attribuer directement dans le programme sans spécifier le fichier modèle. Bien sûr, cela peut être configuré.)

<hr><a href="__URL__/add">填写</a>
//分页显示,这一行
<hr>{$page}<hr>
//数据显示。下面的参数很快会再进行详解。它很好理解。
<volist name="list" id="vo">
<p>姓名:{$vo.name}</p>
<p>内容:{$vo.content}</p>
<hr>
</volist>

Sauvez-le. Entrez ensuite http://localhost/test/
Félicitations. Vous avez appris à utiliser thinkphp pour créer une pagination

Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de tout le monde. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

Méthode backend PHP pour implémenter le code de génération d'indice de pagination pour les pages Web

À propos de l'implémentation de thinkPHP3.2 Méthodes de pagination des styles personnalisés

Analyse sur l'ajout de la classe de pagination d'événements js customPage.class.php au framework thinkPHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn