完成形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 で画面を表現する事をしないからです。
|
【PHPの最新記事】