为什么搜索查询没有在PHRETS中显示任何结果?

时间:2014-12-13 07:30:44

标签: php rets

我正在使用这个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获取数据的建议。

2 个答案:

答案 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的查找值为:

  • A = Active-Available
  • B =备份合同 - 致电LA
  • C =已取消
  • CS =已结束销售
  • PS =待售/出租
  • Q =终止
  • T = Temp Off Market
  • W =撤回
  • X =已过期

所以尝试这样的事情:

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

或者,如果您使用的是标准名称:

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

最后:

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

这应该可以让你至少得到一些结果。除此之外,您可以调整查询,直到获得所需的结果。