*FileMaker API for PHP を使ったアンケートフォーム作成をお読みになっていない方は、先にこちらをご覧ください。
さて前回の FX.php 解説に引き続き、今回は FX.php を使って従来の FileMaker データベースにアクセスする方法について触れてみることにします。今回もまた、今まで使ってきたアンケートフォームにちょっと修正を入れるだけです。アンケートフォーム作成のおさらいが必要な方は、こちらを先にご覧ください。
FileMaker API for PHP を利用するためには、FileMaker Pro 9 と FileMaker Server 9 がインストールされていることが条件となるため、従来に比べるとコスト的に敷居が高くなってきています。安定したデータサーバ運用を目指すのなら、もちろんこれらを導入するのが確実ですが、FileMaker Pro 5.x/6 で機能的に十分に満足している方には、ちょっと手が出にくいパッケージであることも確かでしょう。
そこで、FX.php と FileMaker Pro 5.x/6 の Web コンパニオンプラグインを組み合わせてもデータベースへの書き込みを実現できるため、既存のシステムをそのまま Web 公開データベースとして活かすことも可能となります。
ただし、通常版は 10 アクセスユーザ数(10 IP アドレス)という制限が伴うため、現実的な運用にあたっては FileMaker Pro 5.x/6 Unlimited が必要になることは注記しておきたいと思います。
それでは実際に既存のサンプルコードを修正していくことにしましょう。
処理は前回の FX.php 接続とほぼ同じですが、今回はそれに加え、文字コードの変換が必要となります。
FileMaker Pro 9 では内部コードを UTF-8 で処理しているため、ソースが UTF-8 で記述されていれば問題はなかったのですが、FileMaker Pro 5.x/6 では内部コードを Shift-JIS で扱うため、このままデータを送るとエラーが起こったり、文字化けが発生してしまいます。
そこで、今までの処理に文字コード処理を追加します。
- FX を使用することを宣言する(FX インスタンスを作成する)。
- 使用するデータベース名とレイアウト名を指定する。
- 使用するユーザ名とパスワードを指定する。
- データ送信時の文字コードを Shift-JIS に変換する。
- 追加するフィールドと、そのデータを指定する。
- レコード追加を実行する。
上記を FX.php の記述規則に従って置き換えると、次のようになります。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpNQlEWSZbJ4hyf9v52voLHWSSvl3mKvF2Jh-HkOhlZdDDYz2uDVGlvvJ9DJnU3l0RKs6Q2Zvr8XVhdN7aQMbRGFrKgu1CbuXfshaybWLmBosnxwjsbuzDqgcDp7xLeJTvVZ7meg/s400/newentry_fx_fp5.png)
赤線を引いた部分と、赤で囲った部分が前回と異なってはいますが、その他はすべて同じです。
指定の通り、FX インスタンス作成時に、使用するデータソース(データベース)が FileMaker Pro5.x/6 であることを知らせます。
そして、データ送信前に文字コードセットを UTF-8 から Shift-JIS(SJIS) に置き換えます。
ただし、FMP7/8/8.5/9 に対してこの文字コード変換を行うとデータ書き込みに失敗してしまうため、必要に応じて、データソースが FMPro5/6 のときだけ文字コード変換を行うという条件を追加する必要があります。
この条件を追加するとこのようになります。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijOqvc5_WoxAgnSZuyT8kuuNqToQDBWqEFvxrOFb0jbRnCLwuxUACNXxie6nATijikE8qjgJW13cqmPj_wfHg7ckDQAPR8W9nUB7yqltf-ZR6YMlfGubYdj18Npt9sHco1gwP7rw/s400/newentry_fx_fp5_fix.png)
変数 $databaseType には、コードの最初の方で予め "FMPro9" もしくは "FMPro5/6" のいずれかを設定しておきます。こうしておくことによって、使用するデータソースに応じて処理を切り替えられるので便利です。
ソースの詳細は、サンプルコードをご覧になってみてください。
先に PHP ソースについて解説しましたが、最後に FileMaker Pro 5.x/6 データベースファイルの作成と設定方法について説明します。
1. データベースファイルを作成します。FileMaker Pro 5.x/6 を起動し、Comment.fp5 というファイルを作成し、以下のフィールドを作成します。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCOzCscoP3yAoR9Eq_ZejVm-jABUKUjzJkJsnT-7_v1643B6_erw8XUf8TBXtFe-UDuVyxySMkz1-Mzq6XadJDEp1MTewiERtxlIkyzIWo36Kl7Nq55-IfFV0mzuJIeQPhP0clAA/s400/comment_fields_fp5.png)
[RecID]、[作成日]、[作成アカウント]、[修正日]、[修正アカウント]は管理用のフィールドですが、作成しておくと便利でしょう。
2. レイアウト名を cgi に変更します。
3. 「アプリケーション環境設定」ダイアログを出し、プラグイン一覧より、Web コンパニオンにチェックを付けて「設定」ダイアログを開きます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlYcFQwdv1oo8K77fRoT4hZ5Zhi0NowzA33LGzKn0E3fbOvPsmyhIvptbuCzxKugdoLFHRDsZ92gRrD5ooOHF0tzsNzM8D8WlBqWT93UdQQ76l-vnEdgy9YHi6ZdSfpQC39h_B_w/s400/webcompanion.png)
セキュリティに「ファイルメーカー Pro アクセス権」を指定し、TCP/IP ポート番号に 80、もしくは 591 を指定します。
4. ファイルの共有設定で、以下のようにチェックを付けることによって Web コンパニオンを公開します。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5pGUT21s0reKWmvmDkcTsRXbKYq9iYoPGNcY3JuK-YvaMWBoI2lFeirqoTU_re6gdnqrjCFy22UYVmNEvS-jAuxGwXc251DMXxx2xVgmb4bxZ63N0WlKkI0ldSjQeXoT3cH3iqQ/s400/file_sharing.png)
5. パスワードを指定します。図のように、web というパスワードを作成し、web で公開させる最低限のアクセス権を決めます。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhW6fQyIqA8tS5odqI3jOTljn7Y3ywNKhqh4zv4FxTINIl4Hd7bIG7ln-_E-whHXN3ts_M8BJep0uD1GmqvkzwolfEwGJMt_f6lcchHiFmJOCEldy5NHYDFMrur_at7Kj1qIXievA/s400/access_privileges_fp5.png)
この他にフルアクセスを許可するパスワードが必要となりますので、ここでは Admin を作成してあります。
以上で準備が整いました。
FMPro5/6 用の設定を施した comment_fp5.php というファイルをサンプルに用意してありますので、参照してみてください。
参考: FX.php vs FileMaker API Benchmarks Discussion(英文)
1 件のコメント:
とても参考になりました。ありがとうございます。
コメントを投稿