0

JSONとPHPを使用して、オンライン不動産サービスから不動産物件のリストを表示するクライアントからプロジェクトを継承しました。サービスによって提供されるデータはロードされますが、それらに関連付けられているプロパティとエージェントは混同されます。すべてのプロパティが表示される場合がありますが、関連付けられているエージェントは1つだけです。また、データはロードされますが、いくつかのプロパティが表示された後は遷移しません。遷移はjQueryサイクルプラグインによって制御されています。

以下のすべてのコードを含めました。どんな援助も大歓迎です。

ありがとうございました。

マイク

<?php
function decode_json_string($json){
    $objects = array();

    $start_pos = strpos($json, '[');
    $end_pos = strpos($json, ']');

    $dataString = substr($json, ++$start_pos, ($end_pos - $start_pos));

    while(strpos($dataString, '{') !== FALSE){
        $start_pos = strpos($dataString, '{');
        $end_pos = strpos($dataString, '}');

        $objectString = substr($dataString, ++$start_pos, ($end_pos - $start_pos));

        $tempString = $objectString;

        $formattedString = "";

        while(strpos($tempString, ':') !== FALSE){
            $valueStart = strpos($tempString, ':');

            if($tempString[++$valueStart] != '"'){

                $substring1 = substr($tempString, 0, $valueStart);

                if(strpos($tempString, ',', $valueStart) !== FALSE){
                    $valueEnd = strpos($tempString, ',', $valueStart);

                    $substring2 = substr($tempString, $valueStart, ($valueEnd - $valueStart));
                }
                else{
                    $valueEnd = $valueStart + 1;
                    $substring2 = substr($tempString, $valueStart);
                }

                $formattedString .= $substring1 . '"' . $substring2 . '"';

                $tempString = substr($tempString, $valueEnd);
            }
            else{
                $valueEnd = strpos($tempString, '",') + 1;

                $formattedString .= substr($tempString, 0, $valueEnd);
                $tempString = substr($tempString, $valueEnd);
            }
        }

        $tempArray = explode('",', $formattedString);

        foreach($tempArray as $tempValue){
            $tempValueArray = explode( ":", $tempValue);

            $key = format_string($tempValueArray[0]);
            $value = format_string($tempValueArray[1]);

            $object[$key] = $value;
        }

        $objects[] = $object;

        $dataString = substr($dataString, ++$end_pos);
    }

    return $objects;
}

function format_string($string){
    $string = str_replace("'", "", $string);
    $string = str_replace('"', "", $string);

    return trim($string);
}

function get_agent_properties_json($agentID){
    global $BASE_URL;

    $date = time();
    $dataType = '3'; // Data Type = Properties

    $url = $BASE_URL . '/FeaturedDataHandler.c?r=' . $date . '&DataType=' . $dataType . '&CompanyID=' . $companyID . '&agentID=' . $agentID;

    // create a new cURL resource
    $ch = curl_init();

    // set URL and other appropriate options
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HEADER, 0);

    // grab URL and pass it to the browser
    $response = curl_exec($ch);

    // close cURL resource, and free up system resources
    curl_close($ch);

    return $response;
}

function get_agent_properties($agentID){
    $agent_properties_json = get_agent_properties_json($agentID);
    $properties = decode_json_string($agent_properties_json);

    return $properties;
}

function print_property_details(&$property, &$agent){
    global $BASE_URL;

    if($property['ListingStatusCode'] != 'SOLD'){
        $address = $property['Address'];
        $shortaddr = substr($address, 0, -12);
        echo "<div class='propertySlide'>";
            echo "<div class='title'>";
                echo "<div class='box1'>";
                    echo "<span class='price'>". $property['Price'] ."</span>";
                    echo "<span class='address'>". $shortaddr ."</span>";
                echo "</div>";
                echo "<div class='box2'>";
                    echo "<span class='style'><strong>Style:</strong> ". $property['Style'] ."</span>";
                    echo "<span class='footage'><strong>Sq. Feet:</strong> ". $property['SqFootage'] ."</span>";
                    echo "<span class='beds'><strong>Beds:</strong> ". $property['Bedrooms'] ."</span>";
                    echo "<span class='baths'><strong>Baths:</strong> ". $property['Bathrooms'] ."</span>";
                    echo "<span class='year'><strong>Year Built:</strong> ". $property['YearBuilt'] ."</span>";
                echo "</div>";
            echo "</div>";
            echo "<div class='imagebox'><img class='listingImage' src='". $BASE_URL . $property['Image'] ."' /></div>";
            echo "<div class='agentbox'>";
                echo "<img class='agentImage' src='" . $BASE_URL . "/Users/pic" .  $agent['WTLUserID'] . ".jpg' />";
                echo "<span class='agent'><strong>Agent:</strong> ". $agent['DisplayName'] ."</span>";
            echo "</div>";
        echo "</div>";
    }
}

?>

$date = time();
$dataType = '4'; // Data Type = Agents
$companyID = '2119'; // Red Deer - Century 21 Advantage

$url = $BASE_URL . '/FeaturedDataHandler.c?r=' . $date . '&DataType=' . $dataType . '&CompanyID=' . $companyID;

// create a new cURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);

// grab URL and pass it to the browser
$response = curl_exec($ch);

// close cURL resource, and free up system resources
curl_close($ch);

$agents = decode_json_string($response);

foreach($agents as $agent){
    $properties = get_agent_properties($agent['WTLUserID']);

    foreach($properties as $property){
        print_property_details($property, $agent);
    }
}

<?php
$BASE_URL = 'http://www.century21.ca';

$date = time();
$dataType = '4'; // Data Type = Agents
$companyID = '2119'; // Red Deer - Century 21 Advantage

$url = $BASE_URL . '/FeaturedDataHandler.c?r=' . $date . '&DataType=' . $dataType . '&CompanyID=' . $companyID;

// create a new cURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);

// grab URL and pass it to the browser
$response = curl_exec($ch);

// close cURL resource, and free up system resources
curl_close($ch);

$agents = decode_json_string($response);

foreach($agents as $agent){
    $properties = get_agent_properties($agent['WTLUserID']);

    foreach($properties as $property){
        print_property_details($property, $agent);
    }
}
4

1 に答える 1

0

ここで関数をデバッグする前に、 PHP の組み込みhttp://php.net/manual/en/function.json-decode.phpdecode_json_string()を試してください。json_decode()

不足している古いバージョンの PHP を使用している場合は、 upgrade.phpjson_decode()で互換性のあるものを見つけることができます。

于 2012-11-15T14:29:41.200 に答える