Подскажите где ошибка?

Статус
В этой теме нельзя размещать новые ответы.

Kewl

Постоялец
Регистрация
9 Сен 2007
Сообщения
248
Реакции
113
Php код

<?php
$yml_catalog = simplexml_load_file('catalog.xml');

foreach ($yml_catalog->offers[0]->offer as $offer) {
$id = $offer['id'];
$categoryId = $offer->categoryId;
$picture = $offer->picture;
$model = $offer->model;

$catalog .= $id . "<br />"
. $categoryId . "<br />"
. $picture . "<br />"
. $model . "<br />"
}
?>


Сам Xml (catalog.xml)

<?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">
<yml_catalog date="2009-09-17 18:12">

<shop>
<typePrefix>сайт</typePrefix>
<company>сайт</company>
<url>http://www.сайт.ru/</url>

<currencies>
<currency id="RUR" rate="1"/>
</currencies>

<categories>
<category id="79">категория</category>
</categories>

<offers>
<offer id="130" type="vendor.model">
<url>http://www.сайт.ru/категория/товар.html</url>
<price>50</price>
<currencyId>RUR</currencyId>
<categoryId>79</categoryId>
<picture>http://www.сайт.ru/images/m.jpg</picture>
<vendor>производитель</vendor>
<model>модель</model>
<description>
описание товара
</description>
</offer>
</shop></yml_catalog>

Parse error: syntax error, unexpected '}' in /usr/home/h1095/data/www/site/xml.php on line 15

Идея какя просто вывести по 10 товаров рандомно из этого xml / Спасибо за помощь
 
точку с запятой перед скобкой } забыл...
 
точку с запятой перед скобкой } забыл...

<?php
$yml_catalog = simplexml_load_file('catalog.xml');

foreach ($yml_catalog->offers[0]->offer as $offer) {
$id = $offer['id'];
$categoryId = $offer->categoryId;
$picture = $offer->picture;
$model = $offer->model;

$catalog .= $id . "<br />"
. $categoryId . "<br />"
. $picture . "<br />"
. $model . "<br />"
;}
?>

Warning: Invalid argument supplied for foreach() in /usr/home/h1095/data/www/site/xml.php on line 5
 
переменная $yml_catalog->offers[0]->offer не существует. перед циклом желательно ее проверить
PHP:
if(isset($yml_catalog->offers[0]->offer))
{
	foreach ($yml_catalog->offers[0]->offer as $offer)
	{
		....
	}
}
 
  • Нравится
Реакции: Kewl
Там вообще ошибка в самом xml - не закрывается тег <offers>.

По коду - сделал бы так, сразу все понял бы:

PHP:
print_r($yml_catalog);

Соблюдай иерархию...

Попробуй так:

PHP:
<?php
$yml_catalog = simplexml_load_file('catalog.xml');

foreach ($yml_catalog->shop->offers[0]->offer as $offer) {
$id = $offer['id'];
$categoryId = $offer->categoryId;
$picture = $offer->picture;
$model = $offer->model;

$catalog .= $id . "<br />"
. $categoryId . "<br />"
. $picture . "<br />"
. $model . "<br />";
}
?>

файл XML:

Код:
?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">
<yml_catalog date="2009-09-17 18:12">

<shop>
<typePrefix>сайт</typePrefix>
<company>сайт</company>
<url>http://www.сайт.ru/</url>

<currencies>
<currency id="RUR" rate="1"/>
</currencies>

<categories>
<category id="79">категория</category>
</categories>

<offers>
<offer id="130" type="vendor.model">
<url>http://www.сайт.ru/категория/товар.html</url>
<price>50</price>
<currencyId>RUR</currencyId>
<categoryId>79</categoryId>
<picture>http://www.сайт.ru/images/m.jpg</picture>
<vendor>производитель</vendor>
<model>модель</model>
<description>
описание товара
</description>
</offer>
</offers>
</shop></yml_catalog>
 
  • Нравится
Реакции: Kewl
Там вообще ошибка в самом xml - не закрывается тег <offers>.
По коду - сделал бы так, сразу все понял бы:
PHP:
print_r($yml_catalog);
Соблюдай иерархию...
Попробуй так:
PHP:
<?php
$yml_catalog = simplexml_load_file('catalog.xml');
foreach ($yml_catalog->shop->offers[0]->offer as $offer) {
$id = $offer['id'];
$categoryId = $offer->categoryId;
$picture = $offer->picture;
$model = $offer->model;
$catalog .= $id . "<br />"
. $categoryId . "<br />"
. $picture . "<br />"
. $model . "<br />";
}
?>
файл XML:
Код:
?xml version="1.0" encoding="windows-1251"?>
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">
<yml_catalog date="2009-09-17 18:12">
<shop>
<typePrefix>сайт</typePrefix>
<company>сайт</company>
<url>http://www.сайт.ru/</url>
<currencies>
<currency id="RUR" rate="1"/>
</currencies>
<categories>
<category id="79">категория</category>
</categories>
<offers>
<offer id="130" type="vendor.model">
<url>http://www.сайт.ru/категория/товар.html</url>
<price>50</price>
<currencyId>RUR</currencyId>
<categoryId>79</categoryId>
<picture>http://www.сайт.ru/images/m.jpg</picture>
<vendor>производитель</vendor>
<model>модель</model>
<description>
описание товара
</description>
</offer>
</offers>
</shop></yml_catalog>

Большое тебе человеческое спасибо!!!!!!!
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху