WebブラウザーでWebサーバー上にあるインターフェイスプログラムにアクセスすると、インターフェイスプログラムはデータベースにアクセスを行い、データベースから情報を取り出します。そして、データベースから取り出した情報をもとにHTMLを動的に作成してWebブラウザーにデータを送信するとう仕組です。
もちろんシステムを構成するに当り選択肢は様々です。WebサーバーとしてはApache,IISがあるでしょう。データベースもMySQL,PostgreSQL,Sybase,Oracleなど様々です。インターフェィスもASP,Java,Perl,PHPなどで作成するという選択支が考えられます。今回はWebサーバーとしてUnixではお馴染のApacheをデータベースとして定評のあるPostgreSQLをインターフェイスの実装にはPHPを使うことにします。Linux Red Hat,Debianでそれぞれパッケージがありインストールも簡単に行うことができます。$ createuser hogehoge (ユーザ名はApacheで設定されているUSERと同じものにします) |
Enter user's postgres ID or RETURN to use unix user ID: 1000 -> |
(もしunix user IDと異る値を使う場合には数字を入力) |
Is user "hogehoge" allowed to create databases (y/n) |
(hogehogeは実際にデータベース作成には使わないユーザなのでnとします) |
Is user "hogehoge" a superuser? (y/n) |
(hogehogeは実際にデータベース作成には使わないユーザなのでnとします) |
createuser: hogehoge was successfully added |
(このメッセージが出たら正常にユーザは作成されたことを意味します) |
$ createdb testdb |
datname | | | datdba | | | encoding | | | datpath |
--------- | + | ------ | + | -------- | + | -------- |
template1 | | | 31 | | | 1 | | | template1 |
testdb | | | 1000 | | | 1 | | | testdb |
CREATE TABLE book ( bookname varchar(80), keyword varchar(80), date date ); |
testdb => \i book.sql |
CREATE TABLE book ( |
bookname varchar(80), |
keyword varchar(80), |
date date |
); |
testdb => GRANT ALL ON book TO 'hogehoge'; |
$con = pg_connect(host, port, dbname); |
if($con == false){ print("データベースと接続ができませんでした."); exit; } |
$sql = "SELECT * FROM book ORDER BY bookname;\n"; @$result = pg_exec($sql); |
if($result == false){ print("SQL:\"$sql\"の実行に失敗しました\n"); exit; } |
$row = pg_numrows($result); $columns = pg_numfields($result); print("< TABLE >"); for($i = 0; $i < $columns-1; $i++){ $str = pg_fieldname($result,$i); print("< TH > $str < /TH >\n"); } for($j = 0; $j < $rows; $j++){ print("< TR >\n"); for($i = 0; $i < $columns-1; $i++){ $str = pg_result($result,$j,$i); print("< TD > $str < /TD >\n"); } print("< /TR >\n"); } print("< /TABLE >"); |
pg_freeresult($result); |
pg_close($con); |