初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2013-10-16 15:26:04

東巻
Guest

PHPで計算フィールドを使用したい

旧掲示板に書き込みしていたようなので、再度こちらにも書き込ませていただきます。
(重複になり規約違反等でしたら削除してください。)

Filemaker API for PHPで簡単なシステムを作っています。

仮にAとBのテーブルがXというフィールドでリレーションされており
Aの中のフィールドYをLast(B)したいのですが、
PHPで計算フィールドを表示することができません。

テキストフィールドにしてデータの自動入力で計算にするとフィールドの表示は出来るのですが、
PHP上でXフィールドを入力しても計算されません。
(FilemakerでXフィールドに入力・変更するとYはちゃんと計算されます)
((正確にはXフィールドにはIPアドレスを自動取得して入力しています))

ご教授お願いいたします。

#2 2013-10-16 16:18:40

wader
Member

Re: PHPで計算フィールドを使用したい

Aの中のフィールドYをLast(B)したいのですが、

BテーブルでLast(A::Y)が計算できないという意味ですかね。

XフィールドにはIPアドレスを自動取得して入力

Get関数でクライアントのIPアドレスが入ると思ってる間違いかな?

Offline

#3 2013-10-16 16:48:19

東巻
Guest

Re: PHPで計算フィールドを使用したい

わかりにくい書き方ですみません・・・。

IPアドレスを取得してAテーブルのXフィールドに入力します。これは<?php echo $_SERVER["REMOTE_ADDR"];?>で正しく自動取得できています。
そのIPアドレスのPC使用者を別テーブルBからとってきてAテーブルのYフィールドに入力したいのですが、
YフィールドをLast(B:PC使用者)という計算フィールドにすると、PHPで表示することが出来ません。

そこでYを計算フィールドではなく、テキストフィールドにし、入力値の自動化の計算値でLast(B:PC使用者)とすると
Xが入力されてもPHP上では計算されずYフィールドに反映されません。
Filemaker上でXに入力するとYフィールドに反映されます。
(計算フィールドの際はXにIPアドレスが自動取得され入力されると随時計算され更新される)

計算フィールドがPHP上で表示できるようになればいいのですが、その方法がわからず・・・。

<?php echo nl2br(storeFieldNames('Y', 0, $record, true, 'EDITTEXT', 'text'))?>
では計算フィールドが表示されないのですが、計算フィールドの際は特別な書き方があるのでしょうか??

#4 2013-10-16 17:38:29

wader
Member

Re: PHPで計算フィールドを使用したい

Yを表示したフォームでXに入力して送信してるのでは?
Yも同時に送信されて自動入力の値を上書きしてるケースのような。
YをXより先に送信されるように配置するか、入力する必要はないのでEDITTEXTにしなければいいと思いますが。

Offline

#5 2013-10-17 10:15:45

東巻
Guest

Re: PHPで計算フィールドを使用したい

問題点が少しずれていました。

計算フィールドが表示できないのではなく、他のファイルからリレーションを貼った場合の計算フィールドが表示されないみたいです。
Bテーブルは他のファイルなのですが、PHPでは他のファイルを参照できないのでしょうか?

#6 2013-10-17 10:29:03

finder
Guest

Re: PHPで計算フィールドを使用したい

アクセス権があってレイアウトにあれば参照できるはずでは。

#7 2013-10-17 11:04:45

東巻
Guest

Re: PHPで計算フィールドを使用したい

ゲストユーザーに完全アクセス権を持たせ、レイアウトにもあるのですが参照できないようです。

計算フィールドを使うのはあきらめて、
テキストフィールドの自動入力の計算値で表示させようと思います。

wader wrote:

Yを表示したフォームでXに入力して送信してるのでは?
Yも同時に送信されて自動入力の値を上書きしてるケースのような。

Xの入力画面にYは表示していないのですが、PHPでXに入力してもYの計算を行うトリガにはならないのでしょうか。
何かYを再計算するようなものを入力と表示の間に噛ませないといけないのでしょうか。

#8 2013-10-17 11:37:07

finder
Guest

Re: PHPで計算フィールドを使用したい

バージョンが12じゃないですよね?

計算フィールドでBを参照できなければ、同じ式で自動入力させようとしても参照できないでしょう。

フィールド設定の後レコード確定してみるとか?

#9 2013-10-17 13:18:08

東巻
Guest

Re: PHPで計算フィールドを使用したい

環境を書いていなくてすみません。
FileMaker Pro 11 Advancedです。

ルックアップも出来ないので、PHPでは別ファイルは参照できないようです。
フィールド設定の後レコード確定とは具体的にはどのようなことをすればよいのでしょうか?
<input type="submit" class="buttons" name="-edit" value="保存">の前に何かすればよいのでしょうか?

#10 2013-10-17 13:46:01

yaya
Member

Re: PHPで計算フィールドを使用したい

storeFieldNames()という関数が見慣れないのですが、普通は
echo $record->getField("Y");
じゃないですか?

storeFieldNames()を使うと、うちでは関数が見つからないエラーになります。

Offline

#11 2013-10-17 14:12:33

finder
Guest

Re: PHPで計算フィールドを使用したい

storeFieldNames()は、APIには無いので、サイトアシスタントのもの(FM12で廃止)でしょう。

name="-edit" で呼び出すファイルで、入力データを保存後にレコードを検索すればいいんですが
FM11SのドキュメントはWEB上に無いのでよくわからない。

#12 2013-10-17 14:29:11

東巻
Guest

Re: PHPで計算フィールドを使用したい

yaya wrote:

storeFieldNames()という関数が見慣れないのですが、普通は
echo $record->getField("Y");
じゃないですか?

PHP Site Assistant で生成したコードがstoreFieldNames()だったのでそのまま使っています。
特にecho $record->getField("Y");との違いが感じなかったのですが、
普通は使えないのでしょうか???

#13 2013-10-17 15:57:26

finder
Guest

Re: PHPで計算フィールドを使用したい

使えないってことは無いですけど、APIのドキュメントにないので生成したコードを見ないと動作がわかりません。

Xの入力画面にYは表示していない

レイアウトにはあるんじゃないですか?これでYがフィールド設定されないのかどうかもわからないです。FMS11の環境持ってないのですいません。

APIなら、FileMaker_Command_Editをexecute()した結果からgetFirstRecord () してgetField("Y")する、とかになるんでしょうけど
12のしか手元にないので11だと少し違うかも

単純にファイルBが参照できてない節もあるんで、PHPアクセス権の設定は確認しました?

#14 2013-10-17 19:33:10

yaya
Member

Re: PHPで計算フィールドを使用したい

Site Assistant はオワコンなのと、最初に見た時、中身が冗長に見えたので使ってないです。
<form>の中で使ってるのかな? それならXを入力してサーバーへ送信するスクリプトの中でページをリロードしないとダメだと思います。
サーバーのデータ書き換えはうまく行ってますか?

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 529.84 KiB (Peak: 550.38 KiB) ]