【问题标题】:PHrets - Using PHP to create mysql tables from rets - ScriptPHrets - 使用 PHP 从 rets 创建 mysql 表 - 脚本
【发布时间】:2015-05-17 18:39:53
【问题描述】:

我在网上找到了这段代码,它将连接到 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 数据库,然后让我的网站在每隔一段时间检查更新或新列表时更新我的​​网站。

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

【问题讨论】:

  • 您对此代码是否有任何具体问题,或者您想知道如何在 wordpress 中使用它?
  • @slim slim,如何让它与 wordpress 一起工作。我真的很感激它男人
  • 可能需要一段时间才能回复您,但我会尝试。
  • 您连接到哪个 MLS?您(或您的客户)是 MLS 的成员吗?
  • @Adrian World 门罗县,佛罗里达州 mls。佛罗里达钥匙。是的,他们是 mls 的成员。感谢您的回复

标签: php mysql wordpress rets phrets


【解决方案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 需要多长时间才能采用这个标准。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 2019-11-10
    • 1970-01-01
    • 2013-12-16
    • 2012-01-11
    • 1970-01-01
    相关资源
    最近更新 更多