4

このphpスクリプトを使用して、ここに記載されている単純な検索クエリから結果を取得しています

そして、プロパティのメタデータのこのExcelファイルをここからダウンロードしました

$rets_login_url = "http://sef.rets.interealty.com/Login.asmx/Login";
$rets_username = "xxxxxxxx";
$rets_password = "xxxxxxxx";
$rets_user_agent = "PHRETS/1.0";
$rets_user_agent_password = "xxxxxxx";

//////////////////////////////

// start rets connection
$rets = new phRETS;
// Uncomment and change the following if you're connecting
// to a server that supports a version other than RETS 1.5

$rets->AddHeader("RETS-Version", "RETS/1.5");

$rets->AddHeader("User-Agent", $rets_user_agent);

echo "+ Connecting to {$rets_login_url} as {$rets_username}<br>\n";
$connect = $rets->Connect($rets_login_url, $rets_username, $rets_password, $rets_user_agent_password);

// check for errors
if ($connect) {
        echo "  + Connected<br>\n";
}
else {
        echo "  + Not connected:<br>\n";
        print_r($rets->Error());
        exit;
}

$search = $rets->SearchQuery("Property","ResidentialProperty","(ListDate=1990-01-01+)");
while ($listing = $rets->FetchRow($search)) {
   echo "Address: {$listing['StreetNumber']} {$listing['StreetName']}, ";
   echo "{$listing['City']}, ";
   echo "{$listing['State']} {$listing['ZipCode']} listed for ";
   echo "\$".number_format($listing['ListPrice'])."\n";
}


$rets->FreeResult($search);

echo "+ Disconnecting<br>\n";
$rets->Disconnect();

このスクリプトを実行すると、結果が接続されてから切断されたことが示されます。しかし、結果は見つかりません。結果が表示されないいくつかの質問で提案された多くのことを試しましたが、何もうまくいきません。どこが間違っていますか?

私のRETSサーバー情報は次のとおりです。

RETS サーバー: SEF RETS システム RETS システム ID: SEFRETS ログイン URL: http://sef.rets.interealty.com:80/Login.asmx/Login RETS バージョン: 1.5 サーバー ソフトウェア: Microsoft-IIS/6.0

私も何が何だか理解できませんでした$rets_modtimestamp_field = "LIST_87";

私を助けてください。RETS からデータを取得する方法について提案が必要です。

4

2 に答える 2

2

問題は、SearchQuery のパラメーターにあります。

検索クエリのフィールドの 1 つは ListDate です。メタデータを含む添付の Excel ファイルを見ると、"ListDate" は StandardNames の下の列 B にあります。RETS仕様では、システム名がデフォルトとして使用されます (以下を参照)。SearchQuery 関数の options パラメータで '"StandardNames" => 1' を指定する必要があります。

$search = $rets->SearchQuery("Property","ResidentialProperty","(ListDate=1990-01-01+)",array("StandardNames" => 1));

また、SearchQuery の 2 番目の引数であるクラスが正しいことを確認してください。これを行うには、PHRETS でGetMetadataClasses関数を使用できます。RETS サーバーの URL、ユーザー名、およびパスワードでログインして、retsmd.com を使用することもできます。

$rets_modtimestamp_field は、リストが最後に変更された日時を示す日時値のフィールドです。


RETS 1.7.2 仕様書 ( http://www.reso.org/assets/RETS/Specifications/rets_1_7_2.pdf ) のセクション 7.4.7 で、

「クエリは、クエリで標準名またはシステム名のいずれかを使用できます (セクション 7.7)。クライアントが標準名を使用することを選択した場合、StandardNames 引数を使用してこれを示す必要があります...このエントリが ("0") に設定されている場合、または検索で渡されたフィールド名は、メタデータで定義されている SystemNames です。"

于 2014-12-13T21:51:34.577 に答える
1

最後のコメントに対処するには、ListingStatus も指定する必要があります。これは、クエリを実行するときに必須フィールドでもあるためです。ListingStatus のルックアップ値は次のとおりです。

  • A = アクティブ利用可能
  • B = バックアップ コントラクト - コール LA
  • C = キャンセル
  • CS = クローズドセール
  • PS = 保留中の販売/レンタル
  • Q = 終了
  • T = 一時オフ マーケット
  • W = 撤回
  • X = 期限切れ

したがって、代わりに次のようなことを試してください。

$query ="(922=MIAMI),(246=A)";

または、標準名を使用している場合:

$query ="(City=MIAMI),(ListingStatus=A)";

そして最後に:

$search = $rets->SearchQuery("Property", $class, $query, array("StandardNames" => 1, 'Limit' => 10, ));

これにより、少なくともいくつかの結果が返されるはずです。それ以上は、必要な結果が得られるまでクエリを微調整するだけです。

于 2015-02-18T18:48:11.167 に答える