我在网上找到了这段代码,它将连接到rets feed并创建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 feed中用所有清单填充mysql数据库,然后在数据库经常更新时检查我的网站,以检查更新清单还是新清单。

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

最佳答案

好的,在我提供一些指导之前,这里是您要根据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的信息,请在http://www.reso.org/specifications处找到RESO(房地产标准组织)及其规范。用您的MLS检查他们正在使用什么RETS版本。
尽管RETS作为标准应该可以帮助您获取数据(因为它是传输协议),但是它并未定义如何使用Feed格式化实际数据。 RESO正在RESO词典上工作了十多年,该词典应该对所有MLS的数据进行规范化,但这仍在进行中,我们永远不会知道所有900多个MLS采用此标准将花费多长时间。

关于php - PHrets-使用PHP从Rets创建mysql表-脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30290682/

10-10 15:59