さて、顧客テーブルから読み出すレコードですがレコード数が増えてくるとズラーッと長くなり見にくくなります。それに、大量の顧客レコードがある場合、システムのパフォーマンスに影響します。
そこで、一度に表示するレコードの範囲を指定して表示したいです。
表示するレコード数を制御するSQL文”LIMIT”
SQLの構文は以下のようになります。
SELECT * FROM テーブル名 ソート順 LIMIT スタート位置 , 表示する範囲
public function kpw_client_process() {
//レコードの読み出し
global $wpdb;
//ページャー
$query_limit = '3'; //表示範囲
$query_num = '0'; //スタート位置
$query_range = $query_num . ',' . $query_limit;
$table_name = $wpdb->prefix . 'kpw_client_table';
$query = "SELECT * FROM {$table_name} ORDER BY `id` ASC LIMIT $query_range";
$post_row = $wpdb->get_results($query);
$results[] = "<h3>■ 顧客リスト($query)</h3>";
foreach ($post_row as $row){
$name = esc_html($row->client_name);
$email = esc_html($row->client_email);
$subject = esc_html($row->client_subject);
$results[] = "<p>$name : <a href=mailto:$email>$email</a> : $subject<hr></p>";
}
$result = implode ( $results );
//顧客情報入力フォームを表示
$result .= kpw_client_form();
return $result;
}
$query_num = ‘0’; レコード1から3行表示する
$query_num = ‘3’; レコード4から3行表示する
これで何となくページャーができそうですが、問題は$query_numをどこに保存すれば良いのか?上記コードでは、とりあえず変数を手動で変えてやってますが、実際にはユーザーのリクエストに応じて変えていく必要があります。
感覚的には、わざわざWPオプションズに記録することもないし、一時的な「状態」ですからJavaScriptとかCookieとかで良い気がします。
まとめ
来たか〜JavaScriptとかCookie!!!
顧客リストのページャー(ページネイション)を実装するためにこれからJavaScriptまたはCookieについて学ぼうと思います。
ちなみに今回からコードの表示にHighlighting Code Blockを使わせて頂いております。インデントもちゃんとできてカラーリングもできて分かりやすいですね。
[temp id=1]