首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHrets -使用PHP从rets创建mysql表-脚本

PHrets -使用PHP从rets创建mysql表-脚本
EN

Stack Overflow用户
提问于 2015-05-17 18:39:53
回答 1查看 1.9K关注 0票数 0

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

代码语言:javascript
复制
<?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(); 

?> 

抱歉这段代码太长了。

我已经建立了一个连接到我的Wordpress网站通过FTP使用我的IDE和PHrets文件加载在那里。

我的最后一个目标是用rets提要中的所有列表填充mysql数据库,然后让我的网站完成这些工作,而数据库每隔一次更新一次,检查更新的或新的列表。

如果有人能给我指明正确的方向,我将非常感激。

EN

回答 1

Stack Overflow用户

发布于 2015-06-14 17:17:24

好的,在我给出一些提示之前,这里是您想要在IDX规则下操作的简单路径(也就是说,这不适用于誓言)。忘记RETS并获得您自己的数据提要。也许使用IDX提供者是获取数据的更好方法。看看这两个: IDX、http://www.idxbroker.com/mls/florida-keys-mls-flkmlshttp://www.diversesolutions.com/idx-coverage/floridakeysmls-410。我不确定这是否是您的MLS和有相当多的IDX供应商。您应该能够得到一个完整的列表与您的MLS交谈,因为IDX供应商必须登记到每一个MLS。

如果您想要或需要您自己的RETS提要和DB,下面是一些指针

  • 几年前我使用过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词典已经开发了十多年,该词典应该规范所有MLS的数据,但这仍在进行中,我们永远不知道所有的900+ MLS采用这一标准需要多长时间。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30290682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档