【问题标题】:Why search query not showing any result in PHRETS?为什么搜索查询在 PHRETS 中没有显示任何结果?
【发布时间】:2023-03-12 12:32:02
【问题描述】:

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

【问题讨论】:

    标签: php rets


    【解决方案1】:

    问题在于 SearchQuery 中的参数。

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

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

    此外,请检查以确保您的 SearchQuery 的第二个参数类是正确的。为此,您可以使用 PHRETS 中的GetMetadataClasses 函数。 你也可以使用retsmd.com,通过你的 RETS 服务器 url、用户名和密码登录。

    $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,在元数据中定义。"

    【讨论】:

    • 但我无法按城市名称搜索查询是: $query ="(922=MIAMI)" ;在 $search = $rets->SearchQuery("Property", $class, $query, array("StandardNames" => 1, 'Limit' => 10, ));而且我还使用了 $query ="(City=MIAMI)"
    • @AndrewBriggs 希望完成一些 RETS 工作。我也住在拉斯维加斯。如果有兴趣,我的个人资料有我的联系信息。谢谢,埃迪
    【解决方案2】:

    要解决您的最后一条评论,您还需要指定 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, ));
    

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

    【讨论】:

      猜你喜欢
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 2020-11-17
      • 2019-10-06
      • 2010-11-24
      • 2011-11-07
      • 2022-09-24
      • 1970-01-01
      相关资源
      最近更新 更多