最新記事
(06/29)
(06/04)
(06/03)
(05/30)
(05/28)
|
ニュース
この欄には、このブログの内容に関連するニュースを掲載する予定です。
|
PHP よく使用する関数はインクルードファイルに(require_once)
PHPを勉強中です。
よく使用する関数やスクリプトは別のファイルにまとめておき、必要に応じて呼び出せれば便利です。
PHPでは、別のファイルを合体させて使用することができます。インクルードファイルというものです。
「include」「require」「include_once」「require_once」を記述するとインクルードファイルを読み込むことができます。
「include」と「require」の違いは、エラー発生時に処理を停止しないか、停止するかです。「include」は処理を停止しません。
「include_once」と「require_once」は、スクリプトの実行時に同じファイ ルが複数回読み込まれる必要が無く、1回読み込めばよいときに使用します。インクルードファイルの内容に変更が生じないときには、1回読み込めば充分です。したがって、単なるスクリプトの合体の場合は、これらを使用します。
さっそく試してみましょう。
前回の「PHP ページ切替ナビ付テーブル(CSV)」 で使用した関数をインクルードファイル「mylib.inc」に移します。その関数が何をしようとして作成されたものかをメモしておかないと、次に使いたいときに迷ってしまうので注釈を加えておきましょう。
[サンプルソース]インクルードファイル --- mylib.inc
このインクルードファイル「mylib.inc」を呼び出したいときは、次のように記述します。
[サンプルソース]インクルードファイルの呼び出し
簡単ですね。
それでは、全体のソースを示しましょう。
インクルードファイル化した部分以外は、前回の「PHP ページ切替ナビ付テーブル(CSV)」 と同じです。
[サンプルソース]ページ切替ナビ付テーブル(CSV) -インクルード版
ソースがすっきりしましたね。これでも前回と同じように動きます。
よく使用する関数やスクリプトは別のファイルにまとめておき、必要に応じて呼び出せれば便利です。
PHPでは、別のファイルを合体させて使用することができます。インクルードファイルというものです。
「include」「require」「include_once」「require_once」を記述するとインクルードファイルを読み込むことができます。
「include」と「require」の違いは、エラー発生時に処理を停止しないか、停止するかです。「include」は処理を停止しません。
「include_once」と「require_once」は、スクリプトの実行時に同じファイ ルが複数回読み込まれる必要が無く、1回読み込めばよいときに使用します。インクルードファイルの内容に変更が生じないときには、1回読み込めば充分です。したがって、単なるスクリプトの合体の場合は、これらを使用します。
さっそく試してみましょう。
前回の「PHP ページ切替ナビ付テーブル(CSV)」 で使用した関数をインクルードファイル「mylib.inc」に移します。その関数が何をしようとして作成されたものかをメモしておかないと、次に使いたいときに迷ってしまうので注釈を加えておきましょう。
[サンプルソース]インクルードファイル --- mylib.inc
<?php
### 【ページ切替ナビゲーション】###########################
### 各ページへのリンクリストを数字で表示する。
### クリックされた数字はGETメソッドで取得することを想定。
### $lastpage:0を1ページ目とし、最終ページは(総ページ数-1)。
### $lastpageは、「レコード数/ページあたり表示レコード数」で求めることを想定。
function page_navi($lastpage){
for($i=1;$i<=$lastpage+1;$i++){
echo "<a href=$_SERVER[PHP_SELF]?page_num=".$i.">[".$i."]</a>";
}
}
### 【ページ切替テーブル(CSV)】###########################
### CSVファイルを読み込んで、HTMLのテーブルとしてデータを表示する。
### 戻り値は、「総レコード数」。
### 何番目のレコードから表示するかを$row_fromで指定(1番目は「0」)。
### 1ページに表示するレコード数は、$pagerowsで指定する。
### ユーザー定義関数「page_navi($lastpage)」と組み合わせて使用することを想定。
### <class属性>
### table .CSV
### 作成されるテーブルの行
### 奇数行 tr .row_class0
### 偶数行 tr .row_class1
### 各フィールド
### 第1フィールド td field0
### 第2フィールド td field1
function fgetcsv2table_page($filename,$row_from,$pagerows){
$fp = fopen($filename,"r");
if(!($fp)){
die("ファイルをオープンできません。");
}else{
$row_num=0;
$row_to=$row_from + $pagerows;
echo "<table class='csv'>\r\n";
while($row=fgetcsv($fp,1000,",")){
$page=$rownum/$pagerows;
$row_class=$row_num % 2;
if($row_num>=$row_from&&$row_num<$row_to){
echo"<tr class='row_class".$row_class."'>";
$fields=count($row);
for($i=0;$i<$fields;$i++){
echo "<td class='field".$i."'>".$row[$i]."</td>";
}
echo "</tr>\r\n";
}
$row_num++;
}
echo "</table>";
fclose($fp);
}
return $row_num;
}
?>
このインクルードファイル「mylib.inc」を呼び出したいときは、次のように記述します。
[サンプルソース]インクルードファイルの呼び出し
<?php
include_once("mylib.inc");
?>
簡単ですね。
それでは、全体のソースを示しましょう。
インクルードファイル化した部分以外は、前回の「PHP ページ切替ナビ付テーブル(CSV)」 と同じです。
[サンプルソース]ページ切替ナビ付テーブル(CSV) -インクルード版
<?php
include_once("mylib.inc");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Pragma" content="no-cache">
<title>fgetcsv2table_page()</title>
<style type='text/css'>
<!--
.csv {border-collapse:collapse;}
.csv td {border:#030 solid 1px;}
.row_class0{background-color:#cfc;}
.row_class1{background-color:#fff;}
.field0{text-align:right;}
-->
</style>
</head>
<body>
<?php
//テスト用データ
$filename="pref.csv";
$pagerows=10;
$row_from=0;
if($_GET['page_num']){
$row_from=($_GET['page_num']-1)*$pagerows;
}
###ユーザー定義関数fgetcsv2table_page
$row_num=fgetcsv2table_page($filename,$row_from,$pagerows);
echo "<hr>";
echo "全".$row_num."件<br>";
echo "<hr>";
$page=$row_num/$pagerows;
###ユーザー定義関数page_navi
page_navi($page);
if($_GET['page_num']){
$page_num=$_GET['page_num'];
$row_from=$pagerows * $page_num;
}
?>
</body>
</html>
ソースがすっきりしましたね。これでも前回と同じように動きます。
PR