phpな休日 BBS sitemap
1. ログファイルを読み込んで表示する

当サイトへお越しでPHPを学ぼうという方、すでにHTMLやスタイルシートの知識はある程度持ち合わせているとは思いますが、サンプルスクリプトの機能的部分は気に入っていただけても 「見栄え」 が悪くて使いようがないとか、見た目をカスタマイズしたいけれど、どうやっていいのかわからない方もいらっしゃるかと思いまして、スタイルシートでカスタマイズする方法をちょっとだけ。
ゲストブックへの最初の書き込み(管理人)を読み込んで表示するスクリプトを例にします。ログファイルから no.1 の行を探して [タイトル]・[名前]・[投稿時間]・[NO]・[コメント] の順に表示します。各項目間を1文字空けて、[NO] の後ろで改行します。

<?php
$data = file("./guestbook/gb.cgi"); //ログファイルを開いて
for ($i = 0; $i < count($data); $i++) { //走査する
$list = explode("<>", $data[$i]);
if ($list[0] == "1") { // 1 の行を探す
print $list[4] . " ";
print $list[1] . " ";
print $list[6] . " ";
print $list[0] . "<br>¥n";
print $list[5];
}
}
?>

実行
2. スタイルシートによるカスタマイズ(class指定)

このスクリプトに対して
・[タイトル] に文字色をつけて bold 表示にします。
・[名前] にも色をつけます。
・[投稿時間] は文字サイズを小さくして色をつけます。
・[NO] は前後をカッコで囲ってさらに小さな文字にします。
・[コメント] は行間を空けて表示します。
以上のことを行います。まずはスクリプトにHTMLタグとスタイルシートのクラスを書いて行きます。赤文字部分です。

<?php
$data = file("./guestbook/gb.cgi"); //ログファイルを開いて
for ($i = 0; $i < count($data); $i++) { //走査する
$list = explode("<>", $data[$i]);
if ($list[0] == "1") { // 1 の行を探す
print "<span class='gbtitle'>" . $list[4] . "</span> ";
print "<span class='gbname'>" . $list[1] . "</span> ";
print "<span class='gbtime'>" . $list[6] . "</span> ";
print "<span class='gbno'>[" . $list[0] . "]</span><br>¥n";
print "<p class='gbcomment'>" . $list[5] . "</p>";
}
}
?>

クラス指定が済んだら head 内でクラスを定義します。php ファイルの全文は以下のようになります。

<?php
mb_language("ja");
mb_internal_encoding("UTF-8");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>StyleSheet</title>
<style type="text/css"><!--
.gbtitle {
font-weight:bold;
color:#000099;
}
.gbname {
color:#3366ff;
}
.gbtime {
font-size:90%;
color:#808080;
}
.gbno {
font-size:75%;
color:#808080;
}
.gbcomment {
line-height:130%;
color:#000099;
}
--></style>
</head>
<body>
<?php
$data = file("./guestbook/gb.cgi"); //ログファイルを開いて
for ($i = 0; $i < count($data); $i++) { //走査する
$list = explode("<>", $data[$i]);
if ($list[0] == "1") { // 1 の行を探す
print "<span class='gbtitle'>" . $list[4] . "</span> ";
print "<span class='gbname'>" . $list[1] . "</span> ";
print "<span class='gbtime'>" . $list[6] . "</span> ";
print "<span class='gbno'>[" . $list[0] . "]</span><br>¥n";
print "<p class='gbcomment'>" . $list[5] . "</p>";
}
}
?>
</body>
</html>

3. 外部スタイルシート化
スタイルシートを外部に出したい場合は、下記部分を保存した .css ファイル 【style.css】 (名前は別に style.css でなくてもいいです)を作成し、保存します。

.gbtitle {
font-weight:bold;
color:#000099;
}
.gbname {
color:#3366ff;
}
.gbtime {
font-size:90%;
color:#808080;
}
.gbno {
font-size:75%;
color:#808080;
}
.gbcomment {
line-height:130%;
color:#000099;
}

そのうえで php ファイルの head 部分で、作成した .css ファイルを読み込みます。

<?php
mb_language("ja");
mb_internal_encoding("UTF-8");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="./style.css" type="text/css">
<title>StyleSheet</title>
</head>
<body>
<?php
$data = file("./guestbook/gb.cgi"); //ログファイルを開いて
for ($i = 0; $i < count($data); $i++) { //走査する
$list = explode("<>", $data[$i]);
if ($list[0] == "1") { // 1 の行を探す
print "<span class='gbtitle'>" . $list[4] . "</span> ";
print "<span class='gbname'>" . $list[1] . "</span> ";
print "<span class='gbtime'>" . $list[6] . "</span> ";
print "<span class='gbno'>[" . $list[0] . "]</span><br>¥n";
print "<p class='gbcomment'>" . $list[5] . "</p>";
}
}
?>
</body>
</html>

実行

外部スタイルシートにすることで、複数ページでスタイル定義を共有出来、また、スタイルの変更も css ファイルの変更だけで出来ますので合理的です。
以上ざっと表示のカスタマイズについてご説明しました。HTMLタグやスタイルシートに関する詳しいことはここでは説明しきれませんので、あしからず。

2014.2.4 last edit

Produced by haku