2010年09月15日


php のエッセンスのサンプル



csv を入力してテーブルとして表示するアプリケーションのサンプルですが、
できる限り PHP のエッセンスを組み込みました。配列が二つあって、二重
ループになっていますが、完成した状態から省いてシンプルにしていけば、
いいと思います。
完成形
<?

require_once("css.php");

$text = file_get_contents("data.csv");

$row = explode( "\r\n", $text );

echo "<pre>", print_r( $row, true ), "</pre>";

print "<TABLE border=1>";
for( $i = 0; $i < count($row)-1; $i++ ) {
	$col = explode( ",", $row[$i] );

	debug_data( $col, $i );

	// 行の作成
	$buffer = "";
	for( $j = 0; $j < count($col); $j++ ) {
		// 列の作成
		$buffer .= "<TD>{$col[$j]}</TD>";
	}

	print "<TR";
	print " style='cursor:crosshair' onmouseover='document.getElementById(\"data$i\").style.display=\"\"'";
	print " onmouseout='document.getElementById(\"data$i\").style.display=\"none\"'";
	print ">{$buffer}</TR>";
}
print "</TABLE>";

print $work;

function debug_data( $data, $no ) {

	global $work;

	$work .= "<pre id='data$no' style='display:none;position:absolute;left:300px;top:160px;'>";
	$work .= print_r( $data, true );
	$work .= "</pre>";

}

?>

上のソースコードから、デバッグ用の表示部分を省くと以下のようになります
デバッグなし
<?

require_once("css.php");

$text = file_get_contents("data.csv");

$row = explode( "\r\n", $text );

print "<TABLE border=1>";
for( $i = 0; $i < count($row)-1; $i++ ) {
	$col = explode( ",", $row[$i] );

	// 行の作成
	$buffer = "";
	for( $j = 0; $j < count($col); $j++ ) {
		// 列の作成
		$buffer .= "<TD>{$col[$j]}</TD>";
	}

	print "<TR>{$buffer}</TR>";
}
print "</TABLE>";

?>

さらに、表示を行だけにすると簡単になります。
行表示のみ
<?

require_once("css.php");

$text = file_get_contents("data.csv");

$row = explode( "\r\n", $text );

print "<TABLE border=1>";
for( $i = 0; $i < count($row)-1; $i++ ) {

	// 行の作成
	$buffer = "";
	$buffer .= "<TD>{$row[$i]}</TD>";

	print "<TR>{$buffer}</TR>";
}
print "</TABLE>";

?>

※ 注意
このサンプルはあくまで、PHP としてのサンプルであって、WEB アプリケーション
として望ましい形ではありません。実際の WEB アプリケーションでは、print や
echo で画面を表現する事をしないからです。


posted by at 10:55 | Comment(0) | PHP | このブログの読者になる | 更新情報をチェックする


この記事へのコメント
コメントを書く
お名前:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。