2017-07-12 8 views
1

私はParagonのRETSデータフィードを持っています。このデータをすべてphrETSライブラリを使用してCSVにダンプしようとしています。私はdmqlやlibRETS経由でこのRETSフィードからデータをダンプするためのさまざまな方法を試してきましたが、どれも動作していません。ここで私のPHPコードphRETSを使用してデータフィードをダンプしようとしています。RETSデータフィードをダンプする

今のところ空のCSVが生成されます。これは、端末に表示されるものです。 RE_1

  • 問い合わせ:(LIST_87?
  • プロパティを接続

    • ここhttp://RETS URLに接続/ログインRETS-バージョン= RETS /ユーザーとして1.5
      • = 1980-01-01T00:00:00+)制限:1000オフセット:0
      • 見つかっ
      • 合計:0
      • が、私は文句を言わない、ここでRETSフィードに正しいURLが含まれるが、それは、バージョン1.5

        <?php 
        
            $rets_login_url = "http://Insert RETS feed link /login?rets-version=rets/1.5"; 
        $rets_username = "**************"; 
        $rets_password = "**********"; 
        
        // use http://retsmd.com to help determine the SystemName of the DateTime field which 
        // designates when a record was last modified 
        $rets_modtimestamp_field = "LIST_87"; 
        
        // use http://retsmd.com to help determine the names of the classes you want to pull. 
        // these might be something like RE_1, RES, RESI, 1, etc. 
        $property_classes = array("RE_1"); 
        
        // DateTime which is used to determine how far back to retrieve records. 
        // using a really old date so we can get everything 
        $previous_start_time = "1980-01-01T00:00:00"; 
        
        ////////////////////////////// 
        
        require_once("phrets.php"); 
        
        // start rets connection 
        $rets = new phRETS; 
        
        echo "+ Connecting to {$rets_login_url} as {$rets_username}<br>\n"; 
        $connect = $rets->Connect($rets_login_url, $rets_username, $rets_password); 
        
        if ($connect) { 
             echo " + Connected<br>\n"; 
        } 
        else { 
             echo " + Not connected:<br>\n"; 
             print_r($rets->Error()); 
             exit; 
        } 
        
        foreach ($property_classes as $class) { 
        
             echo "+ Property:{$class}<br>\n"; 
        
             $file_name = strtolower("property_{$class}.csv"); 
             $fh = fopen($file_name, "w+"); 
        
             $maxrows = true; 
             $offset = 0; 
             $limit = 1000; 
             $fields_order = array(); 
        
             while ($maxrows) { 
        
               $query = "({$rets_modtimestamp_field}={$previous_start_time}+)"; 
        
               // run RETS search 
               echo " + Query: {$query} Limit: {$limit} Offset: {$offset}<br>\n"; 
               $search = $rets->SearchQuery("Property", $class, $query, array('Limit' => $limit, 'Offset' => $offset, 'Format' => 'COMPACT-DECODED', 'Count' => 1)); 
        
               if ($rets->NumRows() > 0) { 
        
                 if ($offset == 1) { 
                   // print filename headers as first line 
                   $fields_order = $rets->SearchGetFields($search); 
                   fputcsv($fh, $fields_order); 
                 } 
        
                 // process results 
                 while ($record = $rets->FetchRow($search)) { 
                   $this_record = array(); 
                   foreach ($fields_order as $fo) { 
                     $this_record[] = $record[$fo]; 
                   } 
                   fputcsv($fh, $this_record); 
                 } 
        
                 $offset = ($offset + $rets->NumRows()); 
        
               } 
        
               $maxrows = $rets->IsMaxrowsReached(); 
               echo " + Total found: {$rets->TotalRecordsFound()}<br>\n"; 
        
               $rets->FreeResult($search); 
             } 
        
             fclose($fh); 
        
             echo " - done<br>\n"; 
        
        } 
        
        echo "+ Disconnecting<br>\n"; 
        $rets->Disconnect(); 
        
        を使用している

      を切断

  • を行って

    このコード行でエラーが発生しました

    require_once( "phrets.php");

    私は、このファイルを持っていなかったので、私はそれをGoogleで検索し、これは、そのファイルの悪いバージョンである可能性がありますが、私は知らない​​

    からphrets.phpファイルを見つけました。

    誰かがRETSフィードでデータダンプを実行する方法を知っている場合は、教えてください。もしphRETSを使うよりも良い方法があれば教えてください。私は本当に私のRETSフィードのデータをcsvなどにダンプする必要があります。ありがとう!

    EDIT:LIST_87をL_UPDATEDATEに変更しました。データを検索していますが、ファイルに書き込んでいません。私はまたLimitを200に変更しました。ここで私の端末が表示しているものがあります。RE_1

  • クエリ:(L_UPDATEDATE = 1980-01-01T00:00:00+)制限:200オフセット:実測値0
  • 合計:1193
    • プロパティ接続


      • クエリ:(L_UPDATEDATE = 1980-01-01T00:00:00+)制限:200オフセット:200
      • 合計実測値:1193
      • クエリ:(L_UPDATEDATE = 1980-01-01T00:00:00+)制限:200オフセット:400
      • 合計が見出さ:1193
      • クエリ:(L_UPDATEDATE = 1980-01- 01T00:00:00+)制限:200オフセット:600
      • 合計が見出さ:1193
      • クエリ:(L_UPDATEDATE = 1980-01-01T00:00:00+)制限:200オフセット:800
      • 合計が見つかりました:1193
      • クエリ:(L_UPDATEDATE = 1980-01-01T00:00:00+)制限:200オフセット:1000
      • 合計が見つかりました:1193

    切断
  • を行います

    まだ作成されている私のcsvファイルには空のテーブルしかありません。

  • 答えて

    0
    1. 公式のPHRETS Githubページ:https://github.com/troydavisson/PHRETSを使用してください。彼はよりオブジェクト指向のコードの更新されたブランチを含むライブラリを更新しました。

    2. 検索クエリのフィールド名が正しいことを確認します。たとえば、「LIST_87」が正しくない可能性があります。確認するにはRETS MDを使用してください。

    3. このdocumentationから、OffsetとLimitは両方とも文字列です。あなたはそれらを検索クエリの整数として持っています。

    4. RETSフィードをCSVファイルとしてダウンロードしたい場合、これは簡単に:RETS Connector、コーディングを必要としないGUIプログラムを使用して行うことができます。あなたのコードで

    +0

    私はRETSコネクタを使ってデータをダンプする方法の例を教えていただけますか?私はいくつかのデータを取得することができましたが、フィード全体をドキュメントにダンプしたいと思います。私が本当に好きなのは、RETSフィードをcsvとしてダウンロードすることだけです。 – hinsonan

    0

    、あなたは$オフセットの値が0であるので、1

    $offset = 1; 
    

    にオフセット$の初期値を変更する必要があり、以下の条件は、

    if ($offset == 1) { 
        // print filename headers as first line 
        $fields_order = $rets->SearchGetFields($search); 
        fputcsv($fh, $fields_order); 
    } 
    
    を失敗しています

    CSVのヘッダーは書き込まれず、$ fields_order配列はまだ空です。

    そして$のfields_order配列が空であるため

    foreach ($fields_order as $fo) { 
        $this_record[] = $record[$fo]; 
    } 
    

    $ this_recordは、空のまま、whileループが続きます。

    したがって、データが存在しても、CSVは空になります。

    関連する問題