3

わかりましたので、ここで課題です。WindowsボックスでホストされているFilemaker 12サーバーにFile makerデータベースがあります。LinuxボックスでホストされているPHPフォームもあります。PHP フォームから Filemaker データベースにデータを取得するにはどうすればよいですか? これが私が試したことです。

<?php
define('fm_host', '131.181.###.###');
define('fm_file', 'name of the db');
define('fm_user', 'user');
define('fm_pass', 'password');
$layout_name = 'Request'; 
$respondent_data = array("stuff","stuff","stuff","stuff","stuff");
require_once ('FileMaker.php');
$fm = new FileMaker(fm_file, fm_host, fm_user, fm_pass);
if(FileMaker::isError($fm)){ 
die('Error - ' . $fm->getCode() . ' ' . $fm->getMessage());
}
$newAdd =& $fm->newAddCommand('Request', $respondent_data);
$result = $newAdd->execute();
?>

これはエラーなしで完了しますが、Filemaker pro に移動し、Filemaker 管理コンソールを使用してサーバーからダウンロードしたデータベースのコピーを開くと、新しいレコードはありません。Filemaker スタンドアロン PHP API をフォームと同じディレクトリに展開し、Filemaker.php 関数を使用できるようにしました。したがって、少なくともエラーがスローされない理由について混乱しています。しかし、プロジェクトのこの段階では、私はどうでもいいのですが、どうしてもデータベース内のデータが欲しいだけです! プロジェクトの範囲はデータベース内のデータで終了するため、ハッキングは何でも構いません。

補足: DB にアクセスするために ODBC を試し、ファイル メーカー プロを使用して手動でインポートすることを検討しましたが、Linux サーバーにインストールされている PHP には php.ini ファイルに com クラスがなく、これを変更するアクセス権がありません。

私はXMLを使用して同じことを考えましたが、私はそれについて十分に理解していません。でも、午前 4 時の酔っ払いのように、試してみたいと思います。

前もって感謝します!

4

2 に答える 2

3

フィールド名を配列 $respondent_data の値にマップする必要があります。シンプルなキー=>値のプログラミング スタイル。

$respondent_data = array("field1" => "stuff", "field2" => "stuff", "field3" => "stuff", "field4" => "stuff", "field5" => "stuff");

このように、必要に応じてフィールドごとに指定することもできます

$fm = new FileMaker(fm_file, fm_host, fm_user, fm_pass);
$cmd = $fm->newAddCommand($layout_name);
$cmd->setField("fieldname", "Value");
$cmd->setField("fieldname2", "Value2");
$cmd->setField("fieldname3", "Value3");
$result = $cmd->execute();

if(FileMaker::isError($result)){ 
    die('Error - ' . $fm->getCode() . ' ' . $fm->getMessage());
}  

$fm->execute() を呼び出す前に FileMaker::IsError メソッドを呼び出す必要はありません。これは、PHP が cURL を使用して FileMaker Server で WPE を照会する場合です。FoundSet-Object または Error-Object が返されます。IsError は、WPE が一連のレコードにエラーを返したかどうかを確認する簡単な方法です。

詳細については http://www.filemaker.com/support/product/docs/12/fms/fms12_cwp_php_en.pdf

于 2013-01-21T20:57:01.850 に答える
1

まず、FileMaker 自身は、 Web アプリを構築する際に外部 SQL ソースを備えたサードパーティ データベースを使用することを推奨しています。一度に数人以上のユーザーがアクセスする場合、これが優れたパフォーマンスを得る唯一の方法です。

これにより、MySQL、Access などを使用して Web アプリケーションを構築し、そのデータベースを FileMaker にフックして、そのテーブルが他の FM テーブルと同じように表示されるようにすることができます。次に、実際の FM データと同じように、サードパーティのデータベースからのデータを使用して、FM 内でレイアウト、スクリプト、計算などを作成できます。

PHP API に固執したい場合は、ファイルが実際にサーバー上で実行されていることを確認する必要があり、Pro を使用してファイルを開くだけです。Proで実行するためにダウンロードしているとあなたがどのように言ったのか、少し混乱しています..?? ダウンロードするのではなく、リモート サーバーから開くだけです。

次に、FM のセキュリティ設定を介して、接続しているユーザーに対してファイルで PHP API が有効になっていることを確認する必要があります。Web アプリに固有のユーザーを作成し、PHP API アクセスのみを許可することをお勧めします。

次に、Web アプリからそのユーザーに接続すると、準備完了です。

于 2013-01-21T00:50:54.767 に答える