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 中的参数。

搜索查询中的字段之一是 ListDate。查看包含元数据的附加 excel 文件,“ListDate”位于 StandardNames 下的 B 列中。RETS 规范默认使用系统名称(见下文)。您需要在 SearchQuery 函数的 options 参数中指定 '"StandardNames" => 1':

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

此外,请检查以确保您的 SearchQuery 的第二个参数类是正确的。为此,您可以使用 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

“查询可以在查询中使用标准名称或系统名称(第 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 回答