忍者ブログ
バナヤンの忍者風呂
忍者ブログのカスタマイズ、各種WEBツールのテストなど試行錯誤の日々。 VMLによる地図の作成を研究していましたが、一時中断して、今はPHPを勉強しているところです。
ニュース
この欄には、このブログの内容に関連するニュースを掲載する予定です。
お知らせ
この欄には管理人からのお知らせなどを掲載します。
[68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78]

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

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

<?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>



ソースがすっきりしましたね。これでも前回と同じように動きます。

ページ切替ナビ付テーブル5



PR
QRコード
忍者ブログ [PR]
Copyright (C) 2006 banayan ALL RIGHTS RESERVED.