データの準備
データは第3回から第5回で作成した商品仕入れ情報を使います。
第3回 データベースとテーブルの作成
第4回 データベースの正規化
第5回 SQL基礎 I
仕入れ情報であるordersというテーブルがあると思います。
このテーブルには各注文を一意に識別できるカラムがないので、order_noという名称のカラムを付与し注文番号として使用できるようにしておきます。
以下のSQLを実行してください。
ALTER TABLE orders ADD COLUMN order_no serial UNIQUE NOT NULL;
連番型(serial)は「第3回 データベースとテーブルの作成」でも出てきました。「オススメ!OSS-DB情報 第6回 シーケンス」も併せてご覧ください。
※ordersテーブルには、name(商品名), farm_name(仕入先名), arrival_date(入荷日)の3つのカラムからなる主キーが存在していますが、もし主キーがない場合には、以下のSQLのように連番かつ主キーとなるカラムを追加してもよいでしょう。
ALTER TABLE orders ADD COLUMN id serial CONSTRAINT orders_pkey PRIMARY KEY(id);
ApacheとPHPのインストール
サンプルアプリケーションの配置
上のURLよりサンプルコード( sampleApplication1.tar.gz )をダウンロードしてしてください。
このファイルを /var/www/ に置きます。このファイルは複数のファイルをアーカイブし圧縮したファイルですので、以下を実行して解凍・展開します。
$ cd /var/www
$ sudo tar zxvf sampleApplication1.tar.gz
/var/www/ ディレクトリはドキュメントルートと呼ばれ、HTMLファイルなどのWebコンテンツを配置することで、Webサイト/アプリケーションとして動作します。
/var/www/sample/ というディレクトリができていると思います。
Webブラウザを起動して
http://localhost/sample/
にアクセスしてみましょう。
以下のようなページが表示されたでしょうか。
まとめ
PHPには”pg_”で始まる関数が用意されていて、これらの関数を使うことによりPostgreSQLにアクセスすることができます。
例えば、
pg_connect:DB接続情報を引数として、DBに接続する処理をします(dbAccess.php 30行目)
pg_query:接続オブジェクトと実行したいSQL文を引数にして、クエリーを発行します(dbAccess.php 40行目)
pg_num_rows:pg_queryを実行して得られた結果の件数を取得する(dbAccess.php 43行目)
pg_close:DB接続を切断する(dbAccess.php 34, 41行目)
pg_fetch_array:結果を一行ずつ取得する(index.php 37行目)
他にもPHPのPostgreSQL関数は多数あります。
http://php.net/manual/ja/ref.pgsql.php
しかし、基本的な流れは
・データベースに接続
・SQLの実行
・結果取得
であり、いずれの処理でもほぼ変わりはありません。
データベースにアクセスしてデータを表示するまでを駆け足で追ってみました。
このWebアプリケーションは極々簡単なものですが、pg_queryにセットするSQLをより複雑なものにしたりといった工夫や改善をすることができると思います。
次回はこのWebアプリケーションを元にして、更新、削除をしてみたいと思います。
執筆:
村上 恵 氏(OSS-DB Silver認定者)株式会社オークニーにて、PostGISを含むFOSS4G(Free Open Source Software for Geospatial)ソフトウェアを軸としたアプリケーションやサービスの開発に従事。
岡林 遼 氏
アドバイザー:
森 亮 氏 株式会社オークニー代表取締役
2002年にオークニーを設立し、代表取締役に就任。マッピング・ GIS・LBS・ITS関連プロジェクトのビジネスコンサルティングを経て、現在は会社経営の傍ら、『入門Webマッピング』(Tyler Mitchell原著;オライリー・ジャパン発行)の翻訳、Open Source Geospatial財団日本支部の代表者を務めるなど、FOSS4G(オープンソース地理空間ソフトウェア)の普及活動に取り組んでいる。
監修:
松田 神一
© EDUCO All Rights Reserved.