2011-01-23 5 views
0

У меня есть этот код, который извлекает информацию из моей базы данных, а затем проверяет ее на соответствие API. Я пытаюсь настроить возвращаемую информацию в таблицу. Я включу изображение, чтобы показать, что я хотел бы. Я искал везде, и я не знаю, как это кодировать. Не беспокойтесь о CSS, он просто получает информацию для заполнения таблицы.Styling Feed Содержимое, возвращаемое в формате XML

<?php 
     $key = "********************"; 
     $address = urlencode($CustomFields->field('jr_address',$listing,false,false)); 
     $city = $listing['Category']['title']; 
     $zip = $CustomFields->field('jr_zipcode',$listing,false,false); 
     $url = "http://api.greatschools.org/schools/nearby?key={$key}&address={$address}&city={$city}&state=MI&zip={$zip}&schoolType=public-charter&levelCode=elementary-schools&minimumSchools=50&radius=10&limit=5"; 
     $curl = curl_init(); 
     curl_setopt($curl, CURLOPT_URL, $url); 
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
     $response = curl_exec($curl);  
     curl_close($curl); 
     print_r($response); 
?><style type='text/css'>gsId{display:none;}name{color:#9BB055; font-size:18px;}type{display:none;}gradeRange{}enrollment{}gsRating{}city{display:none;}state{display:none;}district{}districtNCESId{display:none;}address{display:none;}phone{display:none; }fax{display:none;}ncesId{display:none;}lat{display:none;}lon{display:none;}</style> 

Возвращение Код:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<schools> 
<school> 
<gsId>6350</gsId> 
<name>Chinese Education Center</name> 
<type>public</type> 
<gradeRange>K-5</gradeRange> 
<enrollment>63</enrollment> 
<gsRating>3</gsRating> 
<city>San Francisco</city> 
<state>CA</state> 
<district>San Francisco Unified School District</district> 
<districtNCESId>0634410</districtNCESId> 
<address>657 Merchant St., San Francisco, CA 94111</address> 
<phone>(415) 291-7918</phone> 
<fax>(415) 291-7965</fax> 
<ncesId>063441005596</ncesId> 
<lat>37.795</lat> 
<lon>-122.4042</lon> 
<overviewLink>http://www.greatschools.org/california/san-francisco/6350-Chinese-Education-Center/?s_cid=gsapi</overviewLink> 
<ratingsLink>http://www.greatschools.org/school/rating.page?state=CA&amp;id=6350&amp;s_cid=gsapi</ratingsLink> 
<reviewsLink>http://www.greatschools.org/school/parentReviews.page?state=CA&amp;id=6350&amp;s_cid=gsapi</reviewsLink> 
</school> 
<school> 
<gsId>6389</gsId> 
<name>Gordon J. Lau Elementary School</name> 
<type>public</type> 
<gradeRange>K-5</gradeRange> 
<enrollment>667</enrollment> 
<gsRating>7</gsRating> 
<city>San Francisco</city> 
<state>CA</state> 
<district>San Francisco Unified School District</district> 
<districtNCESId>0634410</districtNCESId> 
<address>950 Clay St., San Francisco, CA 94108</address> 
<phone>(415) 291-7921</phone> 
<fax>(415) 291-7952</fax> 
<website>http://www.gjles.org/</website> 
<ncesId>063441005599</ncesId> 
<lat>37.794</lat> 
<lon>-122.4086</lon> 
<overviewLink>http://www.greatschools.org/california/san-francisco/6389-Gordon-J.-Lau-Elementary-School/?s_cid=gsapi</overviewLink> 
<ratingsLink>http://www.greatschools.org/school/rating.page?state=CA&amp;id=6389&amp;s_cid=gsapi</ratingsLink> 
<reviewsLink>http://www.greatschools.org/school/parentReviews.page?state=CA&amp;id=6389&amp;s_cid=gsapi</reviewsLink> 
</school> 
</schools> 

Я не знаю, как написать сценарий, чтобы сделать его выглядеть следующим образом: Ссылка на изображение: link text


Так новый файл выглядит так?

<?php 
    $key = "xxxxxxxxxxxxxxxxxxxxxxxx"; 
    $address = urlencode($CustomFields->field('jr_address',$listing,false,false)); 
    $city = $listing['Category']['title']; 
    $zip = $CustomFields->field('jr_zipcode',$listing,false,false); 
    $url = "http://api.greatschools.org/schools/nearby?key={$key}&address={$address}&city={$city}&state=MI&zip={$zip}&schoolType=public-charter&levelCode=elementary-schools&minimumSchools=50&radius=10&limit=5"; 
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    $response = curl_exec($curl);  
    curl_close($curl); 
    echo (xml2html($response, "/xslt/schools.xsl"); 

?>

Я получаю ошибку на эхо-линии.

Куда уходит?

<?php 
function xml2html($xmldata, $xslPath) 
{ 
    /* $xmldata -> your XML */ 
    /* $xsl -> XSLT file */ 

    $arguments = array('/_xml' => $xmldata); 
    $xsltproc = xslt_create(); 
    xslt_set_encoding($xsltproc, 'ISO-8859-1'); 
    $html = 
     xslt_process($xsltproc, 'arg:/_xml', $xslPath, NULL, $arguments); 

    if (empty($html)) { 
     die('XSLT processing error: '. xslt_error($xsltproc)); 
    } 
    xslt_free($xsltproc); 
    return $html; 
} 
?> 
+0

Может быть, XML документ с более чем одной школы будет быть более полезным. Кроме того, для каждой школы есть широта и долгота, но каковы координаты точки, в которой должно быть рассчитано расстояние от школы? Это не указано в вашем вопросе. –

+0

Я включил другую школу в код выше. Что касается широты и долготы, я не знаю, видел ли вы изображение (внизу оригинального сообщения), которое я разместил. Я бы просто спрятал его. Когда я отправляю информацию о адресе в API, он сортирует, какие школы ближе. Мой вызов состоит в том, что мои знания очень ограничены, и я теряюсь, как кодировать все это. –

+0

Чтобы увидеть его вживую, нажмите здесь: http://www.landcontractgr.com/component/content/article/113-jenison/96-7681-thomas-ave то это вкладка образование –

ответ

0

Браузеры не могут визуализировать пользовательские XML (т. Е. Ваши школы xml). Итак, вы должны вручную преобразовать его в HTML. Я знаю 2 решения:

  1. Анализировать XML с xml parser functions
  2. Преобразование XML с помощью XSLT листа (как для меня, лучший подход).

Для Offerred XML я написал следующий XSLT: link text (извините за внешнюю ссылку, у меня есть необъяснимые проблемы с вставки кода XSLT здесь)

трансформации могут быть применены с помощью функции xslt_process. (Вы должны хранить файл XSL где-то в папке вашего сервера (например, «/ XSLT schools.xsl») и преобразовывать ответ XML):

<?php 
function xml2html($xmldata, $xslPath) 
{ 
    /* $xmldata -> your XML */ 
    /* $xsl -> XSLT file */ 

    $arguments = array('/_xml' => $xmldata); 
    $xsltproc = xslt_create(); 
    xslt_set_encoding($xsltproc, 'ISO-8859-1'); 
    $html = 
     xslt_process($xsltproc, 'arg:/_xml', $xslPath, NULL, $arguments); 

    if (empty($html)) { 
     die('XSLT processing error: '. xslt_error($xsltproc)); 
    } 
    xslt_free($xsltproc); 
    return $html; 
} 

// making request... 
$response = curl_exec($curl);  
curl_close($curl); 
echo(xml2html($response, "/xslt/schools.xsl")); 

>

+0

Эй, Алекс, я ценю ваш быстрый ответ, хотя я не уверен, как это кодировать. Из-за моих ограниченных знаний я застрял. У меня есть живая версия кода. Ссылка: http: //www.landcontractgr.com/component/content/article/113-jenison/96-7681-thomas-ave Я не прошу кого-нибудь закодировать все это. Просто я не знаю, как это сделать, где я могу иметь таблицу и вызывать определенные поля в ячейке, чтобы все выглядело так, как я этого хочу. –

+0

Привет Карл. Ваша ссылка выше приводит к предложению о продаже дома. Поэтому я не понимаю вашу проблему. Вы должны получить ответ как XML-документ из службы. Затем используйте PHP-функцию xslt_process для преобразования из XML в HTML с помощью XSLT-файла, который я добавил выше. Результатом преобразования будет стандартная таблица HTML. Затем вы можете раскрасить строки с помощью CSS или JavaScript. –

+0

Да, это под вкладкой образования. Я не знаю, как закодировать xslt_process внутри сценария. Также я не знаю, что мне нужно после кода, чтобы получить результат HTML. Например

Смежные вопросы