我正在使用这个php脚本从记录here
的简单搜索查询中获取结果我已经下载了属性here
的元数据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 登录网址:http://sef.rets.interealty.com:80/Login.asmx/Login RETS版本:1.5 服务器软件:Microsoft-IIS / 6.0
我也无法理解什么是$rets_modtimestamp_field = "LIST_87";
请帮帮我。我需要一些关于如何从RETS获取数据的建议。
答案 0 :(得分:2)
问题在于您的SearchQuery中的参数。
搜索查询中的一个字段是ListDate。查看包含元数据的附加excel文件,&#34; ListDate&#34;在StandardNames下的B列中。 RETS specification使用系统名称作为默认值(见下文)。您需要指定&#39;&#34; StandardNames&#34; =&GT; 1&#39;在SearchQuery函数的options参数中:
$ search = $ rets-&gt; SearchQuery(&#34; Property&#34;,&#34; ResidentialProperty&#34;,&#34;(ListDate = 1990-01-01 +)&#34;,数组(&#34; StandardNames&#34; =&gt; 1));
另外,请检查以确保SearchQuery的第二个参数class是正确的。为此,您可以使用PHRETS中的GetMetadataClasses功能。 您还可以使用RETS服务器URL,用户名和密码登录来使用retsmd.com。
$ rets_modtimestamp_field是一个日期时间值字段,表示上次修改商家信息的日期和时间。
在RETS 1.7.2规范文档的第7.4.7节中,http://www.reso.org/assets/RETS/Specifications/rets_1_7_2.pdf,
&#34;查询可以在查询中使用标准名称或系统名称(第7.7节)。如果 客户端选择使用标准名称,它必须使用StandardNames来指示 参数...如果此条目设置为(&#34; 0&#34;)或不存在,则搜索中传递的字段名称为 SystemNames,在元数据中定义。&#34;
答案 1 :(得分:1)
要解决您的上一条评论,您还需要指定ListingStatus,因为它在运行查询时也是必填字段。 ListingStatus的查找值为:
所以尝试这样的事情:
$query ="(922=MIAMI),(246=A)";
或者,如果您使用的是标准名称:
$query ="(City=MIAMI),(ListingStatus=A)";
最后:
$search = $rets->SearchQuery("Property", $class, $query, array("StandardNames" => 1, 'Limit' => 10, ));
这应该可以让你至少得到一些结果。除此之外,您可以调整查询,直到获得所需的结果。