4 返信 最新の回答 日時: Oct 4, 2015 4:45 AM ユーザー:user23884

    カスタムwebwithPHP 検索結果後の処理

    user23884

      お世話になります。

       

      phpを使用してファイルメーカーのデータを表示するようにしたHPがあるのですが、

      その際に検索結果がなかった場合には”ありませんでした”みたいな表示を返したいのですが、うまくいきません。

       

      〜〜〜

       

         $findCommand =& $fm->newFindCommand('data');

                  $findCommand->addFindCriterion('data_ID', $data_ID);

                  $result   = $findCommand->execute();

                 

                  $records = $result->getRecords();

                  $check = $result->getFoundSetCount();  //←ここでレコード数をgetしているつもりです。

                  $record = $records[0];

                 

                  //エラーをチェック

                  if ($check == 0 ) {

                     

                      echo "<p>エラー:  " . $result->getMessage() . "<p>";

                      exit;

                  }

                  //検索結果を表示

      〜〜〜


      という風にしています。

       

      すいませんが何がおかしいのか教えてください。

        • 1. Re: カスタムwebwithPHP 検索結果後の処理
          user19752

          print_r($result)

          を見るとわかると思います。

          • 2. Re: カスタムwebwithPHP 検索結果後の処理
            user23884

            ありがとうございます

             

            print_r($result)を実装してみたのですが、

            検索で、データが存在する場合は値が返ってくるのですが、検索結果がない場合は何も表示されませんでした。


            ですので、if(empty(($result)){

            echo '<h3>エラー。</h3>';

            }

            ともしてみたのですが、うまくいきませんでした。

             

            すいません、何がダメなんでしょうか?


            追記:

            if(!FileMaker::isError($result)){

                            '<h3>エラー。</h3>';

                            exit;

                        }

            もダメでした


            • 3. Re: カスタムwebwithPHP 検索結果後の処理
              user19752

              変ですね。

              FileMaker_Error Object~~

              というのが表示されるはずだったんですが。

               

              APIの設計がよくない(かドキュメントが間違ってる)と思うのですが、検索結果がない場合はexecute()がFileMaker_ResultでなくFileMaker_Errorオブジェクトを返すようになってます。

               

              phptest.phpの実装を見れば、

               

                $impl_data = $command->execute();

                $error = NULL;

                if (FileMaker::isError($impl_data)) {

                  $error = $impl_data;

                }

               

              というようにエラーチェックをしています。

              (検索結果が0件の場合をエラー扱いするのは、PHP以前にFMのエラーコード自体がそういう風になっている)

              • 4. Re: カスタムwebwithPHP 検索結果後の処理
                user23884

                ありがとうございます。

                 

                ”APIの設計がよくない(かドキュメントが間違ってる)”

                この部分を考え、最初から作成しなおしました。

                そうすると問題なくエラーが返ってきて、処理も実行できました。

                (ただ if(エラーの場合) でエラーでなかった場合の動きは元から正常だったので、if文のみがおかしかったのかもしれませんが、そこは何度調整してもダメだったもんで)


                いろいろ考えていただきすいません、ありがとうございました。