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 プロバイダーを使用する方がよい場合もあります。これら 2 つを見てみましょう: IDX Broker http://www.idxbroker.com/mls/florida-keys-mls-flkmlsまたはhttp://www.diversesolutions.com/idx-coverage/floridakeysmls-410。それが MLS かどうかはわかりませんが、IDX プロバイダーは他にもたくさんあります。IDX プロバイダーはすべての MLS に登録する必要があるため、MLS と通信する完全なリストを取得できるはずです。

独自の RETS フィードと DB が必要な場合、または必要な場合は、ここにいくつかのヒントがあります

  • 数年前に PHRETS を使用したことがあります。それ以来、独自のクライアントを構築しています。私は PHRETS の最新情報ではありませんが、非常に古いクライアントを使用しているようですphrets0.6.1.phphttps://github.com/troydavisson/PHRETSとバージョン 2をご覧ください。
  • 詳細については、Wiki ページを参照してください https://github.com/troydavisson/PHRETS/wiki
  • RETS について詳しく知りたい場合は、RESO (Real Estate Standards Organization) とその仕様 ( http://www.reso.org/specifications ) で詳細を確認できます。MLS が使用している RETS バージョンを確認してください。
  • 標準としての RETSはデータの取得に役立つはずですが(これは転送プロトコルであるため)、フィードで実際のデータをフォーマットする方法を定義していません。RESO は、すべての MLS にわたってデータを正規化する必要がある RESO ディクショナリに 10 年以上取り組んでいますが、それはまだ作業中であり、900 以上のすべての MLS がこの標準を採用するのにどれくらいの時間がかかるかはわかりません。
于 2015-06-14T17:17:24.910 に答える