postgres+phpで携帯への情報提供
●なぜ携帯で情報提供する時代なのか
 高校改革が進む中、単位制高等学校や定時制の三部制が増えてきている。そのような学校の場合、 LHR等で一斉に指導できる機会が減って、生徒への連絡が取りにくという問題が発生する可能性が 十分に考えられる。現在、ほとんどの高校生が携帯電話を所有する中で、学校の時間割・行事予定・緊急情報に iモードでアクセスできる環境を構築し、情報を提供することが必要なのではないのかと思います。 実際、定時制高校では、時間割や行事予定等を電話で問い合わせる生徒も多い。iモードの通信料は、 1kバイトあたり2〜3円程度と、電話代金を考えれば、負担とはならないはずである。
 Webに情報を直接書き込んでアップするのが一般的であるが、選択制が増えている中で、生徒個々が 違う時間割で授業を受ける場合が多くなっている。そこで、時間割データのデータベースを利用すれば、 個々に対応した時間割も簡単に提供できる。そこで、今回は実際にPostgreSQl7.1+php4を使iモードアクセス 画面を作成しました




上の写真は、実際に携帯でアクセスした画面です。最初アクセスすると、左の画面になり、例えば「M1」というクラス名を クリックすると、左のように時間割が表示されます。

●簡単に作成の方法を
 DBMSとして、Linux上で多く使われているPostgresSQL7.1を使っています。海外では、MySQLの方が多い ようですが、日本ではPostgresSQlの方が人気があるようです。時間割データ用のデータベースとテーブルを作成 します。これは、どうしてもLinuxサーバーでコマンドをたたかなければいけません。テーブルの作成で、データ型 をしっかり指定してあれば、クライアントWindowsマシンにPostgresSQL ODBC ドライバーをインストールすれば、 簡単にMicrosoft Accessから直接データを入力できます。Excel→Access→Postgresと行けば、時間割データを 簡単にDBMSに組み込めます。Postgresの文字コードは、EUCを使いますが、これも問題なく変換してくれます。
 DBMSとのインターフェース言語ですが、いろいろありますが、相性からもPHP言語が使いやすくそれを利用しました。 携帯で使ってみても特に早さの点でも問題なく動作します。このシステムを使って自分の予定も携帯から見られるよ うにしています。

●ソース
1.アクセス画面(index.html)
<HTML>
<HEAD>
<meta http-equiv="content-type" content="text/html; charset=sift-jis">
</head>
<body$gt;
<a href="jikanwari.php?codo=11">M1</A>
クラス名M1をクリックした時にクラスコード番号11でデータベースにアクセスする。
以下、クラス名とコードを繰り返す。
    ・
    ・
    ・
    ・
    ・
</body>
</html>
2.時間割表示画面(jikanwari.php)
拡張子は、phpにします。
<HTML>
<HEAD>
<meta http-equiv="content-type" content="text/html; charset=shift-jis">
</head>
<body$gt;
<?
$conn = pg_Connect("localhost", "", "" , "" , "jikanwari");
一般的にデータベースに接続する構文です。「jikanwari」は、このデータベースの名前です。
if (!$conn) {
echo "データベースにアクセスできませんでした!\n";
exit;
}
$sql = "select * from jikan where codo = $codo";
クラスの時間割を抽出SQL文です。「jikan」は、データのテーブル名です。
$result = pg_Exec($conn, $sql);
if (!$result) {
echo "データベースにアクセスできませんでした!\n";
exit;
}
$class = pg_result($result,0,1);
print("\"$class\"時間割
");
print文は、Webで文字を表示したいときに使います。
$i=0;
$k=2;
$t=7;
一般的な変数に値を代入しています。
print("/|");
print("月|");
print("火|");
print("水|");
print("木|");
print("金");
print("<br$gt;");
曜日の表示ですが、携帯の表示を横8文字押さえるのと罫線を使わないために「|」を使っています。
for ($i=1;$i < 5;$i++){
print("$i");
for ($j=0;$j < 5;$j++){
$str=i18n_convert("$str","SJIS","EUC-JP"); $str = pg_result($result,0,$k);
print("|$str");
$k=$k+1;
}
print("
");
print("_");
for ($j=0;$j < 5;$j++){
$str = pg_result($result,0,$t);
$str=i18n_convert("$str","SJIS","EUC-JP"); 時間割を取得するわけですが、一般的に携帯Webは、文字コードがs-jis表示に限られて います。そのため、postgresからは、eucコードでデータが送られるために、ここでs-jisに変換しています。
print("|$str");
$t=$t+1;
}
クラスの時間割を1文字ずつ取得し表示をしています。
$k=$k+5;
$t=$t+5;
print("<br>");
}
pg_FreeResult($result);
pg_Close($conn);
最後にデータベースから接続を切断します。
?> </body>
</html>

青文字は、簡単な解説です。この2つのファイルを作成すれば簡単に携帯にも表示できます。 もっと、効率の良い組み方があると思いますが・・・。iモード、jskyについては、問題なく 表示されます。Auも、一般的には大丈夫のようですが、本格的には、HDMLとちょっと違った タグで作成司したほ良いようです。
HOMEへ データベーストップへ ネット事件・話題へ WORMのアタックログへ 単位制高校DBへ