はじめに
カスタムWebにおいて、Webフォームに入力した検索条件をデータベースに送信し、検索結果を画面に表示するテクニックは頻繁に使われる基本操作です。ここでは、FileMaker API for PHPを使って、検索フォームの値の処理やレコードの表示、ページ分割などのテクニックを紹介します。
なお、FileMaker Server 9付属のPHP SiteAssistantは利用せず、いちから開発するものとして進めていきます。また、FileMaker ServerにおけるPHP環境などのセットアップは既に完了しているものとして話を進めます。
データベースの準備
ここでは、簡単な商品カタログの検索を例にとって紹介します。
データベース名「Catalog.fp7」
テーブル名「Catalog」
- ID[商品No](数字・自動連番)
- Name[商品名](テキスト)
- Genre_ID[ジャンルID](テキスト)
- Maker_ID[メーカーID](テキスト)
- Price[価格](数字)
- RegistDate[登録日](日付)
テーブル名「Genre」
- Genre_ID[ジャンルID]
- Genre_Name[ジャンル名]
テーブル名「Maker」
- Maker_ID[メーカーID]
- Maker_Name[メーカー名]
リレーション
- 「Catalog」テーブルのGenre_IDと「Genre」テーブルのGenre_ID
- 「Catalog」テーブルのMaker_IDと「Maker」テーブルのMaker_ID
値一覧
- Genre
- Maker
レイアウト「web_catalog」[Catalogテーブル]に以下の項目を配置。
- ID
- Name
- Genre_ID
- Genre_Name[Genreテーブル]
- Maker_ID
- Maker_Name[Makerテーブル]
- Price
アクセス権
- ID「web」、Password「pass」
- アクセス権セット「閲覧のみアクセス」を割り当てる。
- アクセス権セット「閲覧のみアクセス」に拡張アクセス権「fmphp」を割り当てる。
画面の流れ
- 検索フォーム
- 検索結果一覧
- 詳細画面
また、ファイル構成は次のようになります。
/catalog_search/FileMaker/ //API本体 FileMaker.php //API本体 search.php //検索フォーム result.php //検索条件処理および検索結果表示 detail.php //詳細データ表示
FileMaker API for PHPの基本操作の概要
具体的なコーディングに入る前に、まずFileMaker API for PHPの基本的な考え方を解説しておきます。
FileMaker API for PHPはオブジェクト指向で開発されており、データベースを操作する操作単位がクラス(オブジェクト)としてまとられています。実行したい操作に応じてオブジェクトを作成し、各クラスに用意されている関数(メソッド)を利用しながらデータベースを操作していきます。
用意されている主なクラスは以下のものです。
- FileMakerデータベース(データベースへの接続、プロパティの設定)
- コマンド(レコードの追加/削除/複製/編集/検索)
- レイアウト(データベースレイアウトからの情報取得)
- レコード(レコードデータの操作)
- フィールド(定義されているフィールドの情報取得)
- 関連セット(関連データの操作)
- 結果(検索や登録、編集、削除など、コマンド系のクラスを実行した場合のレコードの処理)
- エラー(上の結果でエラーが発生したかとうかの確認やエラー処理)
例えば、データベースからレコードを検索する場合の操作の概要は次のようになります。
FileMaker
クラスを用いてデータベースに接続。- コマンドクラスを用いて検索条件を指定し、検索を実行。
- 結果クラスを用いて、対象レコードを取得。
- レコードクラスを用いて、各レコードのデータを取得。
- 3でエラーが発生した場合(検索結果がないなど)、エラークラスを用いてエラー処理を実行。
各クラス(オブジェクト)の役割と、それぞれに用意されている関数(メソッド)を理解すれば、今どんな処理がしたいのかによって、どのクラス/関数を利用をすればいいのか理解できるようになると思います。