0

我在网上找到了这段代码,它将连接到 rets 提要并创建 mysql 表。

<?php 

/* Raw example on how to use phrets to generate the necessary sql code 
for mysql tables generation from rets. 
Works for me*/ 

require ('phrets0.6.1.php'); 


$rets = new phRETS; 

$Host = 'http://demo.crt.realtors.org:6103/rets/login'; 
$Account = 'Joe'; 
$Password = 'Schmoe'; 
$User_Agent = 'RETS_class/1.0'; 
$Rets_Version = 'RETS/1.5' ; 



$rets->AddHeader("Accept", "*/*"); 
$rets->AddHeader("RETS-Version", "$Rets_Version"); 
$rets->AddHeader("User-Agent", "$User_Agent"); 
$rets->SetParam("cookie_file", "phrets_cookies.txt"); 
//$rets->SetParam("debug_mode", TRUE); // ends up in rets_debug.txt 


$rets->Connect($Host,$Account,$Password); 
        $ResourcesInfo1 = $rets->GetMetadataInfo(); 
        $MetadataInfo1 = $rets->GetMetadataTypes(); 
/*testing4GetTables*/ 
function GetTables($ResourcesInfo, $MetadataInfo) { 
/*        Put toghether all the rets info needed for database tables creation 
in an array. */ 
        foreach ($MetadataInfo as $key => $value){ 
                $Resource = $value['Resource']; 
                foreach ($value['Data'] as $key){ 
                        $tables[$key['Description']] = array( 
                                                                                'ResourceID' => $Resource, 
                                                                                'Description' => $key['Description'], 
                                                                                'ClassName' => $key['ClassName'] , 
                                                                                 'KeyField' => $ResourcesInfo[$Resource]['KeyField'], 
                                                                                'ClassCount' => $ResourcesInfo[$Resource]['ClassCount'] 
                                                                                ); 
                } 

        } 
        return $tables; 
} 

function CreateMysqlTables ($ResourcesInfo, $MetadataInfo, $class){ 
/*function providing the mysql code needed to create mysqltables. 
to be run as the script on the commande line for nicer output*/ 
        $table = GetTables($ResourcesInfo, $MetadataInfo); 

        foreach ($table as $key => $value){ 

                $TablesAndFields[$value['Description']] = $class- 
>GetMetadata($value['ResourceID'],$value['ClassName']); 
        } 

        foreach ($TablesAndFields as $key => $value){ 
                $find = array ('/ /', '/-/'); 
                $TableName = preg_replace($find, "_", $key); 
                echo "\n\r CREATE TABLE IF NOT EXISTS $TableName  (\n\r"; 
                 foreach ( $value as $key2 => $value2){ 
                                 echo "`$value2[SystemName]` "; 
                                 ConvertTypeToMysql($value2[DataType], $value2[MaximumLength]); 
                 } 
                 echo "`MyNewTablesTimeStamp` timestamp NOT NULL default 
CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,\n\r"; 
        echo " PRIMARY KEY (".$table[$key]['KeyField']."));\n\r"; 
        } 
} 

function ConvertTypeToMysql($datatype, $datalenght){ 
/*        This function  to convert mls datatype and datalenght to mysql. 
        Change to fit your needs works for me: db2 to mysql (flexmls)*/ 
        switch ($datatype){ 
        case "Character": 
                if ($datalenght >= 255){ 
                        echo "text  collate utf8_unicode_ci default NULL, \n\r"; 

                } 
                elseif (!$datalenght){ 
                        echo "$datatype(25) collate utf8_unicode_ci default NULL, \n\r"; 

                } 
                else { 
                        echo "$datatype($datalenght) collate utf8_unicode_ci default NULL, 
\n\r"; 

                } 

                break; 

        case "Decimal": 

                echo "$datatype($datalenght,0) default NULL, \n\r"; 
                break; 

        case "Int": 

                echo "$datatype($datalenght) default NULL, \n\r"; 
                break; 

        case "Long": 
/*                note:if I put this case after case ("Date" or "Boolean"): it won't 
work, Why? is Long a Boolean?'*/ 
                echo "LONGTEXT collate utf8_unicode_ci default NULL, \n\r"; 
                break; 

        case ("Date" or "Boolean"): 

                echo "$datatype default NULL, \n\r"; 
                break; 


        } 

} 
CreateMysqlTables ($ResourcesInfo1, $MetadataInfo1, $rets); 

$rets->Disconnect(); 

?> 

对不起,很长的一段代码。

我已经使用我的 IDE 通过 FTP 建立了与我的 Wordpress 站点的连接,并在那里加载了 PHrets 文件。

我的最终目标是使用 rets 提要中的所有列表填充 mysql 数据库,然后让我的网站在数据库每隔一段时间更新一次以检查更新或新列表时工作。

如果有人能指出我正确的方向,我将不胜感激。

4

1 回答 1

1

好的,在我提供一些建议之前,这里是您想要在 IDX 规则下操作时的简单路径(即这不适用于 VOW)。忘记 RETS 并获得您自己的数据馈送。也许使用 IDX 提供程序是获取数据的更好方法。看看这两个:IDX Broker http://www.idxbroker.com/mls/florida-keys-mls-flkmlshttp://www.diversesolutions.com/idx-coverage/floridakeysmls-410。我不确定这是否是您的 MLS,并且还有很多 IDX 提供商。您应该能够获得与您的 MLS 交谈的完整列表,因为 IDX 提供商必须在每个 MLS 中注册。

如果您想要或需要自己的 RETS 提要和数据库,这里有一些指示

  • 几年前我用过一次PHRETS——从那以后我建立了自己的客户。我不是最新的 PHRETS,但看起来你正在使用一个非常旧的客户端phrets0.6.1.php。你应该看看https://github.com/troydavisson/PHRETS和版本 2。
  • 查看其 Wiki 页面以获取更多信息https://github.com/troydavisson/PHRETS/wiki
  • 如果您想了解更多关于 RETS 的信息,您可以在 RESO(房地产标准组织)及其规范中找到更多信息: http://www.reso.org/specifications。与您的 MLS 检查他们使用的 RETS 版本。
  • 尽管 RETS 作为标准应该可以帮助您获取数据(因为它是一种传输协议),但它并没有定义如何使用提要格式化实际数据。RESO 在 RESO 字典上工作了十多年,该字典应该对所有 MLS 的数据进行规范化,但这仍在进行中,我们永远不会知道所有 900 多个 MLS 需要多长时间才能采用这个标准。
于 2015-06-14T17:17:24.910 回答