ホームページ  >  記事  >  バックエンド開発  >  ThinkPHP データページング

ThinkPHP データページング

不言
不言オリジナル
2018-06-08 15:28:021691ブラウズ

この記事では、主に ThinkPHP クイック スタート チュートリアルのデータ ページングの実装プロセスを紹介します。必要な方は参照してください。

データ ページングは​​、Web プログラミングで最もよく使用される関数の 1 つかもしれません。 ThinkPHP はページング機能を非常に簡単に実装します。これは、いくつかのパラメータを定義するだけで実現できます。そして拡張も非常に簡単です。

ThinkPHP のページング プログラムを最初から実装してみましょう。

1. まず、ページング テスト用のデータベースを作成する必要があります。test.sql コードは次のとおりです。

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. 次に、新しい ThinkPHP プロジェクトを作成する必要があります。新しいバージョンの tp には、プロジェクト ディレクトリの自動生成機能が組み込まれています。
htdocs (Web サイトのルート ディレクトリ) の下に新しいテスト フォルダーを作成し、THINKPHP コア フォルダーをテスト ルート ディレクトリに配置し、テスト ルート ディレクトリに新しいファイルindex.php を作成して、次のコード:

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

「http://localhost/test/index.php」を実行すると、ThinkPHP のウェルカム ページが表示されます。テスト ディレクトリを再度開くと、ルート ディレクトリに追加のテスト フォルダーが作成されていることがわかります。
/test/test/conf/ ディレクトリを開き、新しい「config.php」を作成し、データベース接続を構成します。

<?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;,
);
?>

デバッグ モードをオンにしたい場合は、

"debug_mode"=>true

を配列 3. 基本的なページ入出力の実装。
(1) /test/test/lib/action/IndexAction.class.php を開くと、次のコードが見つかります。

<?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>";
}
}
?>

が自動的に生成されます。システムによる Indexaction クラスの Index() 関数は、デフォルトのホームページ呼び出し関数です。 http://localhost/test/index.php または http://localhost/test/index.php/index を使用してアクセスできます

(2) ここでは無視します。まず、フォーム送信ページが必要です。 「/test/test/tpl/default/index/」を開き、新しいファイル 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>

保存後、「http://」と入力します。 localhost /test/index.php/index/add を実行すると、追加したページが表示されます。このうち、__URL__ (URL は大文字にする必要があります) は、対応するアドレス /test/index.php/Index/.
に変換されます。テンプレートとアクションの関係について簡単に説明します。各アクションに対応するテンプレートは、同じ名前の HTML ファイルです。たとえば、インデックス クラスのindex()はdefault/index/index.htmlに対応し、add.htmlはインデックス クラスのadd()に対応することは明らかです。
add.html しかなく、対応する add() アクションがない場合でも、add() (http://localhost/test/index.php/index/add) にアクセスする形式で add にアクセスできます。 。 add.html テンプレートの下のプレースホルダーは、対応するデータに置き換えられます。効果は以下の通りです。

(3) フォームの「action=__URL__/insert」から、フォーム処理のアクションが/test/index.php/index/insertであることがわかるので、insertを追加する必要があります。フォーム送信データを処理するアクション。その前に、新しいモデル ファイルを追加するという重要な作業がまだ 1 つあります。モデル ファイルを作成すると、挿入アクションでデータベースを操作するための便利なメソッドを使用できるようになります。
/test/test/lib/model/ フォルダーを開き、新しいファイル TestModel.class.php を作成します。それを開いて、次のコードを入力して保存します。

<?php
class TestModel extends Model {
}
?>

簡単に言えば、これは ActiveRecord 実装の基本ファイルです。命名規則は、データベース内のテーブルの後に Model を追加することです。たとえば、使用するテーブルは test であり、ファイル名は TestModel.class.php であり、ファイルの下のクラス名は TestModel.# である必要があります。

## 次に、indexaction.class.php ファイルに戻り、元のコードを削除して、次のコードを追加します。

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) 次に、フォーム データを呼び出すために、ホームページのデフォルト表示アクション Index() を IndexAction クラスに追加する必要があります。

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();
}

テンプレートを設定します。 /test/test/tpl/default/index/配下にindex.htmlを新規作成します(デフォルトではindex()に相当するため。そのため、テンプレートファイルを指定せずにプログラム内で直接代入することも可能です。もちろんこれは可能です) )

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

彼を救ってください。次に、「http://localhost/test/

おめでとうございます」と入力します。 thinkphp を使用してページネーションを作成する方法を学習しました。

上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトに注目してください。

関連する推奨事項:

Web ページのページング添え字生成コードを実装するための PHP バックエンド メソッド

thinkPHP3.2 実装についてページング スタイルをカスタマイズする方法

JS イベント ページング クラスcustomPage.class.php を thinkPHP フレームワークに追加する場合の分析

#

以上がThinkPHP データページングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。